メカアセンブル×ローグライトを作りました。
敵の群れをブーストで回避しつつ、弾を自動発射し、ボスを倒してステージをクリア。
ステージの合間では、重量を気にしながら武器をアセンブルする。というゲームです。

前回は移植について話した。
Codex(Plusプラン)くんのおかげでPhaser.js 3からGodotへの移植が終わって、一通りプレイできるようになっても、まだまだやることがある。
まずやらないといけなかったことは、テンポの調整と、itch.io版との差別化だ。順を追って話そう。
元々の仕様としては、1つの設計図アイテムを拾うたびに、選択肢(カード)が出てくるというものだった。 正直、設計図アイテムが落ちているところを通ろうとすると、そのたびに確認を噛まされて、めちゃくちゃにテンポが悪かった。2つ以上落ちていると完全にゲームが止まる。
そこで、経験値方式にして、設計図をいくつか拾うと選択肢(カード)が出てくるという仕様にした。
アセンブル画面も同様で、歯車アイテムを拾って、Shiftを押すとアセンブル画面が開くのだが、このShiftを押すという部分が理解できずに、初期装備で敵に突っ込んで死ぬプレイヤーがかなりの数居た。
ゲームとして成り立たせるため、設計図で開発した武器を「開発&装備」として直接装備できるようにした。また、お金が足りないなどの理由ですぐに装備できない武器を1個予約状態にし、お金が足りると同時にShiftで装備できるようにした。
これはテストプレイをやってみて分かったことだ。ゲーム開発では、テストプレイをやってみないと分からないこともたくさんある。
既に無料のWEB版(デモ版)があるのに、Steamで売ることができるのか?
できる。できるのだ。
とはいえ、何らかの追加機能が必要だろう。そう考えているときに、友人が面白い技術を使ってオンラインプレイを実装しているのを見かけた。
技術としてはpeer-to-peer、Steam Relay(スチームリレー)を使ったIP(アイピー)公開無しのRPC(リモートプロシジャーコール)だ。専用サーバーは無し。4人分の計算の負荷は部屋を作ったホストプレイヤーに任せる形になる。というわけで、最大4人での協力プレイを実装した。
ベータ版を配布してのテストプレイでは、おおむね好評だったが、致命的なバグもあった。あまり乗り気でない家族にもテストプレイを頼み、なんとかバグを潰して完成までもっていった。
Codexくんはいきなり命令を出すと、思い込みや変な仕様でコードを書き始め、作業が全て無駄になることも多い。
そこで、md(マークダウン)ファイルに「仕様をまとめて」と指示し、そのマークダウンをざっと確認した後、変更されたマークダウンにもとづいて実装を行うように指示を出すことにした。
日々の作業は、「CHANGE_LOG.mdの末尾に今日の作業を追記して」として必ず残すようにした。
これはAIが突然フリーズしたり、バージョンが上がったりしても続きの作業ができるようにするための処置で、のちのち非常に役に立った。
Codexくんはなかなか賢いが、自分で書いたコードを疑ったり、バグを発見したりするのがあまり得意ではない。
そこで、Codex 5.4中を用いてコードを書き、Codex 5.5中(開発中の最高性能モデル)を用いてデバッグをする、という役割分担を行った。
5.4くんと5.5くんは別のAIとして動くようなので、情報はシェアされない。従って、バグがあるという情報を与えた場合に、「自分が書いたコードは正しいはず」と自己正当化に走ることが無い形でのデバッグができた。
Steamで出すにあたり、主要9言語への対応を行った。
i18nという技術を用いて、ゲーム内の全てのラベルや文字列をjsonファイルへと移していく。それと同時に翻訳を行う。これも5.4中にまずやらせ、5.5中でレビューするという2段構えとした。
ストアページ作成では、各国語の売り文句や、各国語のスクリーンショットを要求される。
カプセルアートなどのアセットやストアページは頑張って作ったが、PV(プロモーションビデオ)作成のノウハウが無く、予定よりかなり遅れてしまった。
もう少し頑張っていればウィッシュリストの増え方もかなり違っていたのかもしれない。反省点の多いストアページ公開であった。
こうやって開発ログという形で開発の裏話を公開することが出来たことを、嬉しく思う。アーカムソフトではどんどんゲームを作って世に出していこうと思っているので、また開発ログを書くこともあるだろう。
では、また次の記事で!
