メモ:2Dゲームのモバイルアプリの仕組み

どうも、すえきあおいです。

Flutterで2Dゲーム開発を始めることにしたので、開発の合間に調べたことを備忘録に綴っております。

 

2Dゲームってどういう仕組みなの?

2Dゲームを分解する

興味はあったんですがゲームアプリ(ステージがあってキャラが動くやつ)って作ったことなかったのでいろいろ調べてみました。

2Dゲームは三つの要素に分解できます。

  • ゲームエンジン:ゲームの主要な処理(映像や音のリアルタイム処理)をするソフトウェア
  • キャラクター:プレーヤーが発行したコマンドを使用してゲームの世界と相互作用するオブジェクト
  • ゲームロジック:全てのゲームには達成目標がある。これを達成するための特定の方法

ゲームエンジンには「Flame」というのを使うことにしました。

 

ゲームループを理解する

ゲームループはゲームの核心。コンピュータが繰り返し実行する一連の命令のことです。

通常、ゲームにはFPSと呼ばれるこのメトリック(距離を表す指標。メートルみたいな。)があります。FPSとは、1秒あたりのフレーム数。

つまり、ゲームが60 fpsで実行されている場合、コンピューターはゲームループを1秒あたり60回実行しています。

 

全てのゲームは2つの方法で構築されています。

  1. renderメソッド:スプライト(あの有名な炭酸飲料じゃない。コンピュータ上で動く図形を表現する際に、動かす図形と固定された背景とを別に作成し、ハードウェア上で合成することによって表示を高速化する手法)の計算。オブジェクトの動き(キャラクター、敵、障害物、マップ自体など)およびupdateが必要なその他のもの(タイマーなど)を処理します。 要するにアクション系は全部updateで処理されてるってことですね。たとえば、敵が弾に当たったかどうかを計算したり、敵がメインキャラクターに触れたかどうかを計算したりします。
  2. updateメソッド:画面上のすべてのオブジェクトを描画する。

 

renderとupdateがループしながら連携することで、キャンバス上でキャラが動くみたいな、ゲームが動作するらしい。とりあえずザックリ知っとけば良いんじゃないでしょうか。

末岐 碧衣
  • 末岐 碧衣
  • フリーランス のシステムエンジニア。独立後、一度も営業せずに月収 96 万円を達成。1986年大阪生まれ。早稲田大学理工学部卒。システムエンジニア歴 12年。
    2009年、ITコンサルティング企業に入社。3年目でコミュ障が爆発し人間関係が崩壊。うつにより休職するも、復帰後はコミュ障の自覚を持ち、「チームプレイ」を徹底的に避け、会社組織内においても「一人でできる仕事」に専念。社内外から評価を得た。
    無理に「チームプレイ」するよりも「一人でできる仕事」に専念した方が自分も周囲も幸せにできることを確信し、2015年フリーランスとして独立。