👾

Unity認定Associateコースウェアの進め方 その3

2024/01/11に公開

こちらの記事の続きで、「Unity Certified Associate Courseware」(以降コースウェアと呼ぶ) の 6章 ゲームステージの構築 からの受講記録を残します。始めた経緯などは初回の記事をご参照ください。
2本目の記事を公開した後に体調を崩してしまい、2週間ぶりの更新となりました泣。今回からコースウェアで提供されているサンプルゲーム ZombieToys に関連した内容に入っていきます。序盤はコースウェア進めていくうえで気づいたことをメモ程度にまとめているだけなので、ある程度 Unity の知識のある方は ZombieToys 項目まで読み飛ばしていただいても構いません。

受講メモ

ピボットとしての Empty GameObject の利用

ゲームエンジンによる開発を進めていくと、シーン上に大量のオブジェクトが配置されていきます。途中で大きな修正などがかかると、大量のオブジェクトをまとめて効率的に操作する (移動や回転など) 必要性が出てきます。この時に便利なのが、 Empty GameObject を用いたピボット管理です。
非常に簡単で、Unity の Object 間の親子関係機能を利用して、シーン内のオブジェクトを幾つかまとめて Empty Object の子供としてやることで、移動や回転等を一括で行うことができます。

物理システムの理解

ゲームを含むインタラクティブシステム開発や高度映像制作には物理システムが必要不可欠です。当然Unityにも基本的な物理演算を簡単に適用するための仕組みが整っています。ここではそれらを簡単に見てみます。
まず、物理システムを利用するには、画面上部メニューの Component -> Physics から選択します。Unityでは2Dと3Dで異なる物理システムを用いているので、2Dの場合は Physics 2D を選択してください。余談ですが、通常の Physics は NVIDIA の PhysX を利用しているようです(NVIDIA GPUでなくても利用できるのかな?)

剛体物理 (Rigidbody の利用)

壊れた目覚まし時計のモデルがシーン中央に配置された状態を想像してください。

この時計に剛体特性 (Rigidbody) を付与するために、時計を選択して、Add Component から、Rigid Body を選択します。inspecter で Rigidbody のパラメータを確認できます。


Rigidbody には様々なパラメータがあります。例えば、 Use Gravity は対象のオブジェクトが重力の影響を受けることになります (おそらく Y方向への重力加速度が計算される?)。これらの詳細は Unityの公式ドキュメントから確認できます。

Rigidbodyを付与したところで、ゲームエンジンを起動してみましょう。オブジェクトが落下することが確認できると思います。

衝突検知 (Collider の利用)

Rididbody と同様に非常によく使う物理システムが Collider です。Collider Component を付与されたオブジェクトは、他の Collider を持つオブジェクトとの衝突を検知して、物理計算を行うことができます。基本的な衝突の検知は、シンプルな幾何的なプリミティブ(立方体や球、直方体、楕円体、平面等)を用いた交差判定によって行われているため、複数の単純な図形を組み合わせて、複雑な衝突判定を実現することができます。

ゲームレベルデザイン

現代のゲームには様々な種類があります。試しに MADE WITH Unity でゲームのカテゴリを調べてみたところ、23種類ものカテゴリに分類されていました。

これらのゲームにはどのような違いがあるのでしょうか。様々な要素があるかと思いますが、ここでは特に重要なゲームメカニクスとゲームレベルデザインに注目して見ていきます。

ゲームメカニクス

ゲームメカニクスとは、ゲームの心臓部分の要素やプロセスだけでなく、そのプロセスを実行するために必要とされるデータまでを含んだ、明確に指定されたゲームのルールです (引用元)。例えば、ゲーム内の物理法則やリソースの流れ、ステージや章などの進行プロセス、シミュレーションゲームにおける戦術や戦略、対戦型ゲームやネットワークゲームにおけるプレイヤー間のやり取りなどがゲームメカニクスにあたります。まさにゲームのコアとなる要素です。

ゲームレベルデザイン

ゲームレベルデザインとは、ゲームのステージ(面)を構成・設計する作業のことです。レベルデザインは、プレイヤーにゴールを与えることと、楽しいプレイ体験を与えることの2つの目的に不可欠でです (引用元)。これらは独立した要素ではなく、相互に強く関連しています。メカニクスに沿って協調的にレベルデザインを行うことで、作り手の考えている体験をユーザに届けることができます。
コースウェアでは幾つかのゲームを例に、メカニクスとレベルデザインの協調的な設計について簡単に説明しています。気になる方はぜひ購入して 6 章を見てみてください (再: Unityの回し者ではありません)。

