40歳からのキャリアチェンジ

20代はエンジニア・PM、30代はWeb系エンジニア向けのキャリアアドバイザー。40代の今はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連あたり

QuickTiGame2dを使ったシューティングゲーム解説:利用するオブジェクトの役割を理解する

ここで解説すると宣言したので、まずは利用するオブジェクトの役割について解説しておこうと思います

利用するオブジェクトの整理

QuickTiGame2dのAPIリファレンスを見るとわかるように、いくつかオブジェクトがあると思います。
今回作った簡易シューティングゲームでは

  • GameView
  • Scene
  • Sprite

の3つを利用していますが、イメージとしてはこんな感じでしょうか
f:id:h5y1m141:20120303082204p:plain
ゲーム開発するの今回初めてですが、色々情報をさぐりつつ、個々のオブジェクトの役割を以下のように自分は理解しました。

GameView

シューティングゲームで、弾道と敵が当たったかどうか判定するといったキモとなる処理だったり、ゲームのスコアー管理をするなど、ゲームの進行管理を担い、ある種「監督」のような位置づけかと思います

Scene

今回作ったサンプルでは本格的に活用してないですが、例えばステージ1は誰でもクリアーできる程度の敵を配置するだけにしておき、ステージ2は少し難易度をあげる・・・というようなゲームにしようとした場合に

var stage1 = quicktigame2d.createScene();
var stage2 = quicktigame2d.createScene();
game.pushScene(stage1);
game.pushScene(stage2);

みたいな感じでシーンを準備しておき、GameViewのイベントリスナーをうまく使ってstage1からstage2に切り替えるみたいな感じで実現するのではと理解しました。

これは「舞台」に相当するようなものですかね。

Sprite

画像ファイルの表示。WebのHTML/CSSの世界観の場合だと、画像を表示/非表示や、特定箇所まで移動する位の処理で事足りるかもしれないけど、ゲーム開発の場合には、弾道として利用している画像と、敵として利用してる画像とが重なったかどうか知りたいケースなど出てくるかと思います。

2012-03-03時点のWikipediaから少し引用すると

プログラム上に於いては、キャラクタを移動させるときは各スプライトに指定された位置情報だけを変更すればよい。よってソフトウェアで画像の重ね合わせ処理などを行う必要がなく、CPUにかかる負荷、VRAMのバスに対する負荷、ソフトウェア開発(主にプログラマー)への負担が少なく、プログラムの品質も安定する。優先順位の指定により、奥行きも簡単に表現できる。

とあるように、開発する側で面倒な事を考えなくても済むような仕組みになってますね

これは、「登場人物/小道具」に相当しそうですね

次回は、これらオブジェクトを実際にどのように配置するのかを説明しようかと思います