【ゲームプログラミング】その1. スマホ用ローグライクゲームを開発したい

2020年2月12日

こんばんは、てぃってぃ(嫁)の夫です。

前々からやりたかったこと。

「スマホ向けのローグライクを自作(プログラミング)する」

プログラミング経験そろそろ10年ぐらいですが、やっぱりゲームを作って遊んでもらうという夢が捨てられない。ブログも軌道に乗ってきたので、いい機会だと思うし、取り組んでみようと思います。

かなりの長期連載物になると思うので、記事に番号振ります。途中で挫折する可能性もあるので、タイトルは「したい」です。w

目標は、1年以内にテスト公開できるレベルまで作りたい・・・。。

ローグライクへの想い

「ローグライク」って何?って人、きっといますよね。はっきりした定義はググったら出てくると思うので、他サイトにお任せ。

筆者が認識しているのは、落ちている道具を駆使して、なんとか奥まで進んでいくサバイバルゲーム。

昔ハマったのが「風来のシレン2」(ニンテンドー64)。多分500時間ぐらいはプレイした。最果てへの道の99階に5回ほど到達できました。っていうと、分かる人には分かると思うけど、結構な廃人レベルです。

分かる人には分かると思うけど、ローグライクって、とにかく、面白いんですよ。飽きがこないというか、おにぎりの食べごろを身に着けて、落ちているアイテムの取捨選択が上手になって、プレイヤースキルが上がっていくにつれて生存確率が上がっていき、もちろん運要素もあるけども、実力でカバーできる場面が増えてくるというか。

で。「風来のシレン6」をスマホで、ずーーーーーっと待ってました。まだかな、まだかなと…。そしたら出てきたのは、よく分からない、なんだっけ、名前忘れた・・・。「世紀末デイズ」だ(ググった)。待ち望んだのに、思ってたゲームと全然ちがった。ガチャで強いキャラひいて、強いキャラが強い特技を使うゲームでした。あんなの不思議のダンジョンじゃない…

出てこないなら作るしかない。というわけで作るのだ。

開発ポリシー

譲れないポリシーを書いておく。

「「「スマホは横向きに持って操作する。左が移動パネル。右がアクション。」」」

以上。

何がいいたいかというと、ローグライクは操作性が命。操作性は空気、快適で当たり前なんです。操作に使う脳なんてないんです。操作が気になりだした瞬間、ローグライクはゴミと化す。これはたくさんローグライクをやってきた方なら共感してくれると思う。操作ミス1本で数時間の苦労が一瞬にしてなくなるんです。これはストレスでしかない。

操作性にはこだわりぬきます。だから操作性の調整だけで半年かかる可能性もあります。

動作環境

悩んだ。。。が。。。Android 6.0 以降、に、決めた!!

言語も悩んだが、「Kotlin」にする!!!流用性ではjavaに負けると思うが、Androidの経験値を上げたい一心で。

(2020年2月14日)開発環境を「Unity」に選定、言語はC#になります。嘘ばっかですみませんw

システム構成図

てきとーに書くとこんな感じ。

ローグライク開発
自作ローグライク システム構成図

Androidによるゲーム開発をやったことがないので全くよく分かっていないけど、プログラミング経験10年ぐらいのエンジニアが適当に考えた構成がこんな感じ。

(もし熟練のゲームプログラマがこの連載を見たら、色々つっこんでくれるであろう…。期待しています。)

「通信処理」

アプリのバージョン確認、ユーザーのランキング情報をかき集めてランキング機能を作るのに使うつもり。サーバーの契約費がかかるだろうから、開発としては一番最後になる。もしかしたら、完全オフラインになるかもしれない。

あと、WEB系の経験が浅いので、サーバモジュールの実装方法がいまいちわかっていない。PHP等でやろうとしたら、POSTパラメータにガッツリプレイヤー情報を載せることになってしまうのかな?C#のモジュール等を置くとしたら、本当にクラウドPCをレンタルするようなイメージになるのかな。グローバルIPは固定できるんだっけ?ここは技術的課題ですね。

「GUI」

プレイヤーと内部処理のI/F。ここでこだわるのがポリシーで書いた操作性です。

「画面描画処理」

まったく未知数なところその2。アニメーション、マップってどうやって作るんだろうか。ローグライクレベルであれば、画像の連続描画とかなのかな。1秒に16枚描画とかそんな感じかな?

そして敵キャラや画面マップ、音楽などのデザイン要素もある。ここをどうクリアするか。頑張って自作するか、フリー素材を集めるか、有志を募集するか・・・(集まらないか)

「エンジン」

プレイヤーの情報とか、現在いるマップとか、敵の出現とか、敵の行動とか、その他の演算を全ておこなう部分。技術的課題は一番少ないと思うので、まずはここを充実させていこうと思います。極力APIをきれいに設計して、GUI、画面描画、通信と連携できるようにしていこうと思います。

まとめ

今回は初回ということで、開発動機、ポリシー、全体構成を書きました。1年後、完成していて、この記事を優雅に振り返ることが出来るといいな。黒歴史になったら悲しいな。w

次回は、エンジンの設計を記載していこうと思います。

ご購読、ありがとうございました。