ノートの端の書き残し

UnityやらC#やら。設計が得意かもしれない。

【URP】RenderGraph入門 概念編

前置き 現時点での私の持っている知識は、URP12くらいまでの、 ScriptableRendererFeatureからScriptableRendererPassを生成して Passの中でCommandBufferに色んな命令を入れて実行 という実装知識です。 レンダリングパイプラインのカスタムによる負荷軽減…

ゲーム開発においてDIコンテナライブラリは別に正解でもなんでもないという話

DIコンテナの持つ2要素 DIコンテナと呼ばれるライブラリの多くは、「スコープ管理」と「依存性注入」の2つの役割を持っています。これらは同時に利用されることも多いですが、概念としては異なります。 スコープ管理 Unityでの開発であれば、あるシーン内で…

Tiny Character ComponentでUnityもUEくらいハードル下がったのでは!?感

github.com Unity公式で、なんか色々入ったパッケージのリポジトリが公開されました。 恐らく今のところ、プロジェクト単位でリポジトリを落としてくるしか入手方法が無い?ようです。 サンプルシーンや機能のチュートリアルがとても丁寧なので、1から順番に…

MVPアーキテクチャ誤解あるある

特にUnity界隈を見ていると一生擦られているMVPパターン。 確かに決して悪いものではないのですが、別に最強の設計パターンじゃないし、なにより、適切に適用できずもっっっっっのすごく面倒なことになっているケースをよく見ます。 シーンレベルでPresenter…

効率的な開発に欠かせないゲームデバッグ機能の重要性

