くまちゃんのiOS/Androidゲームプログラミング

マイペースでゲームつくってます。

【Android】RPGの開発、ようやくエンジンがかかり始める

やーーーーーっと軌道に乗ってきました。

これまで、RPGiOSドラクエライクをつくったり、ローグライクをつくったりしてきたのですが、どうにも続かず中途半端に頓挫していました。

原因はわりとはっきりしていて、マップの作り込みと、ユーザーインターフェイスまわりの作り込みですね。

マップの作り込みはもうこれは理屈でもなんでもなく、忍耐しかないわけですよ。
趣味のゲームづくりはだいたいがちょこっとした小さなプログラムから作り始めるので、マップを表示させる仕組みをつくったら満足してしまい、あとはいくらでもデータをこさえればいいだけなんですが、これがまあ〜見事に続きません。200x200のマップとか無理。Macのちっちゃな13インチモニターでは無理ですわ。さらに、ツールもない中、マップに置く「絵」と「数値」がいきあたりばったりなので、あとで「あ、移動できる数値としてもう1枚絵を増やしたい・・・」となってもこれまでに配置した数値をすべてズラすこともできずイライラすることになってしまいます。まあ、これも最初から計画すれば防ぐことができるんですが、そこはそれ、趣味でつくるのにそこまで準備して、というのもこれまたモチベーションが下がってしまうわけなんですよ、はい。

ユーザーインターフェイスは、とにかくメッセージの表示と対話がめんどくさい。
攻撃における魔法の選択や、武器屋での商品選びまではなんとかつくることができたのですが、意外とつまづいたのが「村人の会話」。
定型メッセージではないので、さまざまな長さがあるし、ストーリーによっていろいろ分岐させたいし、メッセージを表示するにあたって改行だ、スクロールだと気にし始めるとそれだけで結構立派な「クラス」をつくる必要がでてきて、正直そこにエネルギーを注いでいるとどんどんゲームづくりから離れていってしまうので、結局イヤになってしまって。

・・・ってなことで、私のiPhoneには結局、完成に至らず無味乾燥なアイコンのままの、無残なRPGのなりそこないが結構ゴロゴロころがっています。その派生のひとつが「ねこひろい」なんですけども。

先週、iOSのゲームのアップデートを立て続けに2つやって結構満足感が得られたのもあって、止まっていたRPGをポチポチ再開させるかなーとAndroidをごそごそいじりはじめました。そこで気をつけたことは前述した2点。

まず、マップは小さくすると決めました。1画面を10x10のチップを配置、それを4画面つなげダンジョン1レベル分としました。つまり、地上も4画面分しかない小さな村、ということにしました。

そしてユーザーインタフェース。これはiOSAndroidを天秤にかけた結果、AndroidのSurfaceViewが、テキスト表示とボタン類のUIの扱いが比較的簡単・・・というか、サンプルプログラムがネット上にも充実している、ということで採用。iOSのAutoLayout苦手なんですよ。
そして試行錯誤していくうちに、ふとこれまでの悩みだった「村人の会話」問題のめどがついたんです。長いメッセージも、元データをテキストファイルから読み込ませる方法でいくらでも書き足すことができるようになりました。

これが大きかったですね。
登場人物別に、ストーリーの進行にあわせて表示できるようになると、毎日少しづつ、まるで小説を書くようにRPGをつくることができるようになりました。こうなると俄然やる気が出てきました。
次にストーリーをどう進めたら面白いか?と開発そのものが楽しくなってきたので、この状態はシメタものです。
アクションゲームはシステムをつくったらほぼ完成ですが、RPGはやっぱりストーリー。これをプログラミングとともに考えながら続けるサイクルを生み出すことができたのが、良かったですね。

さー、小さいストーリーでも、とにかく完成させてリリースまで続けないと。
f:id:tadakazu1972:20151025161927p:plainf:id:tadakazu1972:20151025161944p:plainf:id:tadakazu1972:20151025162037p:plainf:id:tadakazu1972:20151025162053p:plainf:id:tadakazu1972:20151025162119p:plainf:id:tadakazu1972:20151025162148p:plainf:id:tadakazu1972:20151025162215p:plainf:id:tadakazu1972:20151025162235p:plainf:id:tadakazu1972:20151025162245p:plainf:id:tadakazu1972:20151025162257p:plainf:id:tadakazu1972:20151025162307p:plain