NekoCannon

うわさのNekoCannonをやってみました。
http://ishi.blog2.fc2.com/
マウスを使ってお手軽に遊べますね。
動きも面白いので、操作しているだけでも楽しいです。
 
せっかくなので、中でどんな処理をしているかを勝手に推理してみます。

シーン遷移

タイトル
↓  ↑
メインゲーム
 
う〜ん、シンプルですね。
モードセレクト画面や結果画面を、タイトル画面で兼ねていますね。
 

フォント

dataフォルダの中に「mt_tare_small.ttf」が入っていますねー。
なるほど、、、こうやってオリジナルフォントを使う手もあるんですね♪
 

オブジェクト

プレイヤーや弾、エフェクトはテクスチャべた張りでしょうか…。
敵はモデルを使ってますね、、、おおお、しかもパーツごとに、、。
なかなか、大変そうな処理をしています。
…しかし、なるほど…、キャラクタをパーツ化すると、
多彩な動きを表現できてしまいますね。
 
…でも、地形に弾を撃ち込むとへこみます。
これ、どうやってやっているんでしょうか…。

当たり判定

プレイヤーが地形に引っかかってあたることがあるので、
バウンディングボックスではないでしょうか…。
(勘です)
 
敵はパーツごとに、、、た、大変そうだ…。
これもバウンディングボックスかな…。
bubbleとかは丸っこいから、バウンディングスフィアでしょうか…。
 
…うーむ、地形そのものの当たり判定の方法が分からないですね…。
あんなにグニャグニャまがると平面方程式が使えないような…。
 

ステージマップ

/data/levels以下にレベルごとのマップデータが…。
これをいじれば、簡単にクリアが…、、、ではなくて。
 
.areaと.bmpで1つのステージを構成しているみたいですね。

.area

.areaファイルを見てみます。

  • type:これなんだろ…分からないですね…。
  • max_enemy:一度に登場する敵の最大の数ですね。これより少なくなると、新しい敵が出るみたいです。
  • scale:カメラの画角ですね。
  • enemies:登場する敵のリスト。この中からランダムで登場するのでしょうか。
  • messages:画面したのメッセージですね。

うーん、勉強になるなあ…。

.bmp

ビットマップのピクセルデータから、ステージを作っているみたいですね。
 

msg
  • gameover:失敗時のメッセージですね。
  • complete:クリア時のメッセージですね。

 

level
  • area:ステージ数ですね。

levelが親で、areaとbmpが子になりますね。
 

書式

.areaとmsgとlevelファイルが、

{
	xxx=xxx,
	xxx=[
		xxx,
		xxx,
	],
	xxx={xxx,xxx,xxx,},
}

という書式で統一されていることを考えると、
専用のローダー処理があるみたいですね。
 
は配列で、
{}は属性のリストでしょうか。
vectorとmapしか知らないので、アレなのですが(´Д`;
はvectorで、{}はmapでしょうか。
 

ステージデータ読み込みのタイミング

ステージ開始時に読み込みに行きますね。
これだと、実行時にファイルを差し替えたりと、
デバッグがとってもやりやすくなりますね。
 
ただ、ファイルがないと、プレイ中に強制終了ですか…。う〜む。
できれば、リリースバージョンは、アプリ起動時に(ry
…すみません、すみません。なんでもないです。(土下座)
 

log.txt

ログの出力機能もありますねー。
 
 
 
なんというか、全体的に、作りなれているというか…。
作者のd_of_iさんは他にも色々なゲームを作られていますね。
おおお、物理シミュレーションを駆使した、面白いミニゲームが、、。
(なめ消し塩がハマリますねぇ…)
…やっぱり、数をこなすことが大切なのかな…。
 
よし!私もゲームたくさん作るぞー!(びしっ)
 
 

おまけ

d_of_iさんって、どこかで聞いたことある名前だと思ったら、
人狼BBS専用ブラウザJB」を作っている方だったのですね。
 
うーむ、多才なお方だ…。