見出し画像

ゲームを作るのに最適な開発環境は何か?

今回は、ゲームを作るのに最適な開発環境は何かということについて書いてみます。

これは結構難しい問題で、「誰にとってもオススメできる開発環境」というものが存在しません。理由としては、作りたいゲームジャンルや、その人のゲーム開発能力に依存する部分があるからです。

とはいえ、Unityが世界で最も使用されているゲームエンジンなので、これを選べば間違いない、という意見もあります。

* 無料で使うことができ、スマートフォン向けのゲームも無料で配信することができる
* 多くの人に使われているので、圧倒的に書籍やWebなどの情報量が多い
* 記述力の高い C# で書くことができる
* エディタをカスタマイズしてゲームを作りやすい環境を自由に作れる

などなど、Unityを使うメリットはとても多く、使わない理由はありません。
ただ、個人的にUnityは、「自分の作りたいゲーム」や「それまで積み上げてきた開発スタイル」と合わない部分が多いため、現在は使っていません

具体的な理由は以下の通りです。

* Unityは3Dベースのゲームエンジンなので、2Dゲームを作る際に冗長な記述となってしまう
* レンダリングするための手順が自分に合わない。デバッグ用にテキストや矩形を描画したいだけのに、コンポーネントを追加するなど複数の手順を踏む必要がある
* とにかくゲームを作るのに時間がかかる。過去にタワーディフェンスを作った時、 GameMaker:Studio で作った時は 3日で作れたが、Unityは 2週間 もかかった

Unityの習熟度が上がれば(仕事で使うなど)、快適に活用できるかもしれませんが、今のところはあまり使う気になれませんでした。ですが、システムやビジュアル面などを作り込む場合、Unityの方が自由度が高いので、クオリティを上げるにはUnityの方が良いでしょうね……。

ということで個人的な見解を含んでいますが、誰にでもオススメできる開発環境は今のところないと思っています。また、私がオススメする GameMaker:Studio にも欠点は多く、例えば GMLという独自言語の記述力がC#と比べると明らかに低いです。あと開発環境を使うためには高いお金を払う必要があるなど……。

■開発環境を選ぶ基準


前置きが長くなってしまいましたが、開発環境は以下の基準で選ぶのが良いかもしれません。

1. 得意なプログラム言語はあるか
2. 作りたいゲームジャンルは明確か
3. 使いたい技術を使うことができるかどうか

プログラムがバリバリできるのであれば、得意なプログラム言語が使える環境が良いです。その点、UnityはC#が使えます。個人的にはC#はゲームを作るための最適な言語だと思っています。C/C++だとメモリ管理やポインタの扱いに悩むことが多いです。
その点、趣味で作るならそういった煩わしさから解放される言語が良いです。C#なら、ガベージコレクションがあって配列の領域外参照を自動でエラーにしてくれるので圧倒的に楽だと思います。
また、C#は最新のトレンドを取り入れていてモダンな書き方ができるのもポイントが高いです。
C#が使えるのはUnityだけではなくて、同人ゲームでよく使われているDXライブラリでも使えるみたいです。

それに対して、HSPやGameMaker:Studio は言語としての記述力が低いので、そのぶん初心者には敷居が低くオススメできる環境なのですが、プログラムができる人にとっては「なぜこれができないのか?」とストレスになってしまうので、あまりオススメできません