ZombieToys

メインである ZombieToys の話に何とかたどり着きました。
以前も少し述べましたが、ZombieToysとは Unity Education が提供するチュートリアルの一つで、ゾンビとおもちゃのキャラクターを使ったシューティングゲームを作りながら Unity の使い方を学ぶことができます。

全体のあらすじは以下の通りです (引用元)。

In a bad dream, all your plush toys have become zombified. You are the sleeping boy or girl who finds themselves surrounded by these creatures and under attack — there is no escape, you must fight back!
訳: "悪い夢の中で、あなたのぬいぐるみがゾンビ化しました。あなたは眠っている男の子か女の子で、このクリーチャーに囲まれて攻撃を受けていることに気づきます - 逃げ場はありません。"

百聞は一見に如かずなので、こちら動画で大まかなゲームの雰囲気を確認してみるとよいと思います。

プロジェクトの準備

ZombieToysは、20個のチャプターに分かれており、各チャプターでゲーム開発に必要な様々なスキルや知識を学ぶことができます。例えば、スクリプトの基礎やアニメーションの制御、UIの作成やサウンドの設定などです。ZombieToys のプロジェクト自体はコースウェアとは独立しており、Unity Asset Store から無料でダウンロードできます(ZombieToys 1-20 - Unity Asset Store)。
上記のアセットには、コースウェアの1章から20章までのすべてのサンプルプロジェクトが含まれているので、コースウェアを受講している方は、自身のプロジェクトに追加すると効率的に進められると思います。

注意
コースウェア自体は少し前に作成されたものだからか、上記のアセットを導入して進めるという説明はありません。また、講座の中では、現在の章を進めるにあたって、具体的にどのファイルをダウンロードして、何を開けば良いのか、といった基本的な情報がない? ようにも見えます (自分が見逃しているだけかも?)。従って、本連載では上で紹介した ZombieToys 1-20 のアセットをプロジェクトに追加している前提で、できるだけ講座の指示に沿いつつ、分からない所は独自の方法で進めていく予定です。あらかじめご了承ください。

ZombieToys の仕様

ZombieToys の詳細はドキュメントとして公開されているので、誰でも見ることができます。コースウェア受講者だけでなく、ゲームの仕様作りを学びたい方などにもおススメです。

ここまでで、ZombieToys の大まかな概要が分かったと思います。だんだん楽しみになってきたのではないでしょうか。それでは、お待ちかねのゲーム開発に足を踏み込んでいきましょう。

ZombieToys のレベルデザイン

ZombieToys は1つだけのレベルで構成されています。

このレベルは子供部屋のような見た目の正方形の空間で、窓はなく、外に出ることはできません。また、床には、プレイヤーや敵の障害物となるおもちゃが散らばっています。
夜になると敵キャラクター達 (ZombieToys) がこの部屋の中で動き回りだし、プレイヤーがそれを退治するという設定ですが、その過程でプレイヤーがおもちゃなどの小道具の背後に簡単に隠れられないように、緻密に配置されているようです。
以下がレベルの鳥瞰図です。

レベル内には4種類のスポーンポイント (spawn point) があります。ゲームが完成すると、敵はこのスポーンポイントの中から、正確なタイミングで出現するようになります。各スポーンポイントは、図中の緑色の円で表示されています (下図)。

プロジェクトを試しに動かしてみる。

上記で紹介した ZombieToys 1-20 のアセットをプロジェクトにインポートすると、Assets の下に Unity Technologies というディレクトリが表れます。ディレクトリの中を見てみると、コースウェアの各章のサンプルプロジェクトが確認できます。

今はコースウェアの6章をすすめているので、Assets/UnityTechnologies/Chapter06.unitypackage を開いて、インポートしてみます。すると、Assets/Scenes の中に Main という名前のシーンが表れるので、開いてみましょう。Game view に以下のようなシーンが見えると思います。

6章ではプレイヤーや敵キャラはレベル上に見つからず、カメラの視点移動などもできません。ここからゲームに必要な要素を自分自身の手で実装していくことになりますが、今回はここまでにしたいと思います。
読んでいただきありがとうございました。

記事一覧

  1. 1章~3章:連載の背景 & コースウェアの購入の仕方など
  2. 4章~5章: アセット管理やマテリアル、シェーダの基礎
  3. 5章~6章: ZombieToysの仕様と開発準備について ←イマココ
  4. 6章: ライティングについて

Discussion