Unity2019くらいURPをURP14に移植する

古いURPをURP14にしたらエラーが出た 昔々の技術書典に向けて書いたURPのプロジェクトをURP14に移行を試みたらエラーが出たのでメモを残しておきたいと思います。 URP本 技術書典 https://techbookfest.org/product/5752788585807872?productVariantID=6047890145280000 Booth https://smartphone-games.booth.pm/items/2372771 以下の2点の修正を入れて動くようになりました。 ScriptableRenderer.cameraColorTagetが非推奨の対応 ‘CameraData.isStereoEnabled’ is obsoleteの対応 ありがたい参考サイトはこちら https://zenn.dev/sakutaro/articles/convert_blitter ScriptableRenderer.cameraColorTagetが非推奨の対応 以下のようなエラーが出ます。 Chapter2.UIEffectRenderPassFeatureは独自に追加したレンダーパスです。 You can only call cameraColorTarget inside the scope of a ScriptableRenderPass. Otherwise the pipeline camera target texture might have not been created or might have already been disposed. UnityEngine.Rendering.Universal.ScriptableRenderer:get_cameraColorTarget () Chapter2.UIEffectRenderPassFeature:AddRenderPasses (UnityEngine.Rendering.Universal.ScriptableRenderer,UnityEngine.Rendering.Universal.RenderingData&) (at Assets/Chapter2/Scripts/CustomRenderPass/UIEffectRenderPassFeature.cs:22) 該当コードに飛ぶと、ScriptableRenderer.cameraColorTagetが非推奨になっていました。 対応は、SetupRenderPassesを追加して、currentPass.SetRenderTargetをそちらに移動します。 ずばり変更差分 public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) { - currentPass.SetRenderTarget(renderer.cameraColorTarget); renderer.EnqueuePass(currentPass); } + + public override void SetupRenderPasses(ScriptableRenderer renderer, in RenderingData renderingData) + { + base....

12月 28, 2023 · jnhtt

Steamでローカライズしたゲーム名を追加する方法

Steamでローカライズしたゲーム名を追加する方法 リリースした後にゲーム名をローカライズしたくなったので方法を調べました。 デフォルトでは、「Sliding Rails」ですが、日本語設定のユーザーには「スライディングレールズ」と表示したい場合です。 まずは、公式ドキュメント https://partner.steamgames.com/doc/store/editing/name?l=japanese リリースしていない場合 リリースしていないゲームの場合は公式ドキュメントで確認できます。 https://partner.steamgames.com/doc/store/localization#localized_app_names このページ遷移で辿り着けます。 Steamworks > アプリ管理 > [ゲーム] > アプリデータ管理 > アプリケーション > 一般のアプリケーション設定 > アプリケーションの名前と種類 こんな感じの設定画面です。 Screenshot リリース済みな場合 リリース済みの場合は、Steamworksのサポートページで問い合わせを行います。 その他から問い合わせることになると思います。 問い合わせ内容は、ローカライズ対象の言語とローカライズしたゲーム名を伝えます。 まとめ リリース済みのゲームにローカライズのゲーム名を追加するのは、問い合わせをする必要があります。 問い合わせは面倒なのでリリースする前に設定しましょう。

12月 21, 2023 · jnhtt

UPMを使って自作パッケージをgithubから追加

Unity PackageManagerを使って自作パッケージをプロジェクトに追加できるようにする 自作した機能をUnity PackageManager(以降はUPM)で追加と削除できるようにして使い回しのスピードを上げてみようと思います。 使いまわしたい機能とgithubのレポジトリがあることが前提です。 ここでは、高さフォグ機能のURP RendererFeatureとVolumeのコードとシェーダーをUPMで追加/削除できるようにします。 Githubレポジトリ https://github.com/jnhtt/height-fog-urp-volume Window > PackageManager > Add package from git url … > https://github.com/jnhtt/height-fog-urp-volume.git?path=Assets/HeightFog Unity PackageManager対応 フォルダ構成 package.json の記載内容 asmdef フォルダ構成 Unity推奨の構成 <root> ├── package.json ├── README.md ├── CHANGELOG.md ├── LICENSE.md ├── Third Party Notices.md ├── Editor │ ├── [company-name].[package-name].Editor.asmdef │ └── EditorExample.cs ├── Runtime │ ├── [company-name].[package-name].asmdef │ └── RuntimeExample.cs ├── Tests │ ├── Editor │ │ ├── [company-name].[package-name].Editor.Tests.asmdef │ │ └── EditorExampleTest....