ゲームに限らず、プログラミングによって作成されるアプリケーションの開発において、デバッグ機能を丁寧に開発しておくことは非常に重要です。 (例外として、1人で1ヶ月以内とか短期間開発し、完成したら二度とメンテナンスしないようなものは気にしなくて…

【URP】CopyDepthPass

Unityにおいて、(深度バッファを使用する設定であれば)シェーダで_CameraDepthTextureと宣言することで深度バッファを参照することができます。 これはURPにおいて、CopyDepthPassと呼ばれるパスでレンダリング中の深度バッファを_CameraDepthTexureにコピ…

FrameDebuggerでURPの基礎を学ぼう

FrameDebugger FrameDebuggerは、1フレームの描画がどのように行われているかを調べるためのプロファイラです。 プロファイラなのでパフォーマンス調査のために使用するものですが、初学者だとよくわからない描画の全体像を掴むのにもピッタリだと思うので、…

【補足】TrackやClipだけを対象にしたTimelineAction

前提 nigiri.hatenablog.com 本題 最後に補足するつもりでしたが書き忘れていました。 TimelineActionクラスを継承すると、選択中のクリップやトラックに対してのコマンドを定義できます。 選択中のクリップやトラックの情報はActionContextに包まれて渡され…

【Unity】Timelineエディタ拡張【TimelineAction】

作るもの UnityのTimelineで、クリップやトラックを右クリックでできる操作を追加します。 環境 Unity2022.3.4f1 Timeline1.7.4 Timelineバージョン1.4.0以降なら問題無いです。 自作クリップ Colorとfloatを設定するようなクリップがあったとします。 ここ…

ラズパイで室内環境をディスプレイに表示する

BME280センサーから温度、湿度、気圧を取得するのは以前やったので、それを表示できるようにしました。 視覚的な出力先があったほうが楽しいので。 ものとしてはSSD1306という安いディスプレイです。 akizukidenshi.com I2C接続が複数できるのかわからなかっ…

読書感想文「ルールズ・オブ・プログラミング」

リンク https://www.amazon.co.jp/dp/4814400411 感想 大筋 プログラミング設計本にあたりますが、具体的なテクニックは例として出しながら、重視しているのは考え方、という内容です。 サブタイトルに「より良いコードを書くための21のルール」とある様にそ…

ラズパイで定期的に室内の温度湿度気圧を測定してSlackにポストする

nigiri.hatenablog.com の続きです。 前はサンプルに愚直に従ってセンサーから受け取ったデータをログに出すところまででしたが、せっかく取得したデータはどこかに保存したいので、とりあえずSlackに投げるようにしました。 なお、GPIO拡張はそのままブレッ…

ラズパイ入門した

私はソフトウェアのプログラマですが、なんか組み込み的なものに手を出したくなったのでラズパイに手を出してみました。 ラズパイ4Bモデルです。 ラズパイだけあっても普通にPCでコード書くのと変わらないので、とりあえず温湿度、気圧センターを合わせて購…

Unityでいろんなオブジェクトを一括で削除する際に、Undoのスタックが溢れて死ぬ

辛い思いをしたので備忘録です。 例えば、編集中は必要だけどゲーム実行時には不要なオブジェクトを、アセットバンドルビルド前に消したいとか思ったとします。 タイムラインの開発で紆余曲折あって結局ミュートにしちゃったトラックとか。 それをアセバンビ…

初めての設計をやり抜くための本

www.amazon.co.jp 読書感想文です。 この本で言うところの設計は、1モジュールの詳細設計ではなく、アプリケーション、ソフトウェア全体のアーキテクチャという設計ですね。 ちゃんとシステム開発の歴史上定義されてる言葉の中に、著者の周りで使われてるだ…

良いコード、悪いコードってなんなのか

設計はトレードオフ 私自身よく、このコードはこういう理由でダメだからこう書いた方がいい、とかコードレビューで言いますが、その良し悪しの基準というのはそもそも1つではないです。 多分もっといっぱい分けようと思えば分けられるんでしょうが、このよう…

【Unity】Deep Profiler Supportをオンにしてビルドするだけでも多少重くなる

DevelopmentBuild Development Build: DevelopmentBuildのフラグ。これがオンなら下2つも有効にできる。 Autoconnect Profiler: 起動時にUnity のProfilerに自動で接続するフラグ。 Deep Profiling Support: ビルド後でもDeep Profileを使えるようにするフラ…

コンセプトから理解するRust

Amazonリンク https://www.amazon.co.jp/dp/4297125625 感想 Rustを書いていて、どうしてもコンパイルエラーの解決がスムーズにいかないとか身に付いていない感じがしたので読んでみました。 中身としては、そもそもRustの理解のためにはメモリ領域とかその…

【Unity】エディタ上でだけ編集可能なパラメータ

エディタ上でだけ編集可能にする 「エディタ上で編集不可能にする」ではなく、その逆です。 ↓こういうこと ReadonlyInScript属性が付いたフィールドはインスペクタでは普通に編集できますが、スクリプトで代入しようとするとエラーで怒られます。 ネタバラし…

Rustでバックエンド開発ができるフレームワークTauri

Tauri tauri.app Rustでネイティブアプリ開発ができる、というところでTauriを知りましたが、実際のところRustでの開発しかできないわけではないです。 フロントエンドもバックエンドも使える言語やフレームワークは結構自由で、いくつか用意されているテン…

ChatGPTのブームに乗っかって勉強したこと(内容無し)

最近やっていたことのメモ ChatGPTのブームに乗っかって、自分のあまり詳しくない分野の開発の勉強をしていました。 (簡単にリアクションが返ってくると楽しくてやる気が出るというのは、ゲーム開発初学者がとりあえずゲームエンジンを触ってモチベーション…

依存性逆転の原則

依存性逆転の原則の説明 基本的にこのように説明されます。 zenn.dev クリーンアーキテクチャー本の記述の解釈としても間違っていないと思います。 何が嬉しいの? この、インターフェースがどうのというのはあまり重要ではないです。手段なので。 大事なの…

無駄なawaitキーワードを警告するRoslynAnalyzer

結果 説明 awaitが最後に置かれているasyncメソッド、というのはasyncメソッドである必要がありません。 というのも、上記のケースの場合、Task.Delayが完了になったら完了になるTaskがこのメソッド呼び出し時に生成されているのですが、後者のTaskは明らか…

RoslynAnalyzer自作勉強 -特定の戻り値を許さないアナライザ-

やること RoslynAnalyzerの使い方はだいたいわかったので、簡単なものから自作できるようにします。 BannedApiAnalyzersという、特定のAPIを禁止にするめっちゃ便利なアナライザがあります。 github.com 例えばUniTaskを採用しているUnityプロジェクトではas…

Dispose漏れを検知してくれるRoslynAnalyzer「IDisposableAnalyzers」

RoslynAnalyzer 詳しくはググれば色々出てきますが、1つ参考リンクを貼っておきます。 note.com 要するに、本来のC#コンパイラでは異常と判断されない書き方を、いや俺はそんな書き方は許さない!としたい場合に、禁止ルールとして定義してコードエディタやU…

色々入ったRoslynAnalyzer「codeCracker」

github.com Code Cracker C#プロジェクトにおいて、ちょっとしたパフォーマンスの向上であったり可読性の向上に役立つRoslynAnalyerです。 個人的には、DisposableのDispose漏れを警告してくれるらしいのが嬉しくて試してみたんですが…… 最終更新が2018年 Co…

UE5機能別サンプルを見る Niagara②

nigiri.hatenablog.com の続きです。ただサンプルを見ていくだけの続きなのでそれほど関連はありませんが。 UE5.1.0 レベル:Nagara_Particles Simple_GPU_System カラフルな粒子がファサーッと広がるシステム。 エミッタのプロパティにある黄色いGPUアイコ…

UE5機能別サンプルを見る Niagara①

UE5.1.0 レベル:Nagara_Particles Niagara関連のレベルは3つあります(Particles, Fluids, Advanced)が、とりあえず一番基本的そうなParticlesから。 学習の手順 各レベルに含まれるNiagaraコンポーネントのアクタを選択して、コンテンツブラウザでブラウ…

Clean Code読書感想文

Clean Code www.amazon.co.jp Cleanという名前から推察できる通り(にしては一般的な語ですが)、SOLID原則やクリーンアーキテクチャで有名なボブおじさんの本です。 どんな本 クリーンアーキテクチャなどの設計本よりは、具体的なコードの見た目のような詳…

コードのコメントについて、英語話者と日本語話者の違いは気にするべきだと思う

短い駄文です。 コードのコメントについて リーダブルコードのような設計本においてよく言われるのは「コメントは無くて伝わるのが一番いい」ということ。 その意図 これは「コード自体に意味を詰め込める余地があるなら全力でそうしろ」ということで、その…