3分ゲーコンテスト参加の反省会。

はじめに

この文章は、ゲーム制作にかかわる人が自由な記事を作る Advent Calendar 2022 – Adventar の19日目の記事です。

18日目は、mrdagonnさんの「ゲームエンジンを乗り換えてきた思い出」になります。
自分もかなりゲームエンジンや利用APIとかを乗り換えていたので、この手の話は興味あるとともに長年ゲームを作れていなかったので、失敗談も結構あるんですよね・・・
今Unityベースの自作エンジン使ってるのもその反省を活かしてるところはあります。

ということで、この文章は、「1週間でゲームを作ってコンテストに参加した」際に考えたこと・作業および結果・反省点を見据えた今後の方針を記載するものです。

結構長くなってますがご了承下さい。

自己紹介

大体の方は初めましてです。MachiaWorksと申します。
「CryPic.」という多関節ボスと戦うのがメインの結構ガチめな2Dアクション・シューティングゲーム制作中です。

元々趣味で自作ゲーム開発するためプログラムを書いていましたが、
途中から同人音楽界隈で活動したりメガデモ+デモの音楽を作ったりと紆余曲折を経て、
今は全部継続中です。自分がもう一人欲しいレベル!

3分ゲーコンテスト参加のきっかけ

ばすからさんが3分ゲに参加されてるのを見て、

  • 前回(26回目)参加しそこねたなー参加したいなー(非開発者の頃から興味があったコンテストなのもある)
  • CryPic.(開発中の自作ゲーム)が量産体制に入ったので少し楽なはず
  • そもそもUnityベースの自作エンジンを作ったが、これをどう流用していったらいいのか、検証のためにゲームを一本作ってみる必要があるのでは

と考えたのでした。

間に合ったのか

間に合わせて提出しましたよ・・・
「救哭ノ鳥」というタイトルです。

救哭ノ鳥。 – MachiaWorks (machiaworx.net)

内容としてはあまり間に合ってなくて、予定より7時間遅れで提出、
改善点は色々あります。

ただ、アウトプットしないと見積もりも立てづらいので
今後も積極的にアウトプットしていきたいな、と思います。

開発時の手持ちリソース

  1. 開発中のゲーム「CryPic.」のエンジン
    元々汎用性を意識して作っているため、スクリプトを書き直すことで別の内容を載せることが可能。
    また、不足分はUnityの機能でオブジェクト追加等、エンジンの改修で対応可能。
    ただ、内容としてCryPic.を作りやすくするように構成しているため、一部モジュールが不要となった。
    よってモジュール削除(未使用)の修正を行う必要がある。
  2. グラフィック
    ほぼ再利用。
    自機だけ最初モデリングしてたけど中止。
    代わりに以前テストでシューティングゲーム作っていた時のものを再利用。
    他の爆発パターンや弾のグラフィックは再利用。
  3. 曲+効果音
    開発中のゲームの音を使い回す。
    今回曲の作り直しを予定していたが、トラブル等あり不可。
  4. 期間
    1週間しかないのがネック。

今回のゲームに必要な要素を抽出

  1. 自作のエンジンを使い回せるジャンル
    前述の通り時間がないのと当初の目的のため、ある程度出来上がってる自作のエンジンを使う。
    最初独自ルールのミニゲームを作り込むことを考えたが、自作エンジンを使うと制御が難しく大量に改修が発生することが発覚。
    改修項目の少ない2Dアクション・シューティングをベースに開発することになった。
  2. 3分で終わらせる
    コンテスト自体の縛りから、起承転結が3分で終わるようなゲームに仕上げる。
    このため、全体を3分で終了出来るシステムとし、その縛り以外はミス条件を緩和するのを目的にライフの増減を長期管理するルールにした。
  3. お話を書く
    3分ゲーコンテストが元々RPGツクール作品やAVG等が多かったりしたのもあり、
    STGに慣れてない人がプレイすることを想定して、まずお話をもってSTGをプレイするきっかけとしてもらう必要があると考えた。
  4. 難易度を低めにする
    3.に関連して、STGに慣れてない人を想定して作る関係上、あえてベタな配置にして撃ち落としやすくする。
    また2.に関連して積極的に撃ち落としてもらうための工夫もある。
    ただ最終的にダメージ設定を調整した結果、かなり難易度が上がったのは否めない。

(だいたい)1週間の軌跡

  • 0日目:ミニゲームを検討したがエンジン大改修が必要なため諦め、STGにした
  • 1日目:エンジン部分の改修、STG部分はできた(すでに画面上で動いてる)
  • 2日目:主にエンジン周りの拡張、メッセージ追加
  • 3日目:UIの修正、ミサイル攻撃の実装+問題発覚したためオミット、各種メッセージ作成
  • 4日目:仮タイトル作成、背景用意
  • 5日目:OP、ED、ED遷移用エフェクト作成、エンジン改修(ED演出へのスキップ)、BGコントロール
  • 6日目:敵配置開始、ボス2体分用意、攻撃の再実装(低速ショット)、OP/EDの機能実装
  • 7日目:EDの遷移演出を書く、ステージの調整、デバッグ、各種問題噴出、提出
  • 8日目(提出後):ダメージ時の減少ポイントを増加、前半ボスで長時間粘るとクリアできるようにした

最終日に出てきた問題

  • 内部的な問題。
    一部デバッグ命令が除去不可能。
    そのまま組み込んで対応。
    将来的には削除予定(同様のエンジン使ってるCryPic.C101版では削除予定)。
  • サウンド機能がほぼ未実装。
    発音自体は実装しているものの、ミキサーのバランス調整が不可能。
    また、スクリプトからの呼び出しやオブジェクト消去時の発音等自動制御が未実装なのが発覚。
    今回はスクリプトを拡張、スクリプトから発音できるようにした。またミキサーは実装予定。
    ミキサーは「ボタン押すと複数発動」「インタラクション」を分けて音量ボリュームを付ける予定。
  • BGの調整。
    シェーダを1から書いたが色調の合成で問題が出た。
    改修等真面目に対応する時間がないため演出を変更する形で対応。

