i-school - 3Dトップビューアクション 設計を考える

3Dトップビューアクションの設計を考える


 Unityのバージョンは2021.3.xf1 以降にて製作を行う前提です。
 
 ゲームのジャンルは3Dゲーム、スマホでも遊ぶことができるアクションゲームです。

 基礎設計が出来上がれば、あとはモデルを自由に差し替えたり(キャラ以外のものに変更)、ステージ用の背景を変えたり、
新しいルールや機能を追加していくことでオリジナルアプリとして製作することも出来ますし、
自分の考えたアイディアを盛り込むことができれば、最終的にはポートフォリオとしていただくことも出来ます。(この教材を作っただけではポートフォリオにはなりません。)

 少なくても以下の内容について、詳細な設計を考えていく必要があります。

・ゲーム性(ゲームシーンとCanvasでゲームを製作する、スマホでの快適な操作、ゴールまでの目標、仕掛け作り、など)

・画面のデザイン(UIの配置、ゲームの世界観に沿ったUIのデザイン、など)

・必要なシステム・機能(プレイヤーのアクション、カメラの視点変更、など)

・演出(DOTweenによるアニメーション、画面のエフェクト、タイミングに合わせてエフェクトを作成する方法、など)

・ゲームのサイクル(ゲームの流れ、追加要素を設計して実装する、イベントの自動生成機能、アイテムなどの自動生成機能、など)

 それでは1つずつ設計を行っていきましょう。


・ゲーム性

1.ゲームシーンとCanvasでゲームを製作する


 3Dアクションゲームですので、今回はゲームシーンとCanvasとを組み合わせて製作するようにします。

 プレイヤーは左右前後に移動をし、障害物(敵など)を突破しながらゴール地点に向かって移動を行います。
目標地点までの間にはイベントの発生するポイントがあり、そちらに到達すると敵が出現したり、ギミックが作動します。

 この処理をベースにし、最終目標となるゴール地点まで到達し、ボスを倒す、あるいは制限時間内を生存することでゲームクリアとなります。

 プレイヤーの操作は面白いか、アニメーションと同期しているか、キャラクターのアクションは魅力的か、など、
アクションゲームならではのゲームの要素を考えていく必要があります。


2.スマホでの快適な操作


 スマホで遊ぶことを念頭に置き、シンプルな操作で快適に遊べるような設計を考えます。画面は横向き(Landscape)で考えます。

 1.画面左下部にジョイスティックを配置し、スワイプすることで移動する
 2.画面右下部に複数のボタンを配置し、タップでジャンプ・ダッシュ・攻撃の各アクションを実行する
 3.ジョイスティックやボタンのない画面上部にてスワイプを行うことで、カメラの公転回転・上下移動を行う

 主に1・2の操作だけでゲームを遊べるようにします。3はオプションです。
上記のような挙動でゲームが進行していくように実装手順を考えます。


3.ゴールまでの目標


 ゲームの構成は、ゲームフィールド内を上下(ジャンプ)、左右前後に自由に移動できる設計にします。
カメラはプレイヤーを常に画面の上方から映している、3人称トップビューでのカメラアングルを用います。

 移動する際の移動地点を考慮したり、例えば森の中を縫うよう移動したり、水面の上を移動したりなど、移動する際にもプレイヤーを楽しませる要素を考えます。
ゲームのカメラアングルやカメラワークで感動したことがあると思いますので、そういったことを思い出しながらゴールまでの移動地点を上手く考えていきます。

 この部分は製作後に、自由に設計を改良して追加してください。


4.仕掛け作り


 ゲームはステージを移動していくことで進行していきます。その道中にはイベントを発生させることで、
例えばアイテムを生成したり、敵を出現させたり、移動可能な岩場が出現したりするギミックがあったりすることで、プレイヤーが移動を楽しむための設計を考えていきます。
通常に移動しているだけでは見つけられない地点にアイテムを配置したりすれば、探索することを楽しみながらゴールへと到達することも目的の1つになります。

 機能的なデザインや有効性以外にも、無駄に思える要素がゲームを楽しくするということがありますので、そういった部分も合わせて学習します。
 

 

・画面のデザイン

1.UIの配置


 Canvasを利用してUIを表示します。ゲーム中のスコア表示、プレイヤーの体力、残り時間表示といったゲーム中に常時するもののほか、
ゲームクリア後のリザルト表示などを制御します。

 他にも必要な場合にはロジックも考えて設計し、画面へ追加していきます。


2.ゲームの世界観に沿ったUIのデザイン


 各画面のUIは常にゲーム中表示されていますので、そのデザインや、文字に使用するフォントの種類が見にくかったりするとユーザーは疲れてしまいます。
世界観に凝ったデザインもよいですが、見やすさ、読みやすさも一緒に考えて、バランスを保ちましょう。
そのためゲーム中に使用しているフォントもそのスタイルに沿ったフォントを採用しています。


