ゲームプログラマーになるための最初の一歩〜「一筆書きゲーム」を作る
会社の人と「ゲームプログラムを勉強するためには、最初に作るゲームは何がいいのか?」という話をしていたところ、話題に上がったのが専門学校時代に作らされたという「一筆書きゲーム」。
「どういうゲームなの?」
と聞いたところ、格子状に並んだタイルをプレイヤーキャラクターが移動して、タイルを全て塗りつぶすとゲームクリア、というものだそうです。
これを聞いて、「おおー、なるほどー!」と思いました。
というのも、一見単純に見えるこのゲーム……。実際に作ってみると、ゲームプログラムの基本となるエッセンスがいくつか詰まっています。
* 二次元配列でマップデータを確保する。通った道を塗りつぶす
* 上下左右のキー入力によりキャラクターをタイル単位で移動させる
* タイルを全て塗りつぶしたかどうかの判定をして、ゲームクリアとする
話によると、これを作る授業あたりで、授業内容についていけなくなる生徒さんが多いとか……。
つまりこれが作れれば、ゲームプログラマーとしての素質がある、ということが言えるかもしれません。
面白そうなので、私も作ってみました。
■プレイヤーの表示とグリッド単位での移動
まずは、プレイヤー画像を画面に表示して、グリッド単位での移動。そしてグリッドの表示。
プレイヤーの座標をグリッド座標系から求めるのがコツですね。
グリッド座標系とは、以下のように2次元の配列の添字を座標とすることです。
プレイヤーのX座標 = グリッド座標X * 1マスの幅
プレイヤーのY座標 = グリッド座標Y * 1マスの高さ
最終的に描画する座標はこのようにして求められます。
■通過したタイルを塗りつぶす
続けて通過したタイルを塗りつぶす処理です。
これはプレイヤーの現在いるグリッド座標に一致する二次元配列のフラグをONにし、フラグがONになっている部分を塗りつぶすことで実装可能です。
■ゲームクリア・ゲームオーバー判定
最後の仕上げです。
ゲームクリア判定とゲームオーバー判定を作ります。
二次元配列の全ての要素のフラグがONになっていたら、ゲームクリア。
プレイヤーの移動先がすでに塗りつぶされていたら、ゲームオーバーとしました。
■最後に
ゲームプログラムがよくわからなくてゲームが作れない……。
という方はこういった単純だけれども、勉強になるゲームを作ってみて、少しずつスキルアップしていくのも良いかもしれません。
今回のお題が難しい場合は、「クリックゲーム」や「ダーツゲーム」、トランプを使った「ブラックジャック」や「ポーカー」。他には「神経衰弱」、「限定ジャンケン」、「シューティングゲーム」がそれほど難易度も高くなく作れます。
あと、Unityを使っているのであれば、物理エンジンが簡単に使えるので「ツムツム」や「ブロック崩し」も難しくないです。個人的には「フラッピーバード」もお手軽なわりに面白いゲームになるのでオススメです。
なので、まずはそういったゲームを作ってみるのがいいかなと思いました。
■関連する記事
Pyxelでの実装例をまとめてみました。この手順に従って作ることで、誰でも一筆書きゲームが作れます。
ゲームプログラムに不慣れな人が作ると勉強になりそうなゲームをまとめてみました。まずはこういったシンプルなゲームから始めるのもよいです。
ゲームプログラムの知識を身につけるには、どのような勉強をするのが良いのかをまとめています。
個人的にゲームをジャンルで捉えることが多いので、このような考え方となっています。
2次元配列はそのまま使うと、ちょっとしたミスで領域外参照でエラーとなる危険性があります。それを防ぐには、2次元配列をそのまま使わずに独自のクラスをかぶせて使うと安心です。
上記記事では、独自のクラスを実装する例を紹介しています。
ゲームプログラム初心者から、ゲーム会社に入るまでの経歴をまとめてみました。
今の時代とは違う部分もありますが、ゲームプログラマーとして就職するには、プログラムの勉強を熱心にやらなければならないのは今も昔も変わらないかもしれません。