【Unity】ゲームをプレイしている時の待ち時間(ウェイト、間)の考え方
ゲームをやっていてロード時間が長いと「早く遊びたいのに!」とヤキモキしませんか?
そうかと思ったら、ロードが爆速過ぎてちょっと目を離した隙にいつの間にかゲームが開始していて、キャラクターがティウンしていた、なんてことも。
ゲームではこうした「ウェイト処理」、ちょっとかっこつけると「間」の使い方が鍵を握っています。
このページではゲームの間について考えてみたいと思います。
ロード中にヤキモキする原因
ロード中にヤキモキする原因は、いつロードが終わるか分からないからです。
例えば、なにか待たされるときに「ちょっと待っていてください」と言われるのと、「5分待っていてください」と言われるのでは印象が異なるはずです。
「ちょっと待っていてください」のケースだと、「いつまで待てばいいんだろう」と不安になってしまいますよね。「じゃあ本でも読んで待っていようかな」なんて思ったら急に呼ばれてあわあわしてしまったり。
「5分待っていてください」のケースだったら、あとどれくらいまで待てばいいか予想がつくので気持ちも楽になるはずです。その間に有意義に時間を使うこともできますからね。
これがゲーム中にも起こっているんです。
いつまで待つか伝える
ロードで待っている時間はプレイヤーにとってストレスになりやすいので、可能な限りいつ終わるのかを示すと良いでしょう。
単純に「Now Loading…」と表示するのもいいですが、プログレスバーを表示できるともっと良いです。
ドラクエ11だと、フィールドのロードで結構時間がかかってましたが、プログレスバーがあるおかげで多少気楽に待てました。
スマホのゲームだと、アプリ側のロードだけで済むならいいのですが、通信が入る処理の場合はちょっと難しい面もあります。というのも、プレイヤーのネットワークの状況によるので、なかなか「いつ終わる」と言いにくいんですよね。
その場合はロード画面をタップしたら星が飛ぶとか、キャラクターをクリックしたらジャンプするといったミニゲームを入れておくのもいいかもしれません。
何もできない時間がずっと続くのは、プレイヤーにとっては辛い状態なので、このようにプレイヤーの操作に対して動きがあると待っている時間も楽しめます。ロード中に連打する癖を持っているプレイヤーもいるでしょうから、ロードが終わるまでにどれくらい星を表示せられるか、みたいな独自の遊び方を編み出すこともあります。
心の準備の時間も
また、ゲームが急に始まるのを防ぐために、プレイヤーが心の準備をする時間が必要です。
アクションゲームで顕著ですが、ゲームの開始時には「Ready」の表示やカウントダウンの表示を出して意図的に待ち時間を作り、プレイヤーがいつ操作可能になるのかを教えています。ロックマンなどではステージ開始時に「Ready」を出して待ち時間を入れています。
余談ですが、ロックマンX5では「Ready」が消える直前にジャンプしないと穴に落ちてティウンする鬼畜ステージがありました。やったことのある人なら共感してもらえるかと思いますが、ボルト・クラーケンステージの冒頭は初見だとまず引っかかりますよね。
プレイヤーが状況を把握する時間というのは快適なプレイングのために必要なものなので、ある程度心の準備をする時間をとっておいた方が親切です。
逆に放っておいてもゲームオーバーにならないRPGなどではロード終了後にすぐ操作できるようにしてもさほど問題はないでしょう。このあたりはゲームの特性に合わせて「間」を入れるといいですね。
ロードは速い方がいいけれど、プレイヤーに心の準備をしてもらう時間も必要。どこで待ってもらうのか、「間」の使い方ひとつでプレイヤーの印象が変わります。
キャラクターを心情を表現する「間」
これはノベルゲームやRPGなど、キャラクターが会話するテキストのあるゲームで気をつけたいポイントですが、キャラクターの心情を表現するための「間」も必要になります。
どういうことかというと、キャラクター同士の会話では淡々とメッセージを進めるとシステム的な冷淡さが出てしまいます。なんらかの会話があって、その言葉に対するリアクションとしてキャラクターが何かを思う時間というのがあると、より人間的な会話シーンになっていきます。
また、話題の区切りという意味でも「間」があると良いでしょう。ひとつの話題が終わったタイミングで会話ウィンドウをいったん非表示にして、短い「間」(0.1秒とか)を入れてから再度会話ウィンドウを表示するようにすると、区切りがわかりやすくなります。
プレイヤーが操作する部分の「間」に加えて、会話シーンでも「間」を表現できると心に刺さるゲームが作れるんじゃないかと思います。
コルーチンで「間」を表現する
Unityで「間」を表現するときにはコルーチンを使うと簡単です。
コルーチンでは「yield return」を使うことで、その場所で処理を中断することができます。どれくらい中断するかも指定できて、
- WaitForSecondsで指定秒数待つ
- nullで1フレームだけ待つ
- WaitForEndOfFrameでそのフレームの終わりまで待つ
- 別のコルーチンの終了を待つ
といったように間の作り方は複数存在します。
例えば1秒処理を待ちたいなら、以下のように記述します。
これにより、1秒間処理を待った後に後続の処理を実行するようになります。ノベルゲームやRPGならそれ用のエンジンを使っていることも多いかと思うので、そのエンジンに実装されているウェイト処理を使うようにすると良いでしょう。
まとめ
ゲームには待ち時間がつきものですが、プレイヤーにストレスを与えないようにするのが大切です。
ロードはなるべく早く終わらせるのが理想ですが、いつ終わるのかをプレイヤーに知らせたり、待っている間に退屈させない工夫を入れるとよいでしょう。
ロードが終わった後は、プレイヤーが操作できるようになるまでの心の準備時間を用意しておくと丁寧です。表示された画面を見て状況を把握する時間を設定しましょう。
ノベルゲームやRPGなど、キャラクターの登場するゲームであれば、そのキャラクターの心情を表現するためにも「間」が使えます。Unityで「間」を入れる場合はコルーチンを活用すると便利です。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】TextMesh ProでOutlineなどの設定を複数保持する方法 2020.07.12
-
次の記事
今更だけど好き勝手妄想した真女神転生1の感想記事のまとめ 2020.07.13
コメントを書く