とあるカプセラのソースコードを読んだ感想

今作ってるゲームの感想が欲しいということなので適当にここに書きます。

 

最初に結論

japan.unity3d.com

Unity 3Dを使ってみよう!

長年のゲーム開発のノウハウがここには詰まっています。どのようなクラス設計をすればいいのかが使っていくうちに分かってきます。使用する言語はC#ですがゲームプログラミングの手法はC++でも大体は一緒です。多分。

 

bitbucket.org

これだけで満足できなくなったらUnityを開発しているUnity Technologiesの公開しているソースコードを色々と読んでみましょう。もっと深く知ることができます。多分。

 

docs.unrealengine.com

C++じゃなきゃ我慢できない!俺はゲームエンジンの真髄を見たいんだ!って思ったらUnreal Engineソースコードを読んでみましょう。昔は毎月課金しないと駄目でしたが、今は無料だったり学生割引とかがあるかもしれません。多分。

 

ここからは実際のソースコードの感想を少しだけ。

 

 

根底クラスを用意しよう

シーンはswitch文で分けてますが、BaseSceneみたいな名前の根底クラスにrun()という名前の純粋仮想関数を用意して、それぞれシーンのクラスに継承をさせてrun()をオーバーライドさせます。そうすればswitch文を使わなくてもscene.run()を呼べばいいだけので便利っぽいです。

 

あとはプレイヤーや弾、敵などの全てのオブジェクトをGameObjectみたいな名前の根底クラスに、x, y, z, run(), render()等の全てのオブジェクトで使うような変数や関数を持たせると便利です。多分。

 

 

名前を統一しよう

ハンガリアン記法はレガシーなので止めたほうがいいですが、命名規則は宗教論争になるので自由にするといいと思います。しかし、ファイル名とクラス名と変数名がそれぞれ別なのは止めたほうがいいです。

 

例えばファイル名がGame.cpp、クラス名がMyGame、変数名がgameSceneとかやられると大変困ります。この場合はゲームのシーンを記述している箇所なのでファイル名をGameScene.cpp、クラス名をGameScene、変数名をgameSceneにするのがいいと思います。

 

まぁ名前は好きなのでいいと思うのですが、統一はしたほうがいいです。多分。

 

 

名前を略するのは避けよう

今はIDEのIntelliSenseが進歩してるので、他の人が分からない略語は止めてフルネームを書いたほうがいいと思います。ただこれをやりすぎるとJava病になってしましますので、適度に略語を使いましょう。

 

例えば国際化に対応するときによく使う単語でinternationalisationというのがありますが、これを毎回書くと流石に辛いので大体はi18nで通じます。多分。

 

 

フォルダの階層を分けよう

シーンファイルは全部まとめてScenesという名前のフォルダとか用意して全部入れると見やすいです。こんな感じで機能別にフォルダを分けたほうが見やすいとは思います。多分。

 

 

ツール制作に手を出すのは止めよう

マップチップのデータをテキストファイルに書いてるみたいですが、そのうちきっとマップエディタを作りたくなったりします。これは沼に一直線なので絶対に止めましょう。ツール制作がメインになって永遠にゲームが完成しない人を沢山見てきました。

 

フリーのマップエディタツールとかそこら辺を探せば一杯あると思うので、それを使うか。地道に手打ちにしましょう。ゲームを完成させることだけを考えるといいと思います。多分。