マガジン

ゲームの画面演出:光・影・揺れの使いどころ

遊びをつくる

執筆にClaudeを使用しています。

異なる大きさの円を同じ進度で巡る玉で、時間に基づくゲームの動きを表したイラスト。
記事のテーマをもとに制作したAI生成イラスト。

ゲームの「気持ちよさ」は、グラフィックの精度よりも演出のタイミングと量で決まることが多いです。光が差し込む瞬間、影がキャラクターの足元に落ちる様子、画面が揺れて衝撃を伝えるシーン。どれも「なくても遊べる」ものですが、あるかないかでプレイの手応えが大きく変わります。 一方で、演出は使いすぎると視認性を損ない、プレイヤーの集中を妨げます。「光・影・揺れを入れたほうがいいのはわかっているが、どこに何をどの程度入れればいいかわからない」という悩みは、ブラウザゲームを作る多くの人が経験します。この記事では、三つの演出ごとに「機能として何をしているか」「どの場面で使うか」「やりすぎの境界線はどこか」を整理します。

この記事の目次
  1. 光の演出:情報の優先度を視覚で伝える
  2. 影の演出:奥行きと重さを画面に与える
  3. 揺れの演出:衝撃と緊張を体に伝える
  4. 三つの演出を組み合わせるときの順序
  5. 次の行動

光の演出:情報の優先度を視覚で伝える

光の演出が担う主な役割は「注目の誘導」です。画面上で光っているものは、光っていないものより先に目に入ります。この性質を使うと、プレイヤーが次に見るべき場所を言葉なしで示せます。

具体的な場面に当てはめると次のようになります。

  • インタラクション可能なオブジェクト:触れるとアクションが起きる扉・アイテム・ボタンなどをほのかに光らせると、「何かできる」という手がかりになります。常時点滅させるより、プレイヤーが近づいたときや一定秒数操作がないときだけ光るほうが、煩わしさを抑えられます。
  • クリアや達成の瞬間:ゴール到達・コンボ成立・レベルアップのタイミングに短い閃光や輝きを入れると、報酬感が増します。持続時間は0.2〜0.5秒程度が目安で、長くなるほど「早く次に進みたい」プレイヤーのテンポを遅らせます。
  • UIのフォーカス:メニュー選択中の項目を薄く光らせるだけで、現在地がわかりやすくなります。

やりすぎのサインは「画面の複数箇所が同時に光り続けている状態」です。光が多すぎると、どこを見ればいいかわからなくなり、演出が機能しなくなります。光らせる対象は、どの瞬間も画面内で一〜二箇所に絞るのが基本です。

CSSであれば box-shadow や filter: brightness() のアニメーション、Canvasであれば globalCompositeOperation の lighter を使ったレイヤー重ねで光の効果を作れます。WebGLを使わなくても、工夫次第で十分な光演出は実装できます。

影の演出:奥行きと重さを画面に与える

影は「物体がその場に存在している」という感覚を作ります。同じキャラクタースプライトでも、足元に小さな楕円の影を置くだけで、地面に立っている感が生まれます。この演出を「ドロップシャドウ」あるいは「接地影」と呼ぶことがあります。

影の使いどころは大きく三つです。

1. 接地感の表現横スクロールアクションやトップビューRPGでは、キャラクターの足元に薄い楕円を描くだけで「浮いている感」が消えます。ジャンプ中はその楕円を小さく・薄くすることで、高さの変化を間接的に伝えられます。アニメーションコストが低く、見た目の改善幅が大きい演出の一つです。

2. 奥行きの補助2Dゲームで奥のオブジェクトが手前のオブジェクトより薄い影を持つように設定すると、奥行きの階層が自然に見えます。厳密な3D計算は不要で、z-indexの大きいものほど影を濃くするだけで効果が出ます。

3. 状態変化の表現強い攻撃や爆発が起きるとき、その周囲を一瞬暗くする(影を広げる)と、エフェクトの前後のコントラストが強まって迫力が出ます。ダークネスフラッシュとも呼ばれる手法で、閃光演出の裏側として使われることが多いです。

影の「やりすぎ」は、影同士が重なって画面全体が暗くなることです。特にダークテーマのゲームでは、もともとの背景が暗い上に影を重ねると、オブジェクトの輪郭が見えなくなります。影はオブジェクトの色より明度を10〜20%程度下げた範囲に収め、背景と同化しないよう確認しながら調整します。

揺れの演出:衝撃と緊張を体に伝える

画面揺れ(スクリーンシェイク)は、物理的な衝撃や緊迫感を視覚と疑似的な体感で伝えます。爆発・着地・強打・地震・ボス登場といった「重い出来事」に短い揺れを加えると、プレイヤーは画面の向こうで本当に何かが起きた感覚を得ます。

揺れの設計でよく使われる判断軸は「強さ・持続時間・減衰の三要素」です。

  • 強さ(オフセット量)、目安:軽い衝撃:2〜4px、重い衝撃:8〜16px、失敗しやすい設定:常に20px以上 → 視認性が崩れる
  • 持続時間、目安:0.1〜0.4秒、失敗しやすい設定:1秒以上 → 酔いやすくなる
  • 減衰、目安:時間と共に振れ幅を小さくする、失敗しやすい設定:一定のまま終わる → 不自然に止まる

減衰を入れるとは、揺れが始まった直後が最も大きく、時間が経つほど小さくなって自然に収まることを意味します。JavaScriptで実装するなら、フレームごとにオフセット量に0.8〜0.9を掛け続けて一定値以下になったらリセットする、という単純な計算で再現できます。

揺れはモーションシックネス(画面酔い)に直結する演出でもあります。特に長時間プレイするゲームや、揺れが繰り返し発生するゲームでは、設定画面で揺れをオフにできるオプションを用意することが親切な設計です。アクセシビリティの観点から、プレイヤーが選べる状態を作ることは重要です。

三つの演出を組み合わせるときの順序

光・影・揺れを同時に使う場面(たとえばボスを倒した瞬間)では、重なり方が雑になると情報過多になります。実装の順番としては次の考え方が使いやすいです。

まず「揺れ」を入れて衝撃の発生を伝えます。次の瞬間に「光」が広がって達成感を演出します。その後「影」が元に戻ることで、興奮が収束したことを示します。この順番は「起・高・落」に対応しており、感情の流れを自然に作ります。

すべてを同じフレームで同時に発生させると、目が追いつかずに「何かすごいことが起きた」という漠然とした印象だけが残ります。0.05〜0.1秒のずれを意図的に付けるだけで、演出の輪郭が見えやすくなります。

また、演出を実装したら必ずゲームとして通しでプレイして確認します。コードの上では「適切な強さ」に見えても、ゲームのテンポの中で見ると強すぎたり弱すぎたりすることが多いです。数値を決め打ちで実装するより、変数として外に出しておき、プレイしながら調整する工程を設けることが確実です。

次の行動

今作っているゲームで「手応えが薄い」と感じる場面を一か所選び、そこに揺れだけを先に試してみてください。0.2秒・8pxの揺れを入れるだけでも、感触が変わるかどうか確認できます。演出は積み上げるより、一つ入れて確認する繰り返しで調整するほうが、過剰になるリスクを防げます。作ったゲームはアソバース(https://aso-verse.com)のようなプラットフォームに公開し、実際にプレイヤーから感想を得ることで、演出の効果を客観的に判断する材料を集められます。