URPのColorGradingLUTパスを削除するためにUnity Packageを改造

URPのColorGradingLUTパスを削除するためにUnity Packageを改造 Unity2022.3.16f1とURP14.0.9を使うと、使っていないはずのColorGradingLUTが1パス消費しているので、これを削除します。 ありがたい参考資料 https://zenn.dev/heppoko/articles/b6c3c33f715cfe 手順は以下の通り。 URPを改造可能にする ColorGradingLUTパスを無効化する URPを改造可能にする Library/PackageCacheにあるcom.unity.render-pipelines.universal@14.0.9をPackages以下に移動します。 移動するとPackage ManagerでUniversal RPにCustomのマークが付きます。 Library/PackageCache/com.unity.render-pipelines.universal@14.0.9 ↓ Packages/com.unity.render-pipelines.universal@14.0.9 以下の操作でFinderでお目当てのフォルダを開くことができます。 Projectビュー > Packages > Universal RP > 右クリック > Reveal in Finder ColorGradingLUTパスを無効化する 以下のファイルに変更を入れます。 Unity2022.3.16f1とURP14.0.9では、この3つの変更を入れないとエラーが出ます。 Universal RP/Runtime/UniversalRenderer.cs Universal RP/Shaders/PostProcessing/UberPost.Shader Universal RP/Runtime/Passes/PostProcessPass.cs Universal RP/Runtime/UniversalRenderer.cs の変更点 UniversalRenderer.csのUniversalRenderer.Setupの638行目のgenerateColorGradingにfalseを入れます。 ヒントとしては、以下のコメント付近にあります。 // TODO: We could cache and generate the LUT before rendering the stack Universal RP/Shaders/PostProcessing/UberPost.Shader の変更点 UberPost.Shaderの240行目colorにApplyColorGradingの戻り値を代入しているところをコメントアウトします。 ヒントとしては、以下のコメント付近にあります。 // Color grading is always enabled when post-processing/uber is active Universal RP/Runtime/Passes/PostProcessPass....

1月 8, 2024 · jnhtt

2023年振り返りと2024年目標

2023年振り返りと2024年目標 2023年 2023年に世に公開したものをリストにして簡単に振り返りをしました。 ジャンル 内容 ゲーム Gate of Hell (iOS/Android) ゲーム Sliding Rails (Steam) 技術書 UnityのTimelineでコマンドラインバトル 技術書 ゲームと数学のちょっといい話 Webページ https://smartphone-games.net の拡充 Webページ VTuber配信スケジュールまとめ Webページ フットボール/サッカー動画まとめ Webページ 雑学動画まとめ Webページ お笑い動画まとめ Webページ ビジネス系動画まとめ Webページ 元プロ野球選手の雑談/対談動画まとめ Gate of Hell (iOS/Android) カーリングライクなお弾きゲームだったが、円周上を右往左往するゲームを経てヴァンサバライクのゲームになりました。 世に知られることはなかった。 Gate of Hell を最後にモバイル先行の開発からSteam先行に切り替えました。 Sliding Rails (Steam) スマホ向けに出したSliding RailsをSteam向けにリリースしました。 致命的な不具合が残っていたので修正しました。この修正をスマホ版にも反映しました。 値段設定の難しさを再認識したゲームでした。インディーゲームは、360円くらいが一般的。 技術書 (UnityのTimelineでコマンドラインバトル/ゲームと数学のちょっといい話) 技術書典に継続的に参加中。 UnityのTimelineでコマンドラインバトルは、Timelineの基本機能だけでコマンドバトルを作る本です。 新しい機能に触る、覚える動機として本にするのは継続したいです。 ゲームと数学のちょっといい話は、初の無料頒布でした。 過去最高の頒布数になったものの、反響を見ることはなかった。 技術書典での無料頒布は、多くの人に手にとってもらうには良し。 ニッチなものは無料でも数がでないので、無料頒布は向いていない印象です。 Webページ 自分のためのWebページ作成をChatGPTを使って作成しました。 興味のあるジャンルのYoutubeチャンネルから動画を取得してまとめるページを複数作成しました。 VTuber配信スケジュールまとめは、完全に自分のためのサービスになりました。毎日数回使っています。 各箱、個人勢のスケジュールを別々に確認するのが面倒なのでタイムスケジュールにできたのは効率化されて見逃しが減って大満足です。 フットボール/サッカー動画まとめ、リーグ別にまとめてかなり効率化できました。 先に作ったVTuber配信スケジュールまとめの仕組みを使いまわせたので素早く作れました。 その他のまとめも仕組み使い回しで量産できて効率的に自分向けのまとめが作れる状態になり満足です。 2024年 2024年に世に公開したいものをまとめて、年末年始に振り返る予定です。 ジャンル 内容 ゲーム Gyaaのコンテストに出したものをSteamにリリースしたい。 ゲーム Sauna of the DEADをSteamにリリースしたい。 技術書 youtubeジャンルまとめページの本 featuring ChatGPT出したい。 Webページ VTuber配信スケジュールまとめに推しフィルタリング機能を追加したい イベント コミケに参加したい。4コマ漫画で ゲーム Gyaaのコンテストに出したものを結果によらず、Steamにリリースしたい。 現状でほぼ完成しているのでコンテストの結果待ち状態です。...

1月 3, 2024 · jnhtt

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