ゲームの雰囲気を壊されないためのアレコレ
この記事は「unity1week Team-Up!! Advent Calendar 2023」10日目の記事となります。
■前書き
「自分の描いた絵がゲーム上で動かせるなんて!?すごい!」
「殺風景だった自分のゲームをこんな豪華な見た目にできるなんて!?
すごい!!」
unity1week Team-Up!!(長いので以下TUと表記)に入ってきた人たちが抱く動機の一つにこれがあると思います。
TUって何?って人は下記公式サイトを参照。この記事にたどり着いてる人なら知ってそうではあるが。
チーム製作という一つの大きいハードルはあるものの、それさえ乗り越えることができれば、自分の思い描いた通りの表現をゲーム上で実現できる。
TUというのはそれを実現するために生まれたコミュニティとも言えます。
さあチームを組んでゲーム製作。頑張って一つの作品を作り上げ、
公開することができました。やったね!
……おや、あなたが公開したゲームをとあるプレイヤーが遊んでいます。
……なんということでしょう。そのプレイヤーはあなたが想定していない
遊び方をしているではありませんか。
しかもそれはあなたが作り上げた世界観を悉く破壊してしまうような致命的な手法、即ちバグと呼ばれるものを駆使しているではありませんか。
例えそれが非人道的で慈悲のない非常な行為であったとしても、
それによってゲーム上で高いスコアを得られるのだとしたら、
プレイヤーはそれをさも当たり前のように使用します。
ゲームとはそういうものなのです。
あなたが一生懸命作り上げたものを破壊されてしまうというのは
見ていて非常に辛いものです。
そういうのが癖の場合ならともかく、そういった事態に陥るのは可能であれば避けたいところ。
……ということで本題です。
■概要
本記事では
バグが起こりやすい操作とはどういったものなのか
何をきっかけにその操作が起こり得るか
如何にしてバグを発生させないようにするか
といったことを簡単にまとめてます。
更にざっくりまとめると、
世界の壊し方を知っておくことで、自分の世界が壊されないように防止策を張れるようになる
というのが狙いです。
■対象読者
本記事はTUのアドカレということで、unity1weekでチーム製作することを
主に想定して書いておりますが、
根本的な話は個人開発のケースでも当てはまると思います。
また、情報を知るという意味では、非プログラマである
アートやサウンドの方も読んでおいて損はないと思います。
要はゲーム作ろうとしている人全員が対象です。
とは言え、ゲームの規模が変わればバグとの向き合い方も変わりますし、
ゲームをどこに提出するかでも評価のされ方は変わってくるので、
本記事で書いていることはただの一例として読み進めてください。
■どういうときに壊れるのか
ゲームの壊れ方は千差万別なので網羅することは出来ないのですが、
本記事ではコマンド入力を例に挙げます。
◆ボタン連打
ただ単純。特定のボタンが連打されるとき。
具体的には
攻撃ボタン
セリフのコマ送り
辺りが該当するでしょう。
これ単体で壊れることは少ないですが、アニメーションなどが絡んでくると、見た目と行動が一致しないなどが起こり得ます。
◆同時入力
複数のキーが押されたときの挙動は要注意です。
複数のキーをどのように押すかでもケースが分かれます。
◆特定のキーを押しながら別のキーを押す
移動しながら攻撃
通常攻撃しながらサブウェポンや必殺技で攻撃
といった行動例になるでしょうか。
アニメーション周りの整合性の確認が必要なのはそうとして、
それ以外の部分でどう影響が出るかはゲームによりけりなところです。
この辺りは実際に入力してみて問題がないことを確認しておくのが
いいでしょう。
◆二つのキーを(ほぼ)同時に押す
ジャンプと攻撃を同時に行う
という操作がイメージしやすいと思います。
この例だと、「地上↔空中」の二つの状態遷移があり、その二つの状態の間で攻撃しているのを想定します。
二つの状態の間って何やねんってなった場合は、それは即ち仕様が曖昧ということです。
それが「地上」なのか「空中」なのか、或いは「地上と空中の間」の状態が存在するのか、そういった部分をしっかり定義しましょう。
◆色々なキーを適当に連打
所謂レバガチャ。
何が起こるかは分からない。だからこそ確認はしておこう!
とりあえず簡潔に例を出すとこんな感じです。
他にも、マウスを使用する際の注意点やunityroom(厳密にはWebGL)特有の問題等色々ありますが、複雑な話になってくるのでここでは割愛します。書くのが面倒だからじゃないよ?
■人はなぜゲームを壊そうとするか
結論から言うと、一部の層以外は意図して壊そうとはしてこないです。
(一部の人は意図して壊そうとする。とも言う)
大抵は「何か適当に操作してたら壊れた」だと思います。
その「適当な操作」が思わぬバグを生み出す可能性があるわけです。
ではその「適当な操作」はどういった場合に行われるか。
具体例を見てみます。
◆暇を持て余している
長い待ち時間が発生すると、それを解消するべく人は遊び始めます。
(ここでの「遊ぶ」とは、「適当な行動をする」という意味)
例として
ゲーム開始までの待機時間が長い
シーン遷移の時間が長い
などがあります。他にも、
ストーリー物などにおける「既に見たシーンが流れる」も該当します。
こういうときは「連打」とか「レバガチャ」とかを行いがちです。
そしてそれは「入力を受け付けているか否か」問わず行われていると考えていいでしょう。
これの何が怖いかというと、
「本来は入力を受け付けない想定だったが、実は特定の操作のみ可能な状態になっていた」
というケースで大惨事を招く恐れがあるということです。
◆「操作ミスによるペナルティが無い」という操作性
例として、脱出ゲームなどは
「特定の場所以外はクリックしても何も起こらない」
という設計になっていると思います。
その場合、「とりあえず適当に色々なところをクリックしてみる」
ということができます。
同じような考え方で、
「その行動にデメリットが無い場合はとりあえず連打」
といった行動心理が働くわけです。
……とは書きましたが、よほどの精密操作でない限りは基本連打されます。
ちゃんとクールタイムが設けられていても、つい連打してしまうのだ……。
◆ゲームが難しい場合
クリアがそもそも難しいゲームの場合、プレイヤーは
「どうすればクリアができるのか」を探そうとします。
その過程で、想定されてない操作方法を編み出しがちです。
そしてゲームの難易度が高ければ高いほど、プレイヤーは
「ズルをしてでもクリアする」ということを躊躇わなくなるでしょう。
◆最適解を求めだす
そのゲームでより良いスコアを出すためにはどうすればいいかを考えだしたとき、プレイヤーは手段を選ばなくなります。
この辺りまで来るとプレイヤーは最早「デバッガー」になりだすので割と
どうしようもなかったり……。
■対策
◆適切な操作性になっているか
少し話は逸れてしまいますが、バグを発生させないために、
プレイヤーに対する操作の誘導が行えているかを確認してみましょう。
特に、先述した「暇を持て余している」「ゲームが難しい」などのケースはそもそもゲームに対する評価がマイナスに働く要素になり得ます。
バグ云々の前に、まずはその仕様が適切かを見定めてみましょう。
◆その対策は本当に必要か
身も蓋もない話ですが、全てのバグを完全に塞ぐことは不可能です!
(クソデカ主語)
「バグが無いことの証明」は即ち悪魔の証明ですので……。
当然、直せるバグは直すに越したことは無いのですが、
他の全てのリソースを割いてまで行う必要があるかといわれると、
一考の余地があります。
ゲームの魅せ方次第では、バグと共存することだって可能です。「共存」の定義も、魅せ方によって変わってくるところですが……ひとまず
具体例を見ていきましょう。
◆カワイイは許されるか
意外と許されると思います。(※個人的見解)
ゲームの雰囲気が可愛ければ、バグだって愛おしい存在になるはず。
バグ潰しに費やすリソースを雰囲気づくりに回してしまうのも一つの手だと思います。
逆に、カッコいい雰囲気を醸し出していたり、シリアス路線に走ったゲームの場合には違和感のほうが強く出てしまうでしょう。
真面目なゲームなら素直にバグ潰しも並行して行ったほうがいいでしょう。
結局はカワイイが正義!(※個人的見解)
◆そのランキングは必要か
有難いことに、unityroomにはゲーム内のスコアをランキングとして
登録する機能があり、しかも簡単に実装することができます。
ゲーム内スコアがある場合には積極的に導入するのがいいでしょう。
しかしゲーム内のランキングは時に争いを生みます。
その争いはプレイヤーに手段を選ばなくさせ、
その結果バグが露呈してしまうという事態に陥る可能性が高くなります。
そこで、かなり手荒い方法ではありますが、
敢えてランキングを撤廃することでプレイ時間を短くし、
プレイヤーにはゲームクリアという良い体験だけを与えて帰ってもらう
というスタンスにしてしまうのもありだと思います。
バグが認知される前にゲームが終了されればバグは無いも同然です。
万が一バグが露呈してしまっても、「まあランキングは無いし……」と
見逃されたりもします。
一方で、「ランキングがあればもっと良かった」となるケースも多いので、外すかどうかは慎重に考えましょう。
■まとめ
色々なことを書きましたが、
全部実践しようとしたらまずゲームは完成しません。
時には妥協することも大事です。
ゲームは完成されてこそです。まずは完成させましょう。
Done is better than perfect. とはよく言われるものです。
また、ゲームがどのように壊されるかは、実際に壊されないと実感できない部分でもあります。
一度は世界を壊されることを身をもって体験するのも大事かもしれません。
例え今回がダメだったとしても、それは次に活かせるのだから。
■最後に
この記事がいい!と思ったら
スキ!やシェアとかフォローなど、お願いいたします!!
って書くと実際に効果があると聞いた。