Old Articles

Unityでゲームを作った


Unityでゲームを作りました。そういえばPocketPCでゲームを作ったことはありましたが、 既存ゲームの移植ではなく一から作り始めて完成…には程遠いとはいえ途中で飽きて投げ出さずに 一通りゲームとして動作するレベルまで作ったのは初めてです。

かつては XNA 爆推しだったのですが、後継の Monogame が死に体なのに加え、シェーダーを自前で書くのが辛い上に なぜかシェーダーコンパイラが付属しない、そしてオーディオ関係のクソ面倒くさい互換性問題で心が折れて 結局 Visual Studio 標準でバンドルされてる Unity に日和ることにしました。

エディタ本体については GUI でオブジェクトを配置してかんたんにオブジェクトを操作できるので ミニゲームを作るにはお手軽でとてもいいと思います。 一方で各オブジェクトの Update の発生順が制御できないとかシーン内の他のオブジェクトを参照するのが解りづらいとか BGM を操作するための AudioSource のようにシーンを跨って存在するオブジェクトを使おうとすると途端に汚らしい実装になるとか 慣れの問題か?と言いたくなることはいくつかあるのですが、シェーダーやオーディオ、入力デバイスのような 低レベル層に気を使う必要が軽減されるのはとてもありがたかったです。

Update の順序が制御できない点については、各オブジェクトの Update を使わずに シーンに直結するオブジェクトを 1 つ作ってそこから各オブジェクトの更新処理を明示的に呼び出すという、 昔ながらの方法に落ち着きました。Unity のメリット台無しですよ?

ゲーム作りで地味にしんどいのはプログラミングよりも画像や音楽のようなリソース作りです。 無料でゲーム制作に使用可能な素材を公開してくれているサイトの方々には頭が上がりません。 しかし 3D モデルとモーションだけはどうにもできそうにない、どうしたものか。

そして地味に面倒なのはフォントの問題ですね。ライセンスの縛りがゆるい NoTo にしようと思ったけど、 WindowsNT 時代から大事に大事に使っているクソ古い PhotoShop の都合で ttf フォントで使えるド定番の M+ に落ち着いてしまうという……。


ともかくリファクタリングして別のゲーム作成に使えるライブラリを作りたいのですが、 ちょっと調べた感じでは Unity のライブラリを参照する場合に Unity の DLL をアセンブリ名ではなく DLL のパス指定でリンクする必要がある? それってめっちゃ環境依存になるような……


そしてゲームを公開してから開発環境を Visual Studio 2017 → 2019、Unity 2018.1 → 2019.1 に更新したのですが、 Unity 社はもうちょっと Microsoft と話詰めとけやと思いました。 エディタを起動しても Unity Hub を別途ダウンロードしないと起動すらできない、インストールしたらしたで 2018 とは別ライセンス扱いで アクティベーションやり直し、挙句にバージョン間でプロジェクトの互換性が無いって何なんだこれ……。

まあ Unity 以上に 2017 から導入された Visual Studio Installer がゴミすぎてこの程度の不具合何とも無いように思えてしまいますね。 2017 の時からそうなんですが、依存関係がおかしすぎるし既存コンポーネントのチェックが明らかにバグってますよね? アップグレードしても 2019 の Unity エディタがインストールされない、上書きできないのかと思って 2018 をアンインストールしても インストールコンポーネントにチェックされてるのにインストールされない、アンインストール後に Unity エディタのフォルダを 手動で削除しないとインストールされないってふざけてるのかと。バグとかそういうの以前に設計レベルでおかしいですよね??