ゲムキTOP > ブログTOP

ハルポップの徒然雑記

ためになる話、どうでもいい話など

星のドラゴンクエストをやってみた

ハルポップ 2016-06-20 23:08:56 pv:763


CMで目に付いたので初めてやってみた。
これが良く出来ていて面白い。
まず斬新だと思ったのが戦闘システム。

ドラクエといったらコマンド入力する方式なのだが、このゲームはそうではなく、オートでバトルが進む。
そして呪文や技に対してゲージがたまっていき、ゲージがたまってタップするとその技を使う事が出来る。

それから移動に関しては、マップの中を自動で進む。
十字キー移動がなくて正解。スマホゲーで十字移動は操作がし辛く本当に煩わしい。

以上よりストレスなくゲームが進められる。
過去のドラクエのUIや操作に固執せずに一新された良く出来たシステムだと思う。

この十字移動については家庭用ゲームの移植ではよくあるが、スマホでは操作しにくい。
ファミコンなどの家庭用ゲーム機は十字キーのコントローラーがあるから十字移動があるのだ。
スマホで一からゲームを作るのなら、十字移動は絶対に採用しないはず。
もしも堀井雄司や宮本茂がファミコンではなく現代のスマホゲームを初めて手掛けるならどんなUIにしたんだろうか。

マリオの完コピvol.34 BMFONTデータ作成

ハルポップ 2016-06-17 23:59:15 pv:1787


画面上部のスコア、コイン、残りタイムのテキストを表示。これらのフォントは画像ファイルとして使用している。

こちらのBitmap Font Generatorを使えばBMFontのデータが作れるのだが、これは元々用意されているフォントファイルがないと無理。
http://www.angelcode.com/products/bmfont/
ドラクエっぽいフォントはあったのだが、8ピクセルサイズにするとどうしても崩れて表示されてしまう。
だからやめて、画像からBMFONTデータを作る方針へ。

こちらの記事にあるShoeBoxというツールを使えば画像から出力できるようだけど、8×8ピクセルのサイズだと判定がうまくできず断念。
http://developer.wonderpla.net/entry/blog/engineer/Cocos2dx_BitmapFont/

だから自分でデータファイルを手打ちして作る事にした。
この記事に書かれているフォーマットも参考に。
http://sarudeki.jp/fernweh/fnt-fntfile/

それでうまくいけた。

ただAndroidの実機でフォントを見ると端のほうにゴミが見えている。もっと間隔を広げて作る必要があるのか。ここは今はスルーで。

マリオの完コピvol.33 リファクタリング

ハルポップ 2016-06-16 23:40:41 pv:1603
メインソースに書き続けているので、機能ごとに分割してみようと思い、マップクラスやプレイヤークラスを作って、ソースを修正。定数用のヘッダーも作った。
挙動が変わらないようにしてソースを変える事をリファクタリングと言う。

ただクラスはメンバ変数をpublicにして構造体のように使っているので美しくはない。
そこで尊敬する中村光一先生のお言葉をお借りする。「文法や作法が間違っていても、結果としてちゃんと動いていたら、ゲームができたら、ゲームが面白かったら、それでOK」

また、速度はint型にして固定小数として使っていたので、float型に修正。
当初は全部int型にしてファミコンと同じように固定小数でやろうと思ってたけど、使う箇所全部で割り算が必要でコードが見辛くなる。使う変数によっては4096で割ったり256で割ったりとバラバラ。
だからfloatに統一した。

マリオの完コピvol.32 リプレイデータ再生とタイトル画面

ハルポップ 2016-06-15 19:32:13 pv:1824


リプレイデータの再生、これを作ってみたかった。
リプレイの仕組みは、コントローラーの操作を再生するというもの。
もしゲーム中に乱数を使っていたらSEED値も同じにする必要がある。

リプレイデータの構造体は意外とシンプルで
・変化があった時のフレーム数
・コントローラーの状態
の2つで良い。

コントローラーの状態の変数はintの変数にしてビット演算を使用すると32個のボタンまで格納できる。

ビットをオンにする式は
フラグ |= A

ビットをオフにする式は
フラグ &= ~A

ボタンを押した瞬間を判定するには、前フレームのボタン変数を保持しておき、今回のフレームと比較して変化のあったビットが押された瞬間のボタンである。
if (!(prevInput & KEY_A) && (nowInput & KEY_A)) {
// Aボタンが押された瞬間
}

マリオの完コピvol.31 敵の角の地形判定

ハルポップ 2016-06-15 00:25:11 pv:1774


敵キャラはマリオと違ってブロックの端で早く落下する。
地形との当たり判定を、上半分は大きい四角で、下半分が小さい四角としてみた。