ゲームを作るためにはソフトウェアが必要だと言うことがわかりました。では、実際にゲームを作るためにはどんな考え方が必要なのでしょうか?また、どのようにゲーム制作ノウハウを学習していけばよいのでしょうか?まずは、コンピュータを使わないでできるトレーニング方法をお伝えします。
まずは紙を使った工作でゲームを作ってみる
ばかばかしい話かもしれませんが一度ボール紙や厚紙などを使って卓上のゲームを作ってみることをおすすめします。なぜかというとコンピュータでゲームを作る場合でも同じような手間が必要だからです。
コンピュータを使うとボール紙や厚紙でゲームを作るよりも高度で手軽にゲームが作れるという考えは間違いです。コンピュータでゲームを作る場合でもボール紙や厚紙でゲームを作る際に払う労力がそのまま、あるいはそれ以上必要になる場合があります。
これは、コンピュータがコミュニケーションの手段として数値のみしか扱えないからです。ゲームを動かすためのすべての指示は数値で指定する必要があるのです。
たとえば、ボール紙や厚紙ですごろくを作るとします。ボール紙や厚紙ですごろくを作るためには次のステップが必要です。
- 大きな紙にすごろくのマスを描く
- ボール紙や厚紙からすごろくのコマとする絵を描き、はさみで切り出す
- サイコロを作るために六面体をはさみで切って1から6までの点を描いて組み立てる
コンピュータも同様です。
- 大きな画像ファイルにすごろくのマスを描く
- 小さい画像ファイルにすごろくのコマとする絵を描く
- サイコロの代わりになる乱数関数を設定する
まだ、安心してはいけません。ここからが重要です。実際にすごろくゲームを遊ぶためには次のようなステップが必要です。
- サイコロを振る
- サイコロの出た目だけコマをすごろくのマス目なりに進める
- マス目に書いてある指示に従う
普段遊んでいる場合はこの程度の意識しかないと思います。しかし、コンピュータで同じことをやろうとすると、我々人間が普段、いかに高度なことをやっているのかということがわかります。
- rand() 関数を使って1から6までの乱数を取得して dice という変数に保存する
- 変数 dice の数だけ以下を繰り返す
- 現在のコマの場所を見つけてベクトル変数 now に保存する
- 次のマスの位置を見つけてベクトル変数 target に保存する
- target - now を計算してベクトル変数 distance に保存する
- distance のX成分がプラスの場合は右のマスへ移動する
- distance のX成分がマイナスの場合は左のマスへ移動する
- distance のY成分がプラスの場合は下のマスへ移動する
- distance のY成分がマイナスの場合は上のマスへ移動する
- もし、現在のコマの位置に「一回休み」と書かれていた場合は自分の番を1回飛ばす
- もし、現在のコマの位置に「nつ戻る」と書かれていた場合は以下をn回繰り返す
- 現在のコマの場所を見つけてベクトル変数 now に保存する
- 前のマスの位置を見つけてベクトル変数 target に保存する
- target - now を計算してベクトル変数 distance に保存する
- distance のX成分がプラスの場合は右のマスへ移動する
- distance のX成分がマイナスの場合は左のマスへ移動する
- distance のY成分がプラスの場合は下のマスへ移動する
- distance のY成分がマイナスの場合は上のマスへ移動する
- もし、現在のコマの位置に「nつ進む」と書かれていた場合は以下をn回繰り返す
- 現在のコマの場所を見つけてベクトル変数 now に保存する
- 前のマスの位置を見つけてベクトル変数 target に保存する
- target - now を計算してベクトル変数 distance に保存する
- distance のX成分がプラスの場合は右のマスへ移動する
- distance のX成分がマイナスの場合は左のマスへ移動する
- distance のY成分がプラスの場合は下のマスへ移動する
- distance のY成分がマイナスの場合は上のマスへ移動する
- 次の人の番へ移る
いかがでしょうか。これがコンピュータでゲームを作る際の考え方です。ポイントは我々が頭で考えていることをすべて数値で表すということです。
紙で作ったゲームのルールをどうすればコンピュータに伝えられるかを考える
コンピュータで動くゲームを作る際には、いかにしてコンピュータに指示を出すかという問題に重点が置かれます。自分で考えたオリジナルゲームを作る際には、次のようなポイントに注意しながら考えてみてください。
- コンピュータは数値しか理解できない
- よって位置を示す際にはベクトルという考え方を使う
- 同様に移動を指示する際にもベクトルという考え方を使う
- RPG の HP など、もともと数値で表されていたものはそのまま数値で表す
- ゲームはアニメの要領で1秒間に画面を 60 回書き換えている
意外かもしれませんが、このあたりの問題を解決するためには、中学校程度の数学が役に立ちます。もし、数学が苦手な方はゲームプログラミングを学んでいくと必ず好きになります。成績アップも不可能ではありません。
また、ゲームの画面は1秒間に 60 回の頻度で書き換えられていることを忘れてはいけません。たとえば「次の1秒間に主人公キャラクターを 100 ドット右へ動かしたい」という場合、1フレームの間に 100 ドット動かしてはいけません。なぜかというと、画面は1秒間に 60 回書き換えられているため、1フレームの間に 100 ドット動かすと、実際には1秒間で 6000 ドットも動いてしまうからです。1秒間に 100 ドット動かしたいのであれば、1フレームの間には 100/60 だけ動かす必要があります。
まとめ
- コンピュータで動くゲームを作る際には、あらかじめ紙を使って同じゲームを作って予習しておく
- その際、人間が頭で考えていることをどうすれば数値だけで表現できるかを考える
- 少なくともベクトルを復習する。習っていない場合は独学(大丈夫です、難しくありません)
- ゲームの画面は1秒間に 60 回の頻度で書き換えられていることを意識してキャラクターの動きを指示する
« 「ゲームを作るためにはどんな方法がある?」へ | トップへ | 上の階層へ