結構仕様を切ったり変更したりが多かったので、
この規模だとあと1週間は必要。

作ってみてどうだったのか

  • シューティングで3分ゲーをつくることについて
    キャラバンみたいな形で載せる以外のアプローチは可能。
    短いお話を作ってマルチシナリオを展開させるというアプローチもできそうだと考えた。
  • エンジン流用について
    独自のルールを入れる場合、どうしても内部のロジックを修正する必要がある。
    このためにも期間は必要と思料。
    とはいうもののアクション・シューティングゲームであれば1-2日で動くものが作れるので、流用するのが有効という認識ではある。
  • 1週間で作れる規模か
    ある程度内容が作ってあるエンジンを使っても、困難。
    上述の通り、「3分=ケイブSTGだと2面程度のボリューム」になる。
    システム構築、実装、バランス調整を考えると2週間は欲しい。

反省を踏まえた作業と期間

見積もり可能な作業

  • エンジン流用-動作を確認する 1日-2日
    現状のエンジンで動くものを作る
    流用しまくる
  • OP-EDの流れを構築 1日
    スタートからクリア、リプレイまでの流れを構築する
  • OP-EDの素材作成 1日
    シーンをまたいで引き継ぐデータ等の決定

============================================

以降見積もりが困難

  • 仕様変更
  • エンジンの改修
  • 2Dグラフィック作成
  • 音楽作成
  • 効果音作成
  • テスト
    通しプレイ
    ミスした後の遷移確認
    ストイックなプレイスタイルで成立するか確認
    ラフなプレイスタイルで成立するか確認

いただいた感想

ふつうのSTGっぽい。

確かにそうなんですよね。
時間管理とライフは妙ですが、バランスは意図的に既存STGを3分でステージを切り上げるような作りにしてます。
普段おかしい設計のゲームを作っていたので、スタンダードなものも作りたくなりました。

今のところ手を加えるとするなら、以下の通りかと。

  • ラスボス追加(条件つき)
  • 被弾や最終ライフ等、リザルトとして確認できるようにする
  • エリアボスの攻撃を体力によって変更する
  • 3分を1分3回にしてラップタイム上の対応を競う形にする(別モードになるよね)

データや遊び方等の補足メモ

1.まずはクリアを狙ってみてください。

ただ、正直色々手を加えてしまったので、少し難し目になっているかと思います。
(バージョンを期間中に上げた際被弾ダメージが追加されたのでかなり辛い)
クリアが困難だと思ったら以下確認してみてください。

  • 雑魚敵が多いところは拡散ショット、ボスには集中ショットを当てると
    意外と早い段階で撃破できます。
  • 高次のエリアに進むほど敵の攻撃が激しくなりますので、
    そういう時は途中のボスの攻撃を避け続けるというのもひとつかもしれません。
    得点加算のうえクリアにはなります。
  • 被弾は避けてください。プレイヤーを狙ってくる攻撃は一部だけなので、
    それだけを対策対象とするだけでも変わります。

とは言いつつTwitterのTL見ると結構クリアされてる方が多い気がしてます。
ライフが2000程度あるとボス戦で40秒生き残れると考えるともうちょっと条件を狭めても良いのかも。

2.ポイント管理

敵は出てきたら即破壊が基本です。
そうしないと自分のライフが減り続けます。

ポイントの減少については以下の通り

  • 全体は1秒60フレーム前後で動作
  • 雑魚敵は2フレームあたり1ポイント減らす
  • ボスが出現している間は2フレームあたり2ポイント減らす
  • 被弾は450ポイント減少(現時点のバージョン)
  • 回復は10フレームあたり2ポイント

1秒あたり12ポイント回復します。ただ、雑魚敵は1体出てくると1秒あたり30ポイント減少、
ボスが出現している間は1秒あたり60ポイント減少します。
雑魚は複数出てくるので明らかに減少率が高いですし、
ボスは長期戦になるので、コンスタントに減ってくるので注意。

3.EDの遷移について

このゲームは3分でEDに遷移しますが、最終エリアに行かなくても途中のエリアで3分経過を確認できます
エリア3まで到達しない状態で3分が経過すると、特別ボーナスが入ります。(目立たない感じになってるので、こういう細かい要素を仕込むとしたら19XXのバグみたいに数年後見つかるのを覚悟しないとだめだなと思ったのでした)

大体のボーダーラインですが、
・エリア1ボス前でライフ9000-10000ポイント
・エリア2ボス前でライフ5000ポイントくらい
あれば前半エリアでのクリアも可能です。

ボスで粘ったときの時間を計算した結果、
・残り2分半からボスで粘ると減るポイント:7200
・残り1分15秒からボスで粘るとで減るポイント:3600
なので、上記ポイント+余裕があればクリアが見えてきます。

エリア3は敵の出る量を大量にしたため、クリアできない方はボスで弾よけを粘るとクリアできるかと思います。
(ただ前述の通り結構クリアされる方が多いみたいなので見積もりが甘かったなと思いました)

4.スコアリングについて

スコア要因は以下になります。

  • 走行点が入る
  • 後半面に突入すると走行点が上がる
  • ショットを敵に当てる
  • ボスを倒す
  • 破壊可能弾を破壊する
  • できるだけ前のエリアで3分経過する
  • ライフを多く残してED演出を見る(演出を開始した時点で得点加算)