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:画面したのメッセージですね。
うーん、勉強になるなあ…。
msg
- gameover:失敗時のメッセージですね。
- complete:クリア時のメッセージですね。
書式
.areaとmsgとlevelファイルが、
{ xxx=xxx, xxx=[ xxx, xxx, ], xxx={xxx,xxx,xxx,}, }
という書式で統一されていることを考えると、
専用のローダー処理があるみたいですね。
は配列で、
{}は属性のリストでしょうか。
vectorとmapしか知らないので、アレなのですが(´Д`;はvectorで、{}はmapでしょうか。
ステージデータ読み込みのタイミング
ステージ開始時に読み込みに行きますね。
これだと、実行時にファイルを差し替えたりと、
デバッグがとってもやりやすくなりますね。
ただ、ファイルがないと、プレイ中に強制終了ですか…。う〜む。
できれば、リリースバージョンは、アプリ起動時に(ry
…すみません、すみません。なんでもないです。(土下座)
log.txt
ログの出力機能もありますねー。
なんというか、全体的に、作りなれているというか…。
作者のd_of_iさんは他にも色々なゲームを作られていますね。
おおお、物理シミュレーションを駆使した、面白いミニゲームが、、。
(なめ消し塩がハマリますねぇ…)
…やっぱり、数をこなすことが大切なのかな…。
よし!私もゲームたくさん作るぞー!(びしっ)