unity1weekで、「REVENGE! やみじゃんけん」というシミュレーションゲームを出品しました。
tomo-mana.hatenablog.com
今回も、参加したことで多くの学びがあり、今後のゲーム開発に活かせそうな教訓もたくさん得られたので、まとめておきます。
つくったもの
テーマ「Re」
作品「REVENGE! やみじゃんけん」
(Twitterタグ #ざわざわじゃんけん)
退廃的なムードの漂う、じゃんけんで闘うゲームです。
運要素もあるものの、勝つ回数でなくダメージで勝負が付くため、第一印象よりも戦略的にハイスコアが狙えるということで、初日から熾烈なハイスコア争いが行われるという、作者もびっくりな状況になりました。
本来、強さに差がない選択肢(いわゆる三すくみ)に対して、点数差が付くことで、どんな行動の偏りが創れるかという、少し心理的な検証のために作りました。
技術的には、メインループまでを早く組み、後からアニメーションを追加できる方法を模索していました。
制作過程
前回(9月)はボリュームを見誤って挫折したため、負け癖をつけないためにも、今回はやり切ることを第一目標にしました。
作戦・戦略
unity1week 5月、9月 に参加した時の教訓から
●ゲーム全体のループ→メインループ の順に作る
特に、後からチュートリアルを作ると大変なので、チュートリアルの枠だけ用意してから、ゲームのメインループを最速で完成させる作戦でいきました。
さらに、ゲーム企画書を書いた時の教訓から
●ゲーム性は先にシミュレートする
途中で迷いが出ないように、ゲーム性だけは開発前にシミュレートし、途中で手戻りなく完了でき、かつほとんど説明なく始められて、かつ最低限おもしろさも確保できるラインを見つけられなければ開発しない、と決めました。
懸念事項
なお、今回のゲーム、面白そうか(フック)の観点が足りないという懸念はあったものの、unity1week期間はフックまで考慮しないことにしました(本来致命的ではあるものの、検証したいことがすでにあったため)。
(参考:過去の記事)
tomo-mana.hatenablog.com
tomo-mana.hatenablog.com
tomo-mana.hatenablog.com
工程
日程:12/12(月)~18(日) 20:00公開
→平日2時間、土日6時間、期間中に1日休暇を取って8時間※、計28時間で完成させる目標にしました。
※本業で疲れも溜まっていたので、休息しつつunity1weekも進める予定で休みを取りました
day | date | 作業 | 備考 |
---|---|---|---|
1 | 12月 | UI | async/await+UniTask使い方確認 |
2 | 13火 | メインループ | 会社休んで作業 |
3 | 14水 | メインループ | 画面仮 |
4 | 15木 | アニメーション・BGM | ゲーム性確認 |
5 | 16金 | アニメーション・SE | - |
6 | 17土 | ランキング・Tweet機能 | - |
7 | 18日 | ロゴ・エンディング・敵イラスト・配色 | V1.0 22:30公開 |
8 | 19月 | 敵アルゴリズム(じゃんけん)・不具合修正 | - |
9 | 20火 | 敵アルゴリズム(ワイルドカード) | V1.1 アルゴリズム実装版 |
10 | 21水 | 敵アルゴリズム(修正) | V1.2 アルゴリズム改善版 |
結果的に2時間半遅れ、計30時間での公開になりました。
敵アルゴリズムの実装が間に合わなかったため、さらに2日(2時間×2日)かけ、さらにフィードバックをいただいた内容についてさらに1日(2時間)をかけました。
組んだコードは 3ファイル(ほぼメイン1ファイルで1500行+50行×2ファイル)、流用したコードは 7ファイル でした。
苦戦した点
最初の壁
技術的な話からで恐縮ですが、今回メインループを最速で作るため、async/await+UniTask
の使用を検討しました。
まだ使い方は分からないものの、おそらく2日以内に習得できる(できなければ諦める)と踏みました。
結果的に、AI Programmer の力も借りながら、使い方の要領をつかみ、会社を休んだ一日で、メインループを早めに組み上げることができ、期間内に完了できそうという目途というか実感が湧きました。
これまでコルーチンやデリゲートを学んできたことが理解の助けになったと思います(知らないと理解できないわけではない)。
素材探し・当て込み(雰囲気合わせ)にかかる時間
ゲーム性と、ゲームの雰囲気について、事前に方向性が決まっていたため、あとは雰囲気の合わせ込みに時間を割けました。それでも、BGM&SEの選定、キャラクター画像の選定と加工、アニメーションの作成などに少しずつ時間をかけることになり、2日半(5時間)かかりました。
期間を盛り上げるための機能
今回、複数の敵を登場させるつもりでしたが、リリース当日に間に合わないため、キャラ画像だけ先に組み込み、乱数で切り替えるようにしました。残りの時間はランキング機能に使いました。ランキング機能も搭載は初で、思ったより時間がかかりました。
敵アルゴリズム
検証したかったことの一つが敵アルゴリズムでもあったので、リリース後も作業時間を取ることにしました。
通勤時間でアルゴリズムの概要を設計したので、帰宅後はコーディングに集中でき、リリース2日後にはアルゴリズム組み込み版をリリースできました。
全体として、ゲーム性と表現に迷いが少なかったことで、期間内に作業を終えられたのはいい経験でした。(依然、フックの問題が残っていますが…)
得られたもの
●ゲーム性・表現の方向性が定まっていると開発が早い(拡張に迷いがない)
元々のTwitterタグに「ざわざわ」という言葉を入れたのですが、ご想像に漏れず参考にしました。
その他にも、いくつかのデスゲーム系作品の持つ雰囲気や特徴を少しずつ取り入れてゲームの世界観を構成することにしました。そうすることで、一から作るよりも、ここは素直に借りてみようかなといった いたずら心 が出て、比較的早く楽しく世界観の構築ができた気がしました。
●async/await+UniTaskは便利(ブロッキングコールが作れる)
これのおかげでメインループを Update() 内に for文 で記述でき、後からアニメーションも追加しやすいことが分かりました。
●リリース実績と自信
今回、負け癖をつけないためにも参加しましたが、今回は平日スタート、土日も予定が入っていて、フルで時間が使えない中でしたが、初回の1/3くらいの時間で完成できたことで、出来はともかく自信になりました。特に5月はゴールデンウィーク中ということで体調も万全な状態で時間もたっぷり使えたという環境の違いから考えると、半年で様々な試行を重ねて、技術的にレベルアップできたことを実感できました。
●フィードバック
また、まだあまりTwitter上でも交流が少なかった5月時と比べ、最近はフィードバックをいただく機会も増えたことで、先行でプレイして下さった方から感想や改善点を教えていただいたことも励みに繋がり、さらに迷いなく作業を進めることができたように感じました。
ゲーム性について
さて、ゲーム性について、相手の攻撃偏りが開示されることで自分の決定に影響がでるか、の検証でした。
始めてプレイした時の感想は、自分の手札に集中してしまって、相手の手札を見る余裕がない、というのが正直な感想でした。
難易度の調整を重ねていき、自分自身がこのゲームに慣れてくると、はじめて相手の手札と点数で自分の手札を決める心の余裕が生まれました。
そうすると、実はこのゲームは麻雀や囲碁、将棋のような「負け慣れる」事を前提にしたゲームに(意図せず)なっているのではないかという懸念が湧きました。
また、このようなフックの場合、初心者にとって相手の手札の情報は役に立たない、暗中模索の状態があって、だんだん負けていくことで、視界が開けてくるということが分かりました。(相手の手札を見えることは、中級者~上級者向けの情報)。
フックを何にしたかったかに基づいて、ゲーム全体を再設計する必要があるかもしれません。
(以上)