12月 8, 2023 · jnhtt

Using Unity, Height Fog for Universal RP Volume

UnityのURPのVolumeにHeightFogを追加する Unityで高さフォグを使おうと思ったがURPパッケージに入っていなかったので自分で作る。 使い方は、RenderFeatureとVolumeで設定すると使えるようになります。 こんな見た目になります。 Screenshot Github コードとサンプルはここに置いてあります。 https://github.com/jnhtt/height-fog-urp-volume 開発環境 以下のような環境で実装しました。 MacBook Pro (16インチ,2021) M1 Pro/32GB Unity2022.3.13f1 URP 14.0.9 技術的要素 高さフォグをVolumeに追加 RenderFeature/RenderPassの追加 高さフォグをVolumeに追加 高さフォグの制御のためのパラメーターはVolume経由で行うようにしたいと思うのでVolumeComponentを継承したクラスを作成します。 fogHeightMin/Maxの値は用途に合わせて調整してください。 パラメーター 意味 値の範囲 fogColor フォグの色 rgb fogHeightMin フォググラデの範囲の最小値、これより小さいとフォグ色で塗られる floatで[-200,300] fogHeightMax フォググラデの範囲の最大値、これより大きいとフォグはない floatで[-200,300] using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; namespace FingerTip.Volume { public class HeightFog : VolumeComponent { public ColorParameter fogColor = new ColorParameter(Color.white); public ClampedFloatParameter fogHeightMin = new ClampedFloatParameter(0, -200, 300); public ClampedFloatParameter fogHeightMax = new ClampedFloatParameter(0, -200, 300); public bool IsActive => fogHeightMin....

12月 7, 2023 · jnhtt

GYAAR Studio インディーゲームコンテストに応募しました

GYAAR Studio インディーゲームコンテストに応募しました ニッチなイライラする短時間アクションゲームで応募しました。 結果は2024年3月2日くらいに分かるみたいです。 https://indie.bandainamcostudios.com/gyaarcon-2 結果がダメなら自分の名義でSteamに即リリース予定です。 どのような結果になるにせよ、お楽しみに。

12月 5, 2023 · jnhtt

UnityのURPでBlitを使ったらErrorが出た場合の対処

