[AoMD開発日誌8] 裏側紹介:開発技術と開発参加

隕石掘り達の星学Astronomy of Meteorite Diggersはおおよそ週末に開発を進めており、おおよそ4週に1回、開発内容を紹介していきます。
全体の紹介はこちらの記事からどうぞ。

今回はゲーム内容の紹介とは違う話題、ゲームをどんな仕組みで作っているの? という話をします。

蒸気流工房の開発体制

現在、蒸気流工房では、隕石堀り達の星学と、国運の羅針盤の2つのゲームを扱っています。羅針盤リリース後は、Epiaが国際市場の実装等の機能開発、Tennanaが行動宣言部分の実装といった風に、記事で担当しているゲームの開発をしている、という雰囲気です。
AOMD-008-Slack.png
開発中の相談や、ソースコードの更新の通知はSlackで行い、週に一度、Discordでも通話でやりとりを行なっています。特にソースコードに共有については、有名でない方の設計図共有サイトBitBucket Cloudで行なっており、国運の羅針盤に関しては、本番環境の更新も同サービスを経由して自動的に行われるように設定されています。それぞれのゲームは、各自で取得して設定ファイルを置けば、Dockerを利用して自分でテスト環境を作ることもできます。こうした開発環境整備はTennanaの方で行なっています。

AoMDのシステム構成

まずは、雰囲気で次の図を見て下さい。
AoMD-008-System.drawio.png

定期更新型ゲームに限らず、Webで動くゲームというのは、コマンドや宣言を受け付け、結果を返すWebサーバーと、データを保存しておくためのデータベースを持っています。sakana-teikiさんのteiki-adventureがサーバーふたつの構成になっていますね。データベースは専用のソフトを使っているとは限りません、国運の羅針盤のデータはメモ帳で読めます。

そう言われると、上の図はなんだか多いように見えます……しかしやっていることは同じです。ちょっとだけ細かく分かれているのですね。リリース前に準備予定のものもありますが、大まかにみていきましょう。

AoMD-front

AoMD-frontは、プレイヤーのみなさんとのやりとりを担当します。行動宣言画面の表示、受付、あるいは結果の表示やログイン処理を担当します。Ruby on Railsという開発フレームワークでデータベースへの宣言の登録や表示を行い、TypeScriptという言語で書かれた入力フォームが皆さんに顔見せをします。ちょっと画面が使いにくいな……なんてことがあると、ここを修正することになります。現在は無料でアプリケーションを動かすため、Herokuというアメリカのサーバーに置いていますが、日本からでは表示がのんびりしているのが悩みの種です。

AoMD-Chronometer

AoMD-Chronometerは、登録された宣言内容を読み込んで、ゲームのルールに則って処理し、結果をデータベースに保存します。Kotlinという言語で書かれており、「船は発電機と推進器を持っており、電力をやりとりして推進力を作り出す」と言った、ゲーム世界とそのルールにもっとも近い作り方をしています。宣言と全然違う行動が起こったんだけど……ということがあれば、ここを修正することになります。

開発初期は、AoMD-frontに更新処理も実装していましたが、「画面に表示するためのルール」と「ゲームを進行させるためのルール」の両方がソースコードに混ざってしまい、とりあえず画面に表示したいだけなのにゲーム進行に気を使った作り方をしないといけない……なんて失敗がありました。

AoMD-MasterData

AoMD-MasterDataは、エンジンの種類や、ステーションがどこにあるかなど、ゲーム世界の設定データがまとまったものです。このデータは、front、Chronometerの両方で使いますが、元々のデータはGoogleのスプレッドシートで管理しています。スプレッドシートのデータを、各プログラムで扱える形式に変換、反映するのも、MasterDataの役割です。地球の大きさが木星並になってしまっていたら、ここのデータを直すことになるでしょう。

ソートコードと絵に描いた餅

さて、こうやって開発チームやシステムの話をすると、蒸気流工房は一緒にゲームを作ってくれる仲間を募集しています!!! と書かないといけないような職業病に駆られます。興味と勇気のある方は別途懇親会でお声かけください……いいえ、懇親会はありませんので、Twitterかメールが良いと思いますが、そこまでしなくても開発に関わってみることは可能です。実は、ゲームのネタバレになるMasterData以外、つまりAoMD-frontAoMD-chronomaterは開発途中のソースコードを公開しています。自分で開発環境を用意するための設定ファイルも、AoMD-dockerとして公開されています。
なるほど、進捗が出てないから急にこんな話し始めたんだなというのも丸わかりですが、長期的な目標として、サークルメンバーでなくてもちょっと画面を直したり、新しい機能を追加するといった、プルリクエストを受け付けられる体制を目指しています。現在は開発環境の作り方の説明がないので、できる人は同業者だと思いますが、「いまどのへん作ってるのかな?」「どんなソースコード書いてるんだろう」と気になった人は覗いてみてください。

もちろん、この記事が何を言ってるのかわからない、プログラミングなんて知らないよ〜〜って方でも、テストプレイ参加など世界に口を出してみる機会を用意していきます。特に開発メンバーはイラストがよわよわなので、ゲームのアイコンを募集・依頼することもあり得ます。気が向いたときに、なんとなくわかる範囲で、AoMDの宇宙を作り上げていきませんか?

この記事へのコメント