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

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

シューティングゲーム作成中。敵を表示して動かしました。

 とりあえず……敵を出して動かしてみました。下の写真です。敵キャラは暫定でこの形。いずれもう少し変えますが。移動のコースは、敵キャラの生成場所と経過時間によって空間内の場所が決まるように数式を決めてやっています。キャラクタはもちろん正面が進行方向を向くようにしました。この後、移動のコースを工夫して、敵の攻撃も工夫して、技術的にたいしたことはできないけれどエフェクトも入れて、各種ボーナスも用意、ステージもいくつか用意してタイトル画面作って、フリーの効果音やBGMの音源を探して、……と、まだまだやらなければならないことがたくさんあります。楽しみです! 

f:id:Inuosann:20210221202235p:plain

 画像で左上に数値が表示されていますが、FPSです。FPSというのはframes per second、つまり1秒間に描画される回数のことです。ぼくが使っているマシンでは、キャラクタを何十個か表示してもFPSは200近くまで上がっています。今はそうなのかな……? 昔(20年前とか)は出すキャラクタ数が増えるとFPSは顕著に下がって、簡単に30を切ったりしたものです。「30」というのは経験上、毎秒それだけ画面を更新するとキャラクタの動きがカクカクした感じにならない、限界のFPSです。だから30を切らないように工夫するわけですが、PCの負荷を軽くするため敵キャラを立体にせずに板に絵を描いて表示(ビルボードで表示)するとか、そんなこともしました。Unityでは

Application.targetFrameRate = 30;

を実行すると30に抑えられるそうで、試してみた結果が上の写真です。Start()ルーチンに入れました。特にスマホだとバッテリーや、発熱の問題もあるから不必要にFPSを上げてもよくないのです。ネットでは「スマホなら30でも」みたいな書き込みもあります。

 最初は全貌がわからず、テキストを見ても一体なにをやっているのかイマイチ分からないことがありましたが、ここまで来ればもう大丈夫。あとは時間をかけて必要な仕事を終わらせるだけ、という感じです。結局「どうすればこういうこと(ゲーム作成に必要なあれこれ)を実現できるか」というカードを増やして、それをいかに組み合わせるかという問題になります。

 ぼくはゲームはほとんどやりません。ゲームで遊んで「自分の中に何が残るか」と考えると時間が無駄になるだけだと思うからです(生徒にもそう話します)。小説をゲームにしたようなものとかならいいのかも。あるいは何分かでパッと遊んで気分転換できる、そういうゲームならいいと思うので、そんな感じのを作ります。