aerial
architecture
すべてserver-side & C-S
金がかかりすぎる
cloud GPU renderingは今の所論外
GPU cloud & 5Gを待ちたい
CPU / physics -- Sv
継続的にやるには重い
P2P & C-S hybrid
client (master) = client(Unity) + WorldService(standalone binary)
client (peer) = client(Unity)
server = AccountService / Photon / Voice
リレー & persistenceに徹する (photon & 普通のAPIサーバー: AerialServer)
AerialServiceがユーザーの素性scoreを返す
photonで一番素性の良いclientにWorldServiceを割り当てる
WorldServiceはできるだけcloudでも動作可能なように設計する AerialServer: gRPC
AccountService
GetPhotonAuthCreds
ActivateAsset (blob_id, metadata)
ReportPerformance (world_id, user_id, stats)
PersistWorldState
WorldService (not real service; more like a library)
LoadState
Client --> WorldService
(object_id, Transforms)
P2: Relative-Trasnform Float Compression
WorldService0: Clientと不可分 / Unityの一部
rigid body physics
WorldService1: Unityと独立した可搬バイナリ
Execution Environment / Sandbox
CPU Sandbox --> Server Exec + Client Exec
Javascript - npm
webassembly (P2): better for future. Eventually replace JS.
esp. better with C# support
GPU Sandbox --> Client Exec
今は不要 (悪意ある人自身もクラッシュする)
ComputeShader使うには必須
コードかISAレベルで実行ステップごとにカウントして仮想的にcap/perf
lightweight VM for GPU
これだけで一分野作れるほどの余地はある
コンパイラ/VMのプロの人がやればほぼ0-overheadにできそう
-> WebGLはどうやってる? プロセス分離?
object systems
ワークフロー統合
Unityもそこまでいいわけではないが必要なメタデータがちゃんと完備されている
e.g. texture clip mode,
dynamic refresh from files
いろんなツール & アセット
ProBuilder / MeshBaker