あと、静的型付けのある言語 (CやC#、Javaなど) を使うか、動的なスクリプト言語 (Pythonや Luaなど) のどちらを使うかという問題ですが、ゲームとして使う場合、どうしても規模が大きくなるので、コンパイル時に未定義変数や型のチェックをしてくれる「静的型付けのある言語」を使う方が良いです
実行しないとエラーがわからないのは、初歩的なエラーを見逃す可能性が大きく、開発速度に影響しがちです。

ただ、スクリプト言語はミニゲームのような小さいゲームの開発に都合が良く、またゲーム開発の補助ツール(データコンバートを自動化するなど)の作成にも使え、脱初心者してからも自分の資産となるため、覚えておいて損はありません。
ちなみに私の場合は、過去に仕事でHSPを使ってグラフィカルなデータ作成ツールを作ったり、今でもPythonでデータを自動コンバートするツールを作ったりしています。

といった感じで(だいぶ脱線もしていますが)、採用しているプログラム言語が、自分にとってストレスが小さいものを選ぶのが良いのではないか、というのが私の結論です。

▼プログラム言語で選ぶ場合
* 初心者向け: Python(PygameやPyxel), Lua(Love2DやPICO-8), HSPなどのスクリプト言語。もしくはGameMaker:Studio
* プログラムできる人: C/C++(DXライブラリやCocos2d-x), C#(Unity), Java(LibGDX)

次に、ゲームジャンルの問題です。
作りたいものが、会話が主体となるアドベンチャーゲームであれば、ティラノビルダーなどのノベルゲームエンジンや、RPGツクールを使った方が楽に実現できます。例えば Unity や Unreal Engine 、GameMaker:Studio などのゲームエンジンは基本的にアクションゲームを作るためのエンジンなので、会話イベントを作ろうとすると、その仕組みを一から作る必要があります。

最後に、使いたい技術を使うことができるか、という問題もあります。
3Dゲームを作りたいとしても、環境によっては2Dの描画エンジンしか存在しないものもあります。そのような環境で3Dゲームを作るには、自前で透視投影(3次元変換)する描画プログラムを書く必要があり、あまり現実的ではありません。
また、対応しているモデルフォーマットやシェーダ、エフェクトツールがどれだけあるのか、といった3D機能やサポートしているツール類の幅の広さを考えると、UnityやUnreal Engine がやはり有力な選択肢となります。

他にも、2Dであっても使い慣れているアニメーションツール(Spineなど)がどこまで使えるか、ということも、場合によっては考慮に入れる必要がありそうです。

そのあたりを無視して、ツールが出力したデータの読み込みを「自作」すると、満足できるパフォーマンスとならなかったり、ツールのバージョンアップによってデータが読み込めなくなる、ということがよくあるので、そういうリスクを考慮した上で自作する必要があります。(自作は楽しいですけどね)

■まとめ

ゲーム開発環境を選ぶための基準は以下の通りです。

1. 使っていてストレスのないプログラム言語を採用している環境を選ぶ
2. 作りたいゲームジャンルが決まっていれば、そのジャンルを作りやすい環境を選ぶ
3. 使いたい技術を使えるかどうかで考える

個人的にはスマートフォン向けに出力できるかどうかは、初心者はあまり気にしなくてもいいと思っています。
というのも、初心者はゲームを完成させられるかどうかがまだわからない状態なので、まずは簡単に作れる環境で経験を積むのが良いです。
ただ、スマートフォン向けに作ることで、モチベーションが上がるなら、それも良いかもしれません。

なお、そもそもプログラム言語がわからない場合は、まずは HSPやLua、Pythonなどのスクリプト言語から覚えるのが楽、なのではないかと思います。
理由は、覚えることが少なくてすみ、のちのちゲームエンジンを使っていくとしても、その経験が活きてくるからです。

また、環境をある程度使い込むと、色々な不満点が見つかることがあるかもしれません。その場合に環境を変えるかどうかの判断は、「使い続けた場合に最終的にどのようなゲームになるのか」ということを想像してからでも良いのでは、と思います。
その想像の結果に我慢できそうなら、グッとこらえてその環境を使い続けましょう。
というのは、環境を変えると覚えたことがリセットされるため、色んな環境に手を出すと覚えることばかりでいつまでもゲームが完成しない、などということが起きてしまうからです。
繰り返しますが、完璧な開発環境はなく、環境選びにはある程度の妥協が必要です。

◾️関連する記事

ゲームを作る前に知っておいた方が良いことをまとめた動画を見た感想です。最初は小さく作った方が完成させやすい、というようなことを紹介しています。

ゲームを作り続けるには、毎日どのようなことをすると良いのかをまとめています。

この記事が気に入ったらサポートをしてみませんか?