いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

スマホでゲーム作り(2)

www.omoshiro-suugaku.com

 前々回、Unity+C#でゲームプログラミングする本を紹介しました。PCで書いたプログラムは実機テストしなければなりません(動作の確認などはPCでできますし、通常はPCでのみ作業)。つまりスマホに送って実際に動作させないといけません。操作が快適かなどはPCだけでは分かりませんし、PCでは画面のレイアウトなどきちんとしていてもスマホでは崩れていたりすることもあるようです。前の記事に書いた通りで、ぼくはスマホにうまく送れずあれこれ試していたんですが、疲れてとりあえず寝て、翌日落ち着いて試したらうまくいきました。でも今は使っていない少し古いスマホでもやってみたらこちらはダメ。まあ、何か理由があるんでしょう……。とりあえず実機テストはできるようになったので本を読み進めています。

 今、上からたくさん降ってくる矢をプレーヤーがキャラクタをコントロールしてよける、という2Dのゲームまで進んでいます。これで本の半分くらい。「ああ、この感じならもうゲームを作れるな……」という気がしました。あとで3Dゲームも出てきます。この本はとにかく丁寧に書いてあります。例えばいちいち前に戻って確認しなくてもいいよう、同じことも繰り返し説明してあるなど、読んでいてストレスがありません。ゲームのアイディアをどう出したらよいかとか、実際にプレイしてみて面白いかどうかあたりはもちろん自分で一から書いてみないと分からないでしょうが、とりあえず本に沿ってプログラミング、実験、とやっていればゲーム作りに必要な知識は手に入りそうです。

 でもやはり、と言うか、矢が降ってくるゲームでは当たり判定は矢とキャラクタの距離を調べてやっています。この辺はUnityも20年前も変わらないですし、矢を落としたりキャラクタをキーに従って動かしたりの仕組みも同じようなものです。結局、画像の表示、マウスの位置の取得、効果音を出すなどはunityが細かなことをすべてやってくれて楽です。しかし当然と言えば当然ですがキャラクタの移動やスピード、当たり判定などキャラクタ同士の関わりの管理、……は昔と変わらずゲームプログラマの仕事です。ハードルは下がっているけれど、「だから簡単」というわけではなさそうです。例えば敵機に面白い軌道を描かせるにはやはり数学の知識が必要でしょうし、編隊を出すには編隊のための仕組みを自分で作ることが必要です。

 今プロが作っているゲームはどうなのか分かりませんが、ゲームループというのがあります。ゲームのプレイ中、プログラムの中ではずっといわゆる「ゲームループ」というループを回しておくのです。時間を計って描画したりキャラクタの位置を計算したりするためのループです。このループを、Unityでは実際にゲームプログラマは書かなくてよいようです(ときどきコールされるようになっているUpdate()ルーチン内に描画処理などを書く)。この辺や、あるいは敵機の描画を工夫するとか、サウンドファイルの再生にこだわるとか、そういった方面に凝ってもゲームの質には関係ないのは確かです。基本的な作業はunityに任せる、これが今のゲームプログラミングだということなんですね。

(追記:当たり判定にはcolliderという仕組みがありました)

 何にしても、これでどうにかスマホのゲームプログラミングのスタートに立ちました。これから楽しみです!