URPでRenderPassを追加してBlitを使ったらエラーが出る場合 今回紹介するの方法は回避方法と思われます。 根本解決かは分からないです。 エラーは、CameraType.Previewの時に発生します。 そこで単純な回避方法として、RenderPass内でCameraType.Previewの時だけ描画をスキップします。 環境 次の環境でRenderPassを追加してSwapBuffersを使ったBlitでエラーが発生しました。 Unity2022.3.13f1 URP 14.0.9 該当コード Executeの中身は以下の通り。 public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { if (material == null) { return; } var cmd = CommandBufferPool.Get(RenderPassName); Blit(cmd, ref renderingData, material); context.ExecuteCommandBuffer(cmd); CommandBufferPool.Release(cmd); } エラー内容 表示されたエラーは以下の通り。 CameraType.Previewの時にBlitの内でAssertionで止まっています。 Assertion failed UnityEngine.Rendering.Universal.ScriptableRenderPass:Blit (UnityEngine.Rendering.CommandBuffer,UnityEngine.Rendering.Universal.RenderingData&,UnityEngine.Material,int) ... さらに、次のエラーも表示される。 Blitter.BlitTexture内のテクスチャ周りに問題がありそうなエラー。 ArgumentNullException: Value cannot be null. Parameter name: value UnityEngine.MaterialPropertyBlock.SetTexture (System.Int32 nameID, UnityEngine.Texture value) (at /Users/bokken/build/output/unity/unity/Runtime/Export/Shaders/MaterialPropertyBlock.cs:113) UnityEngine.Rendering.Blitter.BlitTexture (UnityEngine.Rendering.CommandBuffer cmd, UnityEngine.Rendering.RTHandle source, UnityEngine.Vector4 scaleBias, UnityEngine....

12月 5, 2023 · jnhtt

技術書典15の出展結果

技術書典15の結果 技術書典15に「ゲームと数学のちょっといい話」という本を頒布しました。 ゲームで使われる数学の具体的な例を紹介する内容です。 今回の目標は、無料で頒布することで多くの人に手に取ってもらうことでした。 無料にしたのは学生に届けたかったためです。 結果は、316冊頒布することができました。 頒布したものはこちら https://techbookfest.org/product/cD0f3gsHUgpAzGYYnc11fs?productVariantID=bZiYgemh3j9RywZ8CLJMeT 所感 多くの人に目を通してもらうために今回は無料で頒布しました。 この判断は間違っていなかったと思います。実際、今までない数の頒布数になりました。 多くの人に広く浅く伝えたいものは無料、ニッチな情報を伝えたい場合は有料として活動を続けようと思いました。 有料で多くの頒布数が理想ですが、それは実力とテーマのひらめき、運が必要になるため難しいと感じました。 次に向けて 次はChatGPTを使って作ったサイトとAPIについての本を書く予定です。 とにかく、フロントもバックエンドも中途半端な知識と経験でChatGPTを使ってサイトとAPIを作る過程を紹介できればと思っています。

11月 28, 2023 · jnhtt

UnityのuGUIを使って任意の2点間に線分を引く

UnityのuGUIで点と点を結ぶ線分を作成する Canvas - Overlay 限定で点と点の線分を書く3D上のワールドの点とCanvas上の点に線分を表示したかったのでコンポーネントを作成しました。 画像のような線分を表示できるようになります。 Screenshot コード UILineコンポーネントは、以下の条件下で機能します。 UIのCanvasの設定がOverlayであること 3Dのワールド座標 Transform.position と RectTransform.localPositionの対であること UILineのプロパティlineImageのwidthを小さくすると細い線を描画します。 using UnityEngine; using UnityEngine.UI; // only Canvas - Overlay public class UILine : MonoBehaviour { [SerializeField] private RectTransform canvasRectTransform; [SerializeField] private Image lineImage; public void Draw(Transform trans3D, RectTransform uiElement) { if (trans3D == null || uiElement == null) { return; } Draw(trans3D.position, uiElement.localPosition) } public void Draw(Vector3 worldPosition, Vector2 uiElementLocalPos) { var mainCamera = Camera.main; if (lineImage == null || canvasRectTransform == null || mainCamera == null) { return; } Vector2 screenPoint = RectTransformUtility....

11月 23, 2023 · jnhtt

映画「ゴジラ-1.0」を観ました

ゴジラ-1.0 日本映画特有の狭い範囲の人間関係のジメジメした要素を残しつつも、大きな怪獣ゴジラと昭和の兵器が戦うスペクタクルをメインにしているのが良かった。 VFXは適切な表現をしているように見えた。豪華ではないがチープでもない。海での戦いの波と飛沫は良い線に見えた。 熱線を吐くための背中の棘が持ち上がる表現は期待感を煽って良かった。 とにかく、スペクタクル要素が多い日本映画が増えてほしい。

11月 18, 2023 · jnhtt

技術書典のサンプルレポジトリのログ綺麗にする

gitのコミットログをリセット 技術書典15で頒布する本のサンプルレポジトリのコミットログを公開前にリセットするコマンドを書き残しておきます。 頒布予定の本 https://techbookfest.org/product/cD0f3gsHUgpAzGYYnc11fs 何かしらの事情でprivateのレポジトリをpublicにする際にログを綺麗にしたい時に使います。 コマンド # git configでデフォルトブランチをmainに設定する git config --global init.defaultBranch main # git configの内容確認 git config -l # remote repositoryのurlを確認する # git@github.com:{username}/{repository}.git のような形式 git remote -v # 初期コミットをremote repositoryに強制上書き rm -rf .git git init git add . git commit -a -m 'first commit' # 確認したremote repositoryのurlを指定 git remote add origin git@github.com:{username}/{repository}.git push -u origin main -f

11月 10, 2023