Engine続行するにはJavascriptを有効化してください。CIRCLE非ゲーム一連のPhoton製品と専用ライセンスオプションを思う存分お使いください。System)フレームワークです。予測/ロールバック方式を採用していて、アクションRPG・スポーツゲーム・格闘ゲーム・FPSなど、遅延の影響を受けやすいオンラインゲームに最適です。Quantumはクリーンなコードの記述に役立ちます。ECS)と、ビュー/プレゼンテーション(Unity)を分離し、ネットワークの実装仕様(内部的な予測/ロールバック・トランスポートレイヤー・ゲームに依存しないサーバーロジック)を管理します。Quantumエンジンアーキテクチャ概要。ゲームプレイとビューは完全に分離されます。Quantumは以下の要素で構成される最先端の技術スタックを実装しています。Serverプラグインなど)上で構築されています。決定論的システムでは、ゲームクライアントはプレイヤーの入力のみを交換し、シミュレーションは各クライアント上でローカルに実行されます。昔は、これにロックステップのアプローチが使用されており、各ティック/フレームのシミュレーションを更新する前に自分以外プレイヤー全員の入力が揃うまで、ゲームクライアントで待ちが発生していました。Quantumでは、ゲームクライアントは入力を予測することで自由にローカルのシミュレーションを進めることができます。高度なロールバックシステムにより、ゲームの状態を復元し、再シミュレーションで予測ミスを修正します。Serverプラグイン)で、入力遅延とクロック同期を管理しているため、クライアントがシミュレーションを進めたりロールバックしたりする際に、最も遅いクライアントに合わせて待つ必要はありません。決定論的な入力交換は、ゲームに依存しないサーバーロジックで管理されます。通信状況が悪いプレイヤーによって、通信状況が良いプレイヤーの体験が阻害されることはありません。Quantum製ゲームの、基本的な構成要素は以下の通りです。Quantumのサーバープラグイン:入力のタイミングと配信を管理し、クロック同期ソースとして機能します。利用者がホストするバックエンドシステム(マッチメイキング・プレイヤーサービスなど)と統合できるように拡張可能です。ゲームクライアントシミュレーター:Quantumサーバーと通信し、ローカルでのシミュレーション実行、すべての入力の予測/ロールバックを実行します。ECSを使用して開発する、独立した(Unityと分離した)ピュアC#のシミュレーションです。高性能なコードを作成するためのフレームワークに加えて、QuantumのAPIは、決定論的3Dベクトル数学・2D/3D物理エンジン・ナビメッシュ経路探索など、あらゆるゲームに使用できる広範囲の組み込みコンポーネント(データ)とシステム(ロジック)を提供しています。伝統的コーディングすべてのシミュレーションコードは標準で高性能でなければならないという前提の元で、Quantum内部システムはゼロから設計されました。ECSメモリモデルの組み合わせです。(すべての要素が、メモリアライメントされたデータ構造と独自ヒープアロケーターに基づくため、シミュレーションコード実行時にガベージコレクションは発生しません)これは、ビューのレンダリング(Unity)や、予測/ロールバック固有の予測ミスによって起こる再シミュレーションのために、CPUに十分な余力を残すことが目的です。レンダリングのためにCPUに十分な余力を残すため、Quantumはシミュレーションコードを出来るだけ高速に実行するように設計されています。(パフォーマンスのために)ポインタベースのC#を使用してはいますが、独自DSLと自動コード生成をうまく使用することで、開発者からは多くの複雑性が隠されます。ECSデータ構造(エンティティとコンポーネント)か独自のヒープアロケーター(動的コレクションと独自データ)に置かれ、常にBlittableなメモリアライメントされたC#構造体になります。Language)を使用してデータ構造を定義することで、パフォーマンスを重視した制約に縛られずに、ゲーム自体に集中できます。Active;}上記のコードスニペットは、対応する型(と明示的メモリアライメント)・シリアライゼーションのコード・(コンポーネントのような)特別な型のロジックを制御するボイラープレートを生成します。自動生成APIによって、開発者は、エンティティの反復・変更・生成/破棄などの包括的な機能で、ゲーム状態をクエリしたり変更したりできます。ビット列・コレクションなど)のような概念で表されるゲームの状態のデータ定義に対応しています。このゲーム状態を更新するためには、独自のゲームロジックを組み込む方法が必要になります。独自ロジックの記述は、システムで実装します。システムは、Quantumクライアントのシミュレーションループで毎ティック実行される、ステートレスなロジックの一部になります。}}システムのAPIには、ゲームループの実行順・システム間通信のためのシグナル(独自実装や、組み込みの物理エンジンの衝突判定コールバックなど)・イベント・その他いくつかの拡張用フックがあります。イベントシミュレーションはピュアC#で実装され、UnityのAPIを直接参照できません。ゲームプレイコードと描画エンジン間で通信するための二つの重要な機能として、イベントとアセットリンクシステムがあります。イベントは、シミュレーション中に起こった重要な事を、ゲームコード側から描画エンジン側へ伝える方法です。この一例は「キャラクターがダメージを受けた時に何らかの結果を伝える」ことです。前述したゲーム状態を使用して、キャラクターエンティティのResourcesコンポーネントのHealth値が、ダメージを受けて減少することを想像してください。ここでUnityのスクリプトから確認できるのは最新のHealth値のみで、何によってダメージを受けたのか・減少前の値はいくつかなどを知る方法はありません。DSLファイルでのイベントの定義は以下の通りです。Amount;}ゲームプレイコードでは、シンプルなAPI呼び出しでイベントを発生させます。c);}Quantumのイベント処理機構は、ティック更新完了後に、生成されたすべてのイベントを処理します。ここで、サーバー承認済み入力を必要とするイベント・イベントの繰り返し・シミュレーションでロールバックが発生した際のイベントのキャンセル/承認も管理されます。シミュレーションコード側から発生したイベントはその後、Unityのスクリプト側で作成されたコールバックによって実行時に消費されます。etc}アセットリンクUnityは、柔軟なエディタと洗練されたアセットパイプラインを備えています。Editorから編集できます。オブジェクトはその後、シミュレーション側に組み込まれます。これはプロトタイプ制作や、ゲームバランスの最終調整に必須となる機能です。開発者はC#のシミュレーション側のプロジェクトから、所望の属性を持つデータ駆動クラスを作成できます。MaxMana;}そして、レベルデザイナーはUnityで、このクラスのアセットインスタンスを必要な数だけ作成できます。各インスタンスには自動的にユニークなGUIDが割り当てられます。Editorから作成/編集できるプログラマーは、これらのアセットのデータをシミュレーション中に直接使用できます。data.MaxMana;これらのアセットは、DSL定義のコンポーネントで直接参照することも可能です。CharacterSpec;}決定論的ライブラリQuantumでは、すべてのクライアント上で、シミュレーションは同じ入力値を与えられたら同じ計算結果になる必要があります。API(ベクトルや物理エンジンなど)を使用することもできないということです。ゲーム開発者がゲームプレイコードを実装しやすくするため、Quantumには柔軟で拡張可能な決定論的ライブラリが含まれています。クラス/構造体/関数一式に加えて、DSLでエンティティを定義する際に直接使用できるコンポーネントなどもあります。使用可能なモジュールは以下の通りです。決定論的数学ライブラリ:float/doubleを置き換えるFP(固定小数点数)型(Q48.16)・FPVector2・FPVector3・FPMatrix・FPQaternion・RNGSession・FPBound2、安全なキャストやネイティブ型のパーサーを含む数学ユーティリティ。数学ライブラリはパフォーマンスを主目的として実装されていて、可能な限りのインライン化・ルックアップテーブル・高速な演算子が使用されています。2D/3D物理エンジン:高性能でステートレスな2D/3D物理エンジンで、静的/動的オブジェクト・コールバック・ジョイントなどに対応しています。HRVO衝突回避・Funnelアルゴリズム・さらに多くの機能を含みます。Tutorialから始めることを強く推奨します。このチュートリアルは、Quantumを始めるために必要な基礎のすべてが学べます。これはテキストも動画(英語)も用意されています。