フォルダ構造
Runtime
├── Client
└── Extension
├── Auth
├── DiarkisNetworkManager.cs → 1. ライブラリ本体
├── DiarkisUID.cs → 2. UID を表すクラス
├── Character → 3. キャラクタ位置同期
│ ├── CharacterMoveData.cs
│ ├── CharacterSyncData.cs
│ └── DiarkisCharacter.cs
├── Data → 4. メッセージ送受信のメッセージタイプ
│ └── DiarkisMessageData.cs
├── Events → 5. イベントシステム
│ ├── Callbacks
│ │ ├── IDiarkisCmdEvent.cs
│ │ ├── IDiarkisCoreEvent.cs
│ │ └── Modules
│ │ ├── IDiarkisFieldEvent.cs
│ │ ├── IDiarkisGroupEvent.cs
│ │ ├── IDiarkisMatchMakerEvent.cs
│ │ ├── IDiarkisP2PEvent.cs
│ │ └── IDiarkisRoomEvent.cs
│ ├── DiarkisEvent.cs
│ ├── DiarkisEventHandler.cs
│ └── IDiarkisEvent.cs
├── Transport → 6. トランスポート層
│ └── DiarkisTransport.cs
├── Modules → 7. 各種モジュール
│ ├── DiarkisModule.cs
│ ├── DiarkisModuleHandler.cs
│ └── DiarkisModules
│ ├── DiarkisField.cs
│ ├── DiarkisGroup.cs
│ ├── DiarkisMatchMaker.cs
│ ├── DiarkisP2P.cs
│ └── DiarkisRoom.cs
├── Lib → 8. 追加のライブラリ
│ └── Serialization.cs
└── MonoBehaviour → 9. Unity 用の実装
├── Callbacks → 9-1. Unity 用イベントシステム
│ ├── DiarkisCoreEventCallback.cs
│ ├── DiarkisEventCallback.cs
│ └── Modules
│ ├── DiarkisFieldEventCallback.cs
│ ├── DiarkisGroupEventCallback.cs
│ ├── DiarkisMatchMakerEventCallback.cs
│ ├── DiarkisP2PEventCallback.cs
│ └── DiarkisRoomEventCallback.cs
└── Replication → 9-2. Unity 用レプリケーションシステム
├── DiarkisGameObjectWrapper.cs
├── DiarkisRepInstanceHandler.cs
├── Field
│ ├── DiarkisFieldRepManager.cs
│ └── IDiarkisFieldGameObject.cs
└── Room
├── DiarkisGameObject.cs
├── DiarkisRoomRepManager.cs
└── IDiarkisGameObject.cs
1. DiarkisNetworkManger について
DiarkisNetworkManager
はライブラリ本体を表します。
内部には以下のものがあります。
2. DiarkisUID について
クライアントを一意に識別するIDを表します。
3. キャラクター位置同期について
キャラクター位置同期関連のクラスが含まれます。
4. メッセージ送受信のメッセージ・タイプについて
メッセージ送受信の時にメッセージ・タイプを指定するクラスが含まれます。
5. イベント・システムについて
モジュール間の通信を担うイベント・システムを表し、DiarkisEventHandler
が本体となります。
内部にはイベント情報をため込むQueue
が存在し、 それを受け取る為のインスタンスを登録できるようになっています。
6. トランスポート層について
UDP or TCP による接続を表します。
7. 各種モジュールについて
DiarkisModuleHandler
が本体で、各種モジュールを表します。
内部に存在するクライアントライブラリの動作に合わせて、 上記イベントシステム(5.)のイベントを発火するのが主な役割になります。
他にも、一部データをキャッシュしたり、 クライアント・ライブラリの機能を補佐する役割もあります。
8. 追加のライブラリについて
データをシリアライズ(&デシリアライズ)するためのライブラリが含まれます。
9. Unity用の実装
このフォルダ(Runtime/Extension/MonoBehaviour
)以下には、 Unity に関する実装が含まれます。
9-1. Unity 用イベントシステム
イベントシステムを、Unity のコンポーネントとして実装したものになります。
9-2. Unity 用レプリケーションシステム
Unity を使った、キャラクター位置同期の実装例になります。
Room
とField
の機能に対応します。