<フォント例>

 

必要なシステム・機能

1.プレイヤーのアクション


 アクションゲームであるため、移動・ジャンプ・ダッシュ・攻撃といったアクションを用意します。
従来のキー入力に加えて、次世代のキー入力方法である InputSystem を採用し、新しいキー入力の方法の学習も行います。

 こういったユーザービリティはいつも考えて設計をする必要があります。
 

2.カメラの視点変更


 3D軸での移動になるため、移動の操作はジャンプ、左右前後移動になりますが、カメラの位置をプレイヤーが任意で回転させられるようにします。
ゲーム画面の進む方向を見やすいように切り替えることで、3D空間を活用した移動を実現します。

 カメラの視点が変化することによって、奥行きのあるステージ作りと見た目の変更を行うことでユーザー体験を豊かにします。


演出(エフェクト)

1.DOTweenを使用してアニメーション演出をする


 DOTween(ドットゥイーン)とは無料アセットの1つで、広く使われているTween(トゥイーン)系のアセットです。
Tweenとはゲームオブジェクトの途中経過情報を補間して表現することを言います。

 例えば、Aというゲームオブジェクトが現在の地点から別の地点に移動するに際し、その移動する間の情報を補間して表現することが出来ます。
この補間表現機能を利用することにより、様々なアニメーション演出を実装出来ます。

 またDOTweenには、この機能が終了するタイミングを待って別の処理を呼ぶことや、途中で補間処理を中断したりといったことも出来ます。
Transformコンポーネントに対しての補間機能が多くありますが、それ以外にも使用方法は多岐にわたります。

 特に今回は多くの部分でこの機能を利用します。


2.画面のエフェクト


 画面をフラッシュさせたり、暗転させたりといったものだけではなく、画像を一瞬だけ大きくしたりなど、画面を通じて行える演出はたくさんあります。
これらは場面に応じて適した内容のエフェクトを適宜いれていくことで、ゲームの臨場感や没入感が変わってきます。
BGM や SE も効果的に機能します。

 やりすぎず、少なすぎず、バランスを見ながら考えて実装しましょう。

 今回は要所要所でこの演出を追加しています。


3.タイミングに合わせてエフェクトを作成する方法


 今回のゲームでは無料のアセットのエフェクトをいくつか利用し、生成のタイミングや制御の方法などを学習します。
 
 プレイヤーが攻撃を行うと、プレイヤーの前方にエフェクトが生成し、SE を鳴らす
   ↓
 発射したバレットや武器による攻撃が敵にぶつかると、ヒットした部分にエフェクトを生成し、SE を鳴らす

 このように演出を設計し、その順番通りに動くように制御を行っていきます。


ゲームのサイクル

1.ゲームの流れ

 
 何回も繰り返し遊んでもらうような設計になっているため、ゲームクリア/ゲームオーバーになったら、
またタイトルに戻ってゲームを最初から遊べるようなサイクルを作成します。

 この部分については、複数のステージを作って、ステージクリア型のゲームにすることも出来ます。


2.追加要素を設計して実装する


 ベーシックなゲーム内容とゲームサイクルになっているため、ここには様々な要素を追加することが出来ます。

 例えば、ステージクリア制、アイテム要素の追加、障害物要素の追加、敵の種類によるスコアの変動など、
RPGのような成長システム面の機能だけでもかなりの追加要素が考えられます。

 それらの設計を行い、自分で考えた機能を実装してみましょう。


3.イベントの自動生成機能、アイテムなどの自動生成機能


<プログラムは同じでもデータベースで内容を自動的に分岐させる>
 ・プレイヤーが移動する
    ↓
 ・イベントの発生地点に到着する
    ↓
 ・イベントのデータをデータベースから取得して、そのデータを使ってイベントを発生・実行する

 このサイクルのみでゲームのプログラムは動いています。例えるなら、イベントのデータがゲームソフトであり、それを読み込んで実行するゲーム機器がプログラムです。
イベントのデータが毎回異なるため、ゲーム画面では違うイベントが実行されて、そのイベントに応じた種類の敵やギミックが指定された位置から生成されるようになっています。
こういったデータベースの機能や、プログラムの自動サイクル化による設計方法、それをゲーム内に活用していく方法を学習します。

 多くのゲームはこういったパターンで、自動化されたサイクルをロジックとして組み込んで動いているという、イメージをつかんでください。
プログラムはそれを可能にするための手段です。それを作成するのがプログラマーのエンジニアとしての仕事・役割になります。

 設計の項目については、以上になります。詳細については実装する際の手順内にて説明を補記していきます。
また、これら以外にも用意するべきものがあるのであれば、それらも考えておきましょう。



 以上でこの手順は終了です。

 => 次は 手順1 です。