アーキテクチャ(構造)の概要

From Neos Wiki
Jump to navigation Jump to search
This page is a translated version of the page Architecture Overview and the translation is 100% complete.
Other languages:
English • ‎日本語

Neosは新しいエンジンアーキテクチャ上に構築されており、追加の作業を必要とせずに、リアルタイムネットワーキング、永続性、相互運用性を確実に保証します。コアには、変数、参照、配列、辞書、ツリー、およびその他の一般的なビルディングブロックに相当するさまざまなプログラミング変数がありますが、ネットワーク上で自動的に複製または永続化できるように設計されています。エンジン自体はこれらのビルディングブロックから構築され、そのすべてのコア機能とコンポーネントへのアクセスと自動複製を提供します。

現在、ホストの単位は"ワールド"です。各ワールドは、他のクライアントが接続できる個別のセッションです。 Neosは、接続されたユーザーにリアルタイムでワールドとその変更を自動的に複製します。リアルタイムレプリケーションは、互換性を犠牲にしてネットワーク帯域幅だけでなく処理とメモリリソースを節約するように設計された非常に効率的なバイナリプロトコルを使用します。両方のクライアントが同じバージョンのコードを持っていると仮定します。

永続化のために、別のシリアル化モードが使用されます。これは、Neosバージョン間での前方互換性と後方互換性の両方のために設計されています。 Neosで保存されたワールドまたはアイテムはすべてこの形式で保存されるため、異なるバージョンのNeosで安全に開くことができます。各ワールドは、他のアセット(テクスチャ、メッシュ、サウンドなど)と同様に、URLで参照される単一のファイルに保存されます。

現時点では、テンプレートから新しいワールドを開始する場合でも保存したバージョンを開く場合でも、最初にワールドを起動したユーザーがホストになり、他のクライアントが接続します。 NeosにはNATパンチスルーサーバーがあり、クライアントはパブリックIPがなくポートを開かなくても最初に相互に接続できますが、その後の通信はすべてクライアント間で直接行われます。 NATパンチスルーが失敗した場合のフォールバックとして使用されるパケットリレーサーバーもあります。

ワールドは、ローカルハードドライブまたはクラウドに保存されると、ローカルマシンに保存できます。クラウドは、Neosの公式サーバー上の対応する"レコード"と同期し、シリアル化されたワールドデータ構造を表すアセットをアップロードしますテクスチャやメッシュなど、それが参照するその他のアセット)。アセットは重複排除されているため、複数の世界から同じテクスチャを参照することは、ユーザーのクラウドクォータに対して一度だけカウントされ、一度だけアップロードする必要があります。

各クラウドレコードにはアクセス情報もあります。デフォルトでは、ユーザーがサインインし、レコードがそれらに属している場合を除き、APIサーバーはレコードに関する情報の送信を拒否します。ワールドを公開すると、レコードはパブリックとしてマークされ、パブリックリストに送信できるため、ハブに表示されます。公開すると、他のユーザーがワールドを表すアセットをダウンロードして、その新しいインスタンスを開始できます。

新しいインスタンスが開始されると、そのセッションへの接続はすべて、永続化された世界を開いた人がホストするリアルタイム同期プロトコルを使用します。複数のユーザーが同じ永続コピーから複数のインスタンスを起動できます。ユーザーが対応するレコード(たとえば、ユーザーまたはグループに属している)に対する書き込み権限も持っている場合、実行中のインスタンスを保存し、以前の永続コピーを上書きして、そのレコードから開いている後続のインスタンスに影響を与えることができます。世界を所有していないユーザーはそれを上書きできませんが、世界で許可されている場合は、自分のコピーを保存できます。

Neosには、さまざまなソースからアセットをダウンロードできるアセット収集プロトコルもあります。アセットは一般的なhttp(s)およびftpサーバーに保存し、各クライアントから直接ダウンロードするか、Neosアセットストレージ(neosdb:// URL)にダウンロードできます。新しいアセットが最初にインポートされると、local://スキームを持つ一意のURLが生成されます。これらは、Neosサーバーを経由せずに、セッション自体内で完全に転送されます。

ワールドまたはアイテムを任意のクラウドロケーション(クラウドホーム、インベントリ、メッセージなど)に保存するとき、Neosは対応するレコードを作成し、local://アセットをNeosアセットデータベースにアップロードし、プロセスでURLをneosdb://に上書きします、元のホストコンピューターを実行してアクティブな接続を確立する必要なく、誰でもダウンロードできます。