Edwin Teoh

Security Surgeは、シングルプレイヤーの3Dパズルゲームです。プレイヤーは「サージ(Surge)」というアンチウイルスになり、未知の場所に潜むウイルス汚染からコンピュータを救います。マザーボードの5つの異なるコンポーネントに向かい、困っているデータ(DATAs)を救出するのが目的です。

各ユニークなDATAを戦略的に活用し、橋を作り、テレポートを使用し、閉ざされたゲートを開けて先へ進みましょう。
注意してください!ウイルスが環境内を徘徊しています。もし発見されると追いかけてきます。ウイルスに触れると、所持しているDATAが汚染される可能性があります。ウイルスを避けながら進むことが重要です。
このプロジェクトは、6人のプログラマーと2人のデザイナーからなる8人のチームで、約6か月間かけて開発されました。




役割
-
OpenGLバックエンドのセットアップ
-
デバッグボックス
-
メッシュレンダリング
-
-
アセット管理
-
アニメーションプログラミング
-
エディタとのインターフェース
-
カスタムコンパイラでFBXをメッシュ、スケルトン、アニメーションクリップに分割
-
貢献の詳細
デバッグ描画のAPIとバックエンドは私が設定しました。デバッグ描画では、バッチレンダリングを使用しており、複数の線を1回の描画呼び出しでレンダリングしてポリゴンを形成します。計画していたわけではありませんが、これはカスタム物理エンジンをテストする際に非常に役立ちました。

ゲームアセットがデザイナーによって作成され、ゲーム内でテストする準備が整ったら、assimpというインポーターを使用して、FBXファイルからアセットをロードし、それをエンジンやゲームに保存しました。
アニメーションの場合も同様で、アセットをロードするためにassimpを使用しました。この頃、レベル間でアセットをロードする際にボトルネックが発生し始めていたため、アセットマネージャーを実装し、エディター側にアセットブラウザーを追加しました。
同時期に、アニメーションのリターゲティングの基本的な概念、つまり同じメッシュで異なるアニメーションクリップを再生することに気づきました。各アニメーションFBXファイルには、メッシュ、スケルトン、アニメーションクリップが含まれています。同じメッシュとスケルトンを使用している場合、アニメーションクリップを入れ替えることで、さまざまなアニメーションを再生できる可能性があると分かりました。

アニメーションプログラミングの苦労したこと
アニメーションシステムの初期開発は3Ds Maxと一緒にテストされました。でも、3Ds Maxは骨のスケルトン構造に関して問題が多く、アニメーションにキーフレームを追加するためにBlenderに切り替えました。

デザイナーたちはエンジン内でテストするために多くのアニメーションを作成しました。しかし、俺が授業を終えるまで数時間待たなければならなかったため、ファイルをエンジンにインポートする手伝いができませんでした。この待機時間を短縮するため、アニメーションが正しく再生されているかを迅速に確認できるアニメーションウィ ンドウを実装しました。

いくつかのアニメーションは一度だけ再生する必要があり、いくつかはループで再生されます。さらに、エンジンのC#スクリプトはアニメーションシステムと連携する必要がありました。そこで、アニメーションシステムのUI側に状態管理システムを導入しました。これにより、デザイナーやプログラマーはアニメーションの状態を素早く追加でき、C#スクリプトはバックエンドの指示を通じて状態を制御できるようになりました。



コンテンツブラウザーとアセット管理
どのエンジンにもゲームのアセットを管理するためのコンテンツブラウザーとアセット管理システムが存在します。私たちには独自のコンテンツブラウザーがあり、以下の操作を行うことができます:
-
アニメーションアセットのインポート
-
FBXメッシュのインポート
-
以前にインポートしたアセットの削除
Unityでの経験を考慮すると、エンジンに実装したい機能は多くありましたが、実装された機能は、時間の制約と知識を考慮したうえで最良の選択でした。


新しいアセットをエンジンにインポートすると、それはコンパイラを通じてエンジン独自の形式に変換されます。これにより、ランタイム中にAssimpやSoilのようなサードパーティのライブラリに依存することが少なくなります。変換されたアセットは、その後コンテンツブラウザー内に保存されます。
以下にプロセスを示す図があります。

他のチームメンバー
Aloysius Quek Wei Jing - プロデューサー
Lee Yan Yi - コ・プロデューサー / デザイナー
Nazul Izuan Bin Abdul Hadi - デザインリード
Ryan Ong Kok Chin - テクニカルリード
Irfan Hidayat Bin Rosland - 物理リード
Benjamin Wong Zi Feng - エンジンリード
Jeroen Tan Yi Xu - グラフィックスリード