Unity1Week「正」参加作品『正の性質、制するは神聖』ができるまで
Unity1Weekに『正の性質、制するは神聖』(以下、正性制聖)という作品を投稿しました。田きです。以下のリンクから遊べるので初見の方は是非プレイしてくださいね。
この記事では、正性制聖の製作を時系列に沿って、乱雑に説明していきます。制作過程はすべて書ききれないため、ハイコンテクストな部分が存在して読みにくいです。評価の見出し以降は頑張って書きます。
では目次です。
~0日目
Unity1Weekお題発表前にも、どういう事をしたいか?というのは考えるようにしています。今回の場合は、以下のようなことをしたいな~と考えていました。
インタフェースを用い、良い設計のプログラムを作成する
なるべくUnityの機能(UnityEngine名前空間の機能)を使わない部分と使う部分を分ける
UniRxやUniTaskの使い方を知るための実験作を作る
パーティクルをふんだんに使う
シェーダーで何かやってみる
超シンプルオシャレゲームでUnity1Weekの総合ランキングを狙う
かっこつけた組み合わせ音声を使いたい
など
このように、ゲームの評価の軸以外の軸を持つことが重要だと思っています。「評価がどうであれやりたいことはできたし!」と思う事が出来ますし、新しい事を試すきっかけにもなります。
もちろんすべてを達成できる結果に終わったわけではありませんが……
1日目前半
初日の0:00にお題「正」が発表されました。初日はお題を見て、軽くアイデアを考えてから寝るようにしています。強い方は軽く制作をしちゃうなんて話もありますが、私は睡眠が大好きですので軽く考えた後に睡眠します。
出したアイデア
「正」の形を生かしたゲーム
「正しい」行いをするゲーム
タロットなどのカードにおける「正位置・逆位置」を生かしたゲーム
これだけでアイデア出しを終了しました。というのも、三つ目を考えた時点でこれはかぶりにくいぞ!という謎の自信があったからです。
アイデアの元ネタ
正位置・逆位置というのは、タロットカードの文脈で使われる言葉で、カードの絵柄が正しい向きであるか、絵柄が逆さまであるかを示す言葉です。ただ、そもそもなぜ正位置・逆位置という言葉が出てきたかが多くの方の疑問であると思います。
正位置・逆位置のアイデアは丸々別の作品から借りてきました。その別の作品は以下のゲームです。このゲームは後から大いに参考にするので覚えておいてください。
アイデアが出たので初日は寝ました。
1日目後半
起きました。さて、アイデアは出たものの、どのようなゲームにするかはまだ決まっていません。どのような遊びをするかについて、アイデアの元ネタである『レシアの救済、永遠の夢。』も参考に考えました。そのため、私が当ゲームをプレイして感じたシステムを紹介します。
『レシアの救済、永遠の夢。』の考察
このゲームを簡潔に説明します。このゲームはSlay the Spireフォロワーのゲームのようです(私はSlay the Spireをプレイしたことはありませんが)。初期デッキがあり、バトル・宝箱。イベント・ショップなどでカードを集め、デッキを編成します。デッキは12枚です。カードにはコストと効果が設定されています。カードには、そのカードの正位置・逆位置に応じて効果の変わるものや、常に一定の効果を発動するもの、他のカードの位置を変えるものなどが存在ます。
バトルでは、最初のターンにコストを2もらえ、配られた手札(被り無し)で行動します。この時、敵の次の行動は表示されるため、プレイヤーは対策をした行動を選択出来ます。ターン終了したら、敵が多様な行動をします。その後、プレイヤーの手札が被らないように補充され、コストは前のターンもらった数+1もらえます(最大8)。バトルではカードのシナジーが重要で組み合わせ次第で莫大な効果をもたらします。
はっきり言って『レシアの救済、永遠の夢。』は面白いので、そのゲーム要素を分析し、生かすことにしました。
『レシアの救済、永遠の夢。』から持ってきた部分
初期デッキから、ステージを進むにつれてより良いデッキを作っていく
カードの組み合わせで強い効果を発動する
カード間に完全上位互換・完全下位互換は存在しない(ダークアルカナは考慮しない)
正位置・逆位置システム
このゲームの面白い要素は、ゲームが進むにつれてどんどんデッキが強くなっていくことです。そして、作った強いデッキを敵に試し、強さを実感します。また、単純にカードに優劣がつけられないため、どんなカードも活躍できます。また、カードの位置に応じて効果が変わってしまう事で、デッキ構築の奥深さを出しています。
こういった参考元の核となる面白さは丸々持ってくることにしました。
絶対に採用しないと決めた部分
宝箱・イベント・ショップ機能は実装しない、使用コストの概念は実装しない、敵は多様な攻撃をしない、などです。それぞれに採用しなかった理由はありますが、多くはUnity1Weekの規模感だと、実装に時間がかかること、実装できてもバランス調整がとても難しくなることが理由です。
オリジナリティ
しかし、これだけではただの劣化パクリゲームです。そのため、オリジナリティを出す必要があります。このゲームならではの要素として、2つの種類のカードを組み合わせ、合体した効果を発動する点、カードごとにボイスを付ける点をオリジナリティとすることにしました。
2つの種類のカードを組み合わせるアイデアは、昔作ってみたいと思っていたアイデアだったため、それをリサイクルする形で利用しました。これだけが採用理由ではなく、プログラム的にインタフェースを利用し甲斐がありそうである、技の効果処理部分はUnityEngineに頼らず実装してみる価値がありそうである、かっこつけたボイスを使えそうであるなど、複合的な理由です。
遊ぶ方に与えたい体験まとめ
以上の行いたいこと・実装したい点を踏まえて、遊ぶ方に与えたい体験をまとめました。……頭の中で。
種々雑多なカードを用いて、デッキ構築を楽しめるようにする
技の組み合わせを楽しめるようにする
スキル効果案を出す
ScrapBoxに、スキルの名前と効果をメモしました。こんな感じです。
なるべく数を多く出せれば、それだけデッキを作る楽しみが増加するため、20個を目処に作成しました。
この作業をしていたころ、カードに正位置逆位置が存在するのではなく、プレイヤー自身に正位置逆位置を持たせることでゲームを簡潔にしようと考えました。
実際に作成した部分
1日目に実際に行った作業は以下のツイートの通りです。
インタフェース(のうち、特に多態性の側面)を有効に使いたかったため、ゲームの内の効果の処理部分を最初に書きました。具体的には、C#のプログラムにて、二つの技を組み合わせて技の効果を発動できるようにしました。それをDebug.Logで表示したものとなります。
その実際は、スキルの効果部分のクラスとインタフェース、スキルの効果のインタフェースのインスタンスの組み合わせのクラスとそのインタフェースを作り、動作確認しました。
上の図のような構成にしました。スキルの効果(ダメージなど)を定義するクラス群を作成し、そのクラス群を用いて実際のスキル効果(2回攻撃など)を実装しました。
その際、どのようなスキルの効果も「Iスキルの効果」のようなインタフェースで実装することで、効果を読み込む側はスキル効果を抽象化できました。「Iスキルの効果」のインスタンスを集めたインスタンスも「I実際のスキルの中身」で抽象化することで、実際にスキルを処理する部分での記述が楽になりました。
初日はこれにて終了です。
2022/1/22 追記
リファクタリングをして、やっぱりクラス図は変わっちゃいました。実際のスキルの中身のインタフェースいらなくないか?となり、Iスキルの効果だけが生き残り、I実際のスキルの中身はIスキルのリストにとってかわられました。進歩に犠牲はつきものです。
2日目
2日目はひたすらコードを書いていました。
スキル効果案を実装する
1日目は最小限のインタフェースと、数個のクラスで動作確認をしただけです。そのため、クラス図で言うスキルの効果や実際のスキルの効果を実装していきました。
事前にインタフェースにて実装すべき内容を定義していたため、新しくスキルを作るのにはそこまで苦労することはありませんでした。また、回復効果を付け足す、正位置・逆位置を入れ替える概念を追加することになりましたが、実際にスキル効果を処理する部分は最終結果の適用のみで済みました。
なお、途中計算の状態を保存するクラスには変更が多く発生しました。
成果は以下のツイートの通りです。
スキルの数は20+20の計40個で、それぞれを組み合わせて実行できるようにしてみました。組み合わせの数が、20(プレフィックスのスキルの数)*20(技スキルの数)*2(プレイヤーの現在の状態)個あって、すべてを試すことはしませんでしたが、気になる部分については試すことが出来るようになりました。
折れた要素
実装しながら、スキルの効果の平等性について考えていました。20+20のスキルがそれぞれの特徴を持ち、生かせるようにしたいと考えました。
プレフィックススキルの効果としては、固定量効果上昇、倍率で上昇、状態変換が考えられますが、これだけだとどうしてもできることが限られす。システムを簡潔にしたいという思いもあり、やむなく完全上位互換のスキルが出現することを許容しました。
ゲームの内容が固まってきた
デッキは5+5枚、毎ターンデッキの5+5枚の中からプレフィックスと技が2枚出てくるので、二択からひとつづつ選択し、技を発動しようと考えました。
デッキ枚数が5+5というのは単なる直感です。深い理由はありません。ただ、カードゲーム的ランダム性を持たせるのであればそれなりにデッキの枚数は必要な事、カードの種類に大して多すぎても意味は無く、ただただ管理が大変なことなどから選んだ適当な数字です。
一方で、5+5に対して選ばれる2+2という数字はそれなりに考えています。特定のスキルが出現する確率は、40%という絶妙に信頼できないけど期待はしてしまう大きさです。さらに、特定のプレフィックスと技の組み合わせを期待すると、16%というやや期待は難しい確率となります。ターンは何回も経過する予定のためため、いつかは狙った組み合わせが引けるだろうという事でこの設定にしました。3+3では理想ムーブができる可能性が高まりすぎ(36%)、ゲームの単調化が予期されます。1+1では、運ゲーが過ぎます(試行回数がたくさんあるゲームなら良いですが)し、選択の楽しさがなくなります。
3日目
3日目はUnityエディタを触ったり、Monobehabiourのスクリプトを作成しました。成果は以下のツイートの通りです。
そうです、Unityエディタを触ったり、Monobihabiourのスクリプトはゲームの演出に強く影響する部分です。根幹となるスキルの部分は作成したため、それを使う表の部分を制作することにしました。
では、やったことを列挙します。
ポストプロセスの機能の確認
Unityにはポストプロセスの機能が存在します。その機能の確認を行いました。色々試し、ダークな世界観っぽいポストエフェクトができたので、それを使う事にしました。Bloom(画面のうち、輝度(?)が大きい部分をにじませ、まるで花が咲くかのように発光させるエフェクト)、Color Adjustments(色調補正)、Vignette(外側から、まるで視界が狭まるかのように特定の色をかぶせる)を利用しました。Bloomは攻撃演出などに使えればいいなぁと思い利用、Color Adjustmentsは全体的に青黒い世界にするために使用、Vignetteは暗い雰囲気の演出に使いました。
同時に、ShaderGraphにて、HDRで設定した色がBloomによって光ることを確認しました。
パーティクルの機能の確認
前作(Choose Your Bullet ~宇宙に爆裂を~)で作ったスプライトアニメーションを再発明しました。元のアニメは借り物です。
ゲームループの作成
以下のようなゲームの流れを想定していたため、それを半分実装してみました。実装した部分は太字です。
スキルが抽選され、表示される
プレイヤーがスキルを選択する
選択したスキルの効果を合体し、発動する
敵が攻撃するor敵が死んだらスキルゲット
プレイヤーが死んだらゲームオーバー
最初に戻る
この時ゲームループ管理用のクラスを作成しましたが、こいつは神になることを覚悟しました。
また、Updateを使う理由が無いため、Updateを一切使わないゲームループにしました。プレイヤーがスキル選択する部分を含めて再帰的に関数が呼び出されていく実装です。
スキルの効果説明ポップアップ機能の作成
Twitterの動画を見ていただければわかりますが、スキルをホバーするとスキルの効果が表示される機能を実装しました。たくさんのスキルが出てくるゲームのため、この配慮は必要であると思い、突貫で制作しました。突貫の割には結構いい感じだと思います。この機能のおかげで、記述されている効果と実際の効果が異なるバグを見つけやすくなりました。
UnityEditor上でイベントを設定するのではなく、IPointer〇〇Handlerを継承して、そこにホバーしたり離したりクリックしたりした際の処理を記述することで実装しています。
これの是非についてはよくわかっていませんが、UnityEditorをふんだんに使うか、C#スクリプトを活用するかに依りそうだと思います。
ゲーム内容の要素決定
特にゲームの目的などは決めてませんでした。そのため、いったん100匹の敵を倒すゲームにしようと考えました。
4日目
3日目の続きのような側面が強いです。以下のツイートをご覧ください。
この日行ったのは、ゲームループの完成、レイアウトの調整、ポストプロセスの値の調整です。後者2つは地味な事です。が、神は細部に宿ると強い方がおっしゃるので、少しでもプレイしやすさが向上するよう努力しました。また、新スキル獲得機能を制作し、想定していたゲームループの最低限を完成させました。
スキルの効果説明ポップアップ位置調整
今までは表示位置がやや適当だったり、端すぎたりしたため、その位置を調整しました。なるべく直下かつ、目に入りやすい場所に表示するようにしました。とはいえ、「頑張る」が端にあった場合は目に入りにくいのですが、そこに神はいないことにしました。
なお、この位置調整調整はC#スクリプトの上で、すなわちハードコーディングしていたので今思えば反省点です。ついついやっちゃいがちです。
レイアウト調整
3日目時点では、左半分がプレイヤーゾーン、右半分が敵ゾーンと考えていました。しかし、実際にはそれほど情報量が無い事、プレイヤーの情報は多いが敵の情報はごくわずかであることから、下の2/5程度は比較的変化の少ない情報ゾーンとしました。
敵やプレイヤー、その情報の位置はまだ模索中でした。
スキル獲得機能の作成
ゲームループのうち、敵を倒した際にスキルを獲得する機能を実装しました。新スキル作成の際にもスキル一覧が表示されるのですが、すでに作成した部分を流用できたので良かったです。
オブジェクト指向の意味での継承は使っておりません。継承は想定外の変更に弱いので、継承の安全な部分のみを抽出したインタフェースを使いましょうというのを徹底しています。 MonoBehaviourはUnityの核なので継承しますけどね。
5日目
例によって進捗は以下のツイートの通りです。
タイトル画面を作ったり、音を付けたりしました。また、敵のデータを作成しました。神を細部に宿らせる作業も少ししました。
スキル説明に色を付ける
今までスキルの説明は単色でしたが、「正」「逆」「ダメージ」「回復」「反転」といったキーワードに色を付けました。これにより、詳しく効果を読まなくとも、色からも情報を判別でき、技の効果を理解しやすくする効果を狙いました。Twitterの映像では一色ですが、これは進捗ツイートの後に実装したためです。
二つのモードの敵を作成
ゲームを制作する中で、100匹の敵を倒すだけだとハードであると感じました。そのため、ゲームのおいしい要素だけを味わえ、同時にチュートリアル的要素となるモードと、100階制覇の挑戦モードの二つを実装しました。
この二つのモードの切り替えは、神クラスのpublic staticな変数により制御されるので、お世辞にも良い設計とは言えません……
なお、敵データそのものはScriptableObject化して管理したのでそこまで悪くはないはずです。もっともその一覧は神が持っているのですが。
敵の名前やステータス、ドロップするスキルを入力するのに相当な時間をとられました。
技の効果の表示
今までは攻撃っぽい仮エフェクトと回復っぽい仮エフェクトが表示されるのみだったのですが、与えたダメージや回復した量、向きを変更したなら変更後の向きを表示するようにしました。これにより、技の効果やその威力がわかりやすくなりました。Bloomで光っているように見えるのもポイントです。
攻撃エフェクトにもBloomを
攻撃したときに画面全体が光るようにすることで、攻撃してる感を出しました。攻撃時に出る汎用エフェクトにHDRのintensityを設定してBloomの効果が乗るようにしました。
テストプレイ
敵を倒し、スキルを獲得し、また次の敵に挑むという遊びができたので、その遊びの流れを確認してみました。ある程度の面白さが確認できたため、これで行くことにしました。
プレイヤー敗北処理の追加
覚えてませんが、ゲームループの一つなのでこのあたりで実装したと思います。ちなみにそれ以前はステータスリセットして復活していました。
6日目
大詰めに近づく6日目です。例によって進捗は以下のツイートの通りです。
かなりたくさんの事を行いました。前日までとは画面が全くと言っていいほど変わりました。
プレイヤーのイラスト作成
元ネタの『レシアの救済、永遠の夢。』の元ネタの一つであるタロットの大アルカナの一つである『吊るし人』が元ネタです。というのも、姿勢が「正」の形に似ていること、ダークな雰囲気にマッチしていることなどが採用理由です。とは言っても、そこまで元ネタの面影はありませんね。姿勢と色程度でしょうか。
吊るし人については各自でググってください。
ウィンドウ探し
黒いウィンドウが使い勝手が良かったので使いました。使用元は、nc227684です。
エフェクト作成
すべての技のエフェクトが同じでは面白くありません。そのため、各技ごとに固有のエフェクトを作成することにしました。
当初はパーティクルやシェーダーを用いたエフェクトを作成しようと考えていました。しかし、時間的制約や見通しがつかないことから、円を光らせて、拡大縮小させたものを組み合わせて制作しました。
お世辞にも質は良いとは言えませんが、1技に1エフェクトあるため、新しいスキルを試す動機の足しになったのではないかと思います。
すべての技エフェクトや攻撃したときのエフェクトが光っているのには参考にした元ネタがあります。OCTOPATH TRAVELERという作品です。
技は光らせた方がかっこいいのでは?と思い、軽率に技のエフェクトを光らせてみました。
シェーダーで背景の作成
バトル背景やスキル一覧の部分に動きが無いと、死んだ画面になりがちです。そのため、シェーダーでちょっとした動きを作成し、それを背景としました。バトル部分はボロノイを4種類程度ブレンドして、上下は暗くしました。スキル部分については、ある程度あたりを付けて適当にノードを組み合わせていたらできたものを使用しました。
どちらも意識してみないと動いていることがわからない程度の量の動きですが全く動かないよりははるかに飽きない画面になったと思います。神は細部に宿るポイントです。
効果音の付加
攻撃したとき、回復したとき、正位置と逆位置が入れ替わったとき、スキルを発動したときなどに効果音を付けました。
これらのうち、何度も何度も聞く効果音については、毎回ランダムにピッチを微量ずらすことで、耳を飽きさせないようにしています。実際にゲームで遊んで、意識してみるとみるとわかると思います。カーソルを連続でホバーしたときの音や、連続で攻撃したときの音が顕著です。これも神は細部に宿るポイントです。
技を使う際の音も収録しましたが、正直納得のいっていない部分があります。さすがに時期も時期だったので許してほしいですが、まだこだわれるポイントでした。なお、Unityの機能のリバーブでごまかそうとしましたが、WebGLでは未対応の機能でした。詳しくはこちらを参照ください。
通しプレイ
一通りプレイすることで、楽しさチェックを行いました。
ここで判明した点は以下です。
効果音が良い
ゲームシステムが良い
新スキル獲得がガチャみたいで楽しい
攻撃している感・強くなった感が強い
インフレが楽しい
テンポが悪い
デッキの種類に幅が無い
特にした二つを何とかすべきという点が発覚しました。
テンポが悪いのは神のクラスを触れば良いだけなので改善可能です。
そしてゲームの楽しさの軸の変更
デッキ構築の種類に幅が無いのは当初想定している遊び方ではありませんでした。
スキルには少しだけ優劣をつけて、全体的にはどのスキルも使えるようにしたかったのですが、明らかに明確にどうみても上下関係がありました。
しかし、これが逆に面白さを生み出していました。幸いにも、ゲームが進むにつれて徐々に優れた使いやすいスキルが手に入るようにしていたため、先に進めば進むほどステータスとプレフィックスと技とで三次曲線的にダメージがインフレしていき、強くなった感を得られました。
さらに、序盤のボスを倒したときに、その地点では二回りほどオーバースペックのスキルを1つだけ報酬としていました。これは、これからはこんなスキルも手に入るんだぞ、という紹介のつもりでした。しかし、オーバースペック具合が想定以上でした。その結果、そのスキル獲得後はそのスキルが抽選される40%というそこそこ期待できる確率で訪れる無双タイム、無双を待つために今までのカードで戦う時間と、ゲーム中のメリハリが強調されました。ここで2日目に考えておいた確率の話が役に立ったのです。
はたして、このインフレの面白さを消してまで、20+20(厳密には15+15)のスキルに上下関係を付けないべきなのだろうか?と考えました。
最終的には、今のインフレの要素の方が当初考えていたデッキの組み合わせの模索よりも面白いという事で、各スキルは強さに差を付けました。
今まで実装していたスキルを一つ消し、ラスボス戦専用の、「聖の」というプレフィックスを作る程度にはインフレ設計に舵を変えました。
それでも芯は残したい!
上下関係を付けるといっても、特定のスキル群間には完全上位互換を作らないようにしました。また、特定の階層では特定のスキル群が入手しやすいようにしていました。そのため、似たようなスキル群の中からどれと交換するか?という組み合わせの葛藤は残すことができたのではないかなと思います。結果論ですが。
また、手持ちよりグレードが一つ上のスキルが獲得できた際に、手持ちのスキルのどれを手放そうか?という葛藤も残せたと思います。スキルの数が5+5というのもちょうどよかったと思います。結果論ですが。
ここで、遊ぶ人に得てほしい体験の再掲をします。
種々雑多なカードを用いて、デッキ構築を楽しめるようにする
技の組み合わせを楽しめるようにする
ゲームの楽しさの軸が変わっても、得てほしい体験は死守する事を意識しました。前者の楽しみ方が、多種多様なデッキ構築から、より明らかに強くなるデッキ構築へとシフトしました。
7日目
最終日です。進捗ツイートはありません。
攻撃時音声の導入
技を使った際、プレフィックスと技に応じてセリフを発するようにしました。これも最近では多くのゲームで採用されていますが、これまた特に参考にしたのはOCTOPATH TRAVELERです。
技名をそのまま叫ぶところが好みだったので、そのまま採用しました。
テストプレイ & 各種パラメータの調整
ずっとこれでした。適当に決めた敵のステータスを調整したり、プレイヤーのスキルの調整をしたり、エフェクトの調整をしたり、ポストエフェクトの調整をしたりと、今まで行ってきたことのチューニングを行いました。
何度も太字で書いていた神は細部に宿るという言葉、これがために、神を宿らせるための作業を見た目の面からも、ゲームのバランス調整の面からも行いました。
これを行った時の軸として、このゲームの達人である私が遊んで、飽きないか?違和感を覚えないか?というのがあります。
これを意識することで、ゲーム全体で常に何かしらの楽しみを得られているか、単調な部分は無いか、表記と効果に食い違いは無いか、動きが無い場所は無いか?などを見つける手掛かりとしました。
各階層の敵のHPや攻撃力を、脳内プレイではなく実際のプレイを通じて、適度に気持ちよく、適度に頭を使うようなバランスに調整することを心掛けました。
また、ゲームが理不尽なせいでクリアできないという事を避けるために、ゲーム中で重要な回復スキルは定期的に取得できるように設定しました。ストレスを避けるための細部の神の一つです。
深く考えて無かった軸として、このゲームの初心者が遊んで不親切に思う部分は無いか?チープな部分は?というのもあります。だいぶ不足していました。突貫でチュートリアル的なモードに文字による説明を行いました。とはいえ、ホバーで効果が表示される機能と、効果音のおかげで、触っているうちにどうすればよいかはわかるような作りになっているはず……と信じたいです。
そして投稿
投稿しました!
しかし、100階制覇をしてくださったプレイヤーはそこまで多くはありませんでした。そこで、バランス調整の必要があると思いました。
序盤のインフレバランス調整
まず、リリース直後、1回目のバランス調整後、2回目のバランス調整後のランキングやプレイ状況を見た主観的な難易度を図示します。
特に、100階層の前半である1~49階では強いカードが手に入りにくく、初期デッキにもあるお世辞にも強いとは言えないカードが出ることもよくありました。
それ以降は急激に強いカードが出やすくなるバランスでした。そのため、1~49階でより多くの種類のカードが出るような調整を施したり、50回以降の強力な敵を弱くする方向で調整をしました(1~50階まで難易度緩和の)。
また、100階攻略には製作者でも30分以上必要なため、オートセーブ機能の実装もしました。(提案してくださった方、ありがとうございます。)
二回目のバランス調整
その後も多くの友人のプレイを見たり、自身で周回してみたりしましたが、後半のインフレ速度がかなり急激とわかりました。そのため、70Fあたりでデッキが完成してしまい、蹂躙する楽しみも失せ、単調作業になってしまう場面が出てきてしまいました。そのため、敵のHPを多くしてHP管理やそれ前提のデッキ編成を考えてもらったり、オーバースペック過ぎる・便利すぎるカードを微弱体化してお手軽最強を避けてみたり、後半ステージの強いカードの出現率を下げたりしました。攻撃力上昇の期待値を下げたりもしました。
特定地点での理想デッキが組みあがった後は、新入りのカード選出確率20%を除いて80%は理想カードとなります。良いカードを使える確率は100%になり、最低限良い動きが可能です。これではワンパターンなので、徐々に徐々に理想カードがやってきて、完成前後で次のパラダイムのカードが来るように、という思いを込めました。また、ラスボスにしか使えないカードははっちゃけ過ぎていたので、最強の地位は残しつつも、ラスボス戦がなるべく壊れないように調整しました。
評価
全体の評価は発表されるまでわかりませんが、自信を持って書いていこうと思います。もし最終的な評価が悲惨だったら笑ってやってください。
自己評価
楽しさ ☆☆☆☆☆
絵作り ☆☆☆★
サウンド☆☆☆☆☆
操作性 ☆☆☆☆☆
雰囲気 ☆☆☆★
斬新さ ☆☆☆★★
楽しさについては自分が楽しいので星5です😀
絵作りについては、エフェクトがいろいろある点で☆4欲しいな~と思っています。しかし、こだわり切れなかったのでそこまでたいそうな評価は出来ません。
サウンドは細かいところこだわったのと、攻撃ボイス付きなので星5欲しいな~と思っています。
操作性は、操作の仕方さえわかれば特に文句は無いだろうという点で星4寄りの星5期待です。
雰囲気は最低限ポストプロセスかけた程度なので星3です。でも4を期待しちゃう。
斬新さは、ゲームのシステムを他ゲームから丸っと持ってきてるので星3です。(オリジナリティ部分を評価してくださる方であれば、もうちょっと高い評価を付けてくださるかもしれません。)
人気ゲーム6位!(他の方の作品を遊んだおかげ!)
ありがたいことに、unityroomの人気ゲームランキングに表示される量のご愛顧をいただきました。
これは、他の方の作品をたくさんプレイしたのが大きく影響しています。Unity1Weekの作品の中で上の方に表示されやすくしたり、相互プレイをしていただいたりしたためからの人気ゲームランクインです。ありがとうございます。
ゲームが面白いから載った、というわけではありませんが、多くの方にプレイ・評価してもらえるだけガワのあるゲームと信じています。
平均☆4の期待
頑張って製作したため、総合評価の平均4あると嬉しいな~と思っています。私は期待しています。自信ぐらい持ったっていいでしょ?
振り返り
雑に歴史を書いていたら、何を伝えたい記事かわからなくなってしまいました。そのため、現在はどう思っているか振り返ってみたいと思います。
ゲームアイデアについて
前述のとおり、ゲームの核となるアイデアは『レシアの救済、永遠の夢。』から持ってきました。正位置・逆位置で効果が変わるシステムも持ってきました。元ネタ(タロットカード)も一部使いました。バトルによって資産を獲得し、次のバトルで新たな資産を獲得する遊びのループも持ってきました。そのほか、具体的にも精神的にも様々な要素を持ってきました。
これらは、面白い要素を面白いまま持ってくることですので、悪くはなかったと思います。
とはいえ、持ってきたものをそのまま使ってはそれはただのパクリです。そのため、これらの要素を解釈し、アレンジする必要があります。
オリジナリティとして、事前に考えていた、二つのカードを組み合わせて一つの技を使う点があります。このゲーム唯一にして最大の点です。そして、このオリジナリティを引き立てるように持ってきた要素を活用しました。
プレフィックス系のカードには反転系が多く存在し、技カードは正か逆かで効果が大きく変わるようにしました。
『レシアの救済、永遠の夢。』では、カードは蓄えることができますが、正性制聖においては交換したカードは戻ってきません。バトル後の報酬カードを、現在のデッキのどのカードと入れ替えるかを、プレフィックスと技のシナジーを考えて選択しなければなりません。
と、既存ゲームの内容を自分なりにアレンジすることができたので良かったのではないかなと思います。
ゲームバランスについて
製作過程で目指していたゲームバランスは以下の通りです。
道中、最初は苦戦しつつも、だんだんデッキが揃って敵を倒すのが楽になっていく
体力は高い状態を保たないといけない(回復が重要)
ボス相手には、デッキが揃ってないとなかなか勝てない
ラスボス戦では、死闘の末、相手に最後に一撃を喰らうと負けるが逆にこちらもあと一撃で勝てるかもしれない場面にする(全力を尽くしてギリギリラスボスに勝てる)
どのカードにも使い道がある
しかし、リリース当時は以下のようでした。
序盤は手に入るカードがしょぼい
50Fを超えたあたりから一気に報酬が強くなる
デッキが揃うと、敵を気持ちよく蹴散らすことができるが、序盤は集まりにくく、中盤を過ぎるとすぐに集まる
体力は高い状態を保たないといけない(回復が重要)
大体のボス相手はそこそこのデッキで勝てるが、50Fのボスは相当準備しないと初心者には厳しい
ラスボス戦はわりと簡単。プレイヤーの火力のインフレで蹂躙可能。
(狙っていたカード群の他にも)カード間格差がみられる。
同時に、最終日前後のテストプレイで、カード間格差でプレイヤーの現在の強さにメリハリをつけたり、徐々にインフレしていく効果でプレイヤーに楽しんでもらおうと考えました。
そのため、以下のようなバランスになるように調整を行っています。
道中、最初は苦戦しつつも、だんだんデッキが揃って敵を倒すのが楽になっていく
デッキが揃うと、敵を気持ちよく蹴散らすことができる
オーバーパワーなカードで、敵を蹂躙できる期間を作る
体力は高い状態を保たないといけない(回復が重要)
ボス相手には、油断すると負けるけども、強力なカードで強力な攻撃を叩きこめば勝てる。
ラスボス戦では、死闘の末、相手に最後に一撃を喰らうと負けるが逆にこちらもあと一撃で勝てるかもしれない場面にする(全力を尽くしてギリギリラスボスに勝てる)
序盤報酬がしょぼかったので序盤報酬を改善し、50階のボスのみやたら強かったので弱体化し、スキル間にちょっとした格差を設け、ラスボス戦が良い戦いになるように攻撃力や最後のカードをデフレーションしたりと、様々な調整を行っています。
細かい計算をせず、ステータスや技を決定したのは反省点ですが、想定外の様子を逆に利用できたのは良かったのではないかなと思います。
ゲームの面白さについて
このゲームの核となる面白さは、一日目後半の部分で述べた以下の内容です。
種々雑多なカードを用いて、デッキ構築を楽しめるようにする
技の組み合わせを楽しめるようにする
これらはゲームのバランスが変わる中でも死守するようにしました。
前者について、当初はシナジー重視とし、カードの組み合わせを重視したデッキ構築にしようと思いました。インフレのバランスにしてからは、新しくて強いカードをどのカードと交換するか?という方向でデッキ構築をしてもらおうと考えました。
後者については、20*20すべての組み合わせの中だとたくさんのいらない子が出てきてしまう結果となってしまいました。ゲーム中でも100通り前後のの組み合わせしか有効でないと思います。それでも
とか
という感情は大事にするように効果設定をしました。
このゲームの細部神
度々神は細部に宿ると太字で書いていましたが、その神たちを紹介します。
効果音は毎回違う音が鳴る
技の名乗りは2パターンあり、交互に使われる
背景が微量動いている
プレイヤーと敵もやや動いている(正しくはカメラがリサージュ曲線で動いている)
ポストプロセスによる普通とは微妙に異なる絵作り
攻撃や回復などのテンポ
ホバーした際に表示される説明の位置
ゲーム中で詰みにくくなるように回復スキルはこっそり配布する
こういった点があるから、完全に動きのない場合をケアしたり、単調さを感じさせないようにしています。
プロの方であればもっとたくさんの部分に神を宿らせると思いますが、私はこれだけでした。他の方のゲームを見て、より多くの神を宿らせられるようになりたいです。
プログラムについて
最初のダメージ計算などの仕組みはUnityEngine名前空間の機能に頼らないようにしました。また、その部分にはインタフェースを作成し、疎結合となるように心がけました。
途中、一つのインタフェースにあまりにも多くのメソッドを定義した際には、SOLID原則のIを思い出し、本当にそれだけたくさんのメソッドが存在するべきか?を考え直し、複数のインタフェースに分割することもありました。成長を感じたので良かったです。
しかし、ゲームループであるとか、プレイヤーの状態とかはUnityEngine名前空間とC#の機能とを両方使う形となり、しかもインタフェースなども利用していないためかなり汚いです。
息をするようにUnity世界でもインタフェースなどを用いれるようになりたいですね。
製作過程について
今回はかなり順を追って制作していきました。事前にゲームの面白さを決めて、どんな技が登場するか決めて、決まったところはコーディングしつつ、次に作成すべき点を、今できている部分から決定し、最後にはブラッシュアップを行う、という工程です。ウォーターフォール気味です。最終日まで面白さを変えずに、そして、ゲームの面白さの核となる部分は守っていきました。
これができたのは、成長は戦闘中にという作品の制作過程が精神的に応援してくれたからです。
この作品は、事前に面白さをチェックして、それを実装していく(めちゃくちゃ圧縮した言い方)手法をとっています。そのため、事前に脳内や紙の上で面白いとわかっている作品はプログラムで実装しても面白い!という自信をもつことが出来ました。
最後に
『正の性質、制するは神聖』は、様々な要素を借り、それを実現するプログラムを書き、大胆でこそないがちょっとしたエフェクトや演出をこだわって入れた力作です。結構面白いと自負しています。自信を持っています。そんな作品が、どのような思考の元作られたか書いてみましたが、皆さんの参考になったでしょうか?なったのであれば幸いです。
これにてこの記事をおしまいにしたいと思います。
追記
評価の話
2022/1/9 20:00にランキングが発表されました!結果は以下の通りでした。
総合37位
楽しさ 4.216 (9位!快挙!すごい!)
絵作り 3.621 (ランキング外)
サウンド 4.112 (13位)
操作性 3.793 (44位)
雰囲気 3.862 (ランキング外)
斬新さ 4.06 (14位)
こっそりと、総合30位以内を目指していましたが、それは達成できませんでした。平均評価4超えると嬉しいな~とも書いていましたが、それも達成できませんでした。しかし、楽しさ4.216で9位という田き的にとんでもなく良い結果に終わったのは非常にうれしいです。絵作りや雰囲気も楽しさの評価に関わってくると考えると、ゲーム性と最低限の演出だけでここまで大きな評価を頂けたのは非常に非常に喜ばしい事です。
絵作りや雰囲気については、割と適当にポストプロセスかけたりShaderGraphでパターンを作ったりしただけです。こちらは逆にゲームの楽しさに引っ張られて、3.5よりも大きな評価を頂けたのかなと考えております。ありがたい限りです。
お題の話
タロットカードにおける「正位置・逆位置」でお題を回収する方は見受けられませんでした。唯一の発想という事で非常にうれしかったです。まさか予感が的中するとは思いませんでした。アイデアが独創的でかつ、ゲームの楽しさが大きいと非常にうれしいですね。
この記事が気に入ったらサポートをしてみませんか?