終止支援通知: 將於 2026 AWS 年 5 月 20 日結束對 的支援 AWS SimSpace Weaver。2026 年 5 月 20 日之後,您將無法再存取 SimSpace Weaver 主控台或 SimSpace Weaver 資源。如需詳細資訊,請參閱AWS SimSpace Weaver 終止支援。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
的主要概念 SimSpace Weaver
模擬或遊戲受到執行該模擬或遊戲的電腦限制。隨著虛擬世界的大小和複雜性不斷增加,處理效能開始下降。計算需要更長的時間、系統記憶體不足,以及用戶端影格率下降。對於不需要即時效能的模擬,這可能只會令人煩惱。或者,這可能是業務關鍵情況,其中增加的處理延遲會導致成本增加。如果您的模擬或遊戲需要即時效能,則效能降低一定是問題。
模擬達到效能限制的常見解決方案是簡化模擬。許多使用者的線上遊戲通常會透過在不同伺服器上製作虛擬世界的副本,並將使用者分散到不同伺服器上,來解決擴展問題。
SimSpace Weaver 透過空間除以虛擬世界,並將片段分散到在 中執行的運算執行個體叢集中,來解決擴展問題 AWS 雲端。運算執行個體可共同處理整個模擬世界。您的模擬世界顯示為其中所有項目的單一整合空間,以及連接至其中的所有用戶端。由於硬體效能限制,您不再需要簡化模擬。您可以改為在雲端中新增更多運算容量。
SimSpace Weaver 運作方式
您的模擬包含一個包含物件的世界。某些物件 (例如人物和車輛) 會移動並執行動作。其他物件 (例如樹木和建築物) 是靜態的。在 中 SimSpace Weaver,實體是模擬世界中的物件。
您可以定義模擬世界的邊界,並將其劃分為網格。您可以建立模擬邏輯,在網格的一個儲存格上操作,而不是建立在整個網格上操作的模擬邏輯。在 中 SimSpace Weaver,空間應用程式是您撰寫的程式,可實作網格儲存格的模擬邏輯。這包括該儲存格中所有實體的邏輯。空間應用程式的擁有權區域是空間應用程式控制的網格儲存格。
注意
在 中 SimSpace Weaver,「應用程式」一詞可以參考應用程式的程式碼或該程式碼的執行中執行個體。
![]() 您的模擬世界分為網格您可以將模擬世界分割為網格。每個空間應用程式都會為該網格中的單一儲存格實作模擬邏輯。 |
SimSpace Weaver 會為您網格的每個儲存格執行空間應用程式程式碼的執行個體。所有空間應用程式執行個體都會平行執行。基本上, 會將您的整體模擬 SimSpace Weaver 分割成多個較小的模擬。每個較小的模擬都會處理整個模擬世界的一部分。 SimSpace Weaver 可以在 中的多個 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體 (稱為工作者) 之間分配和執行這些較小的模擬 AWS 雲端。單一工作者可以執行多個空間應用程式。
實體可以在模擬世界中移動。如果實體進入另一個空間應用程式的擁有區域 (網格中的另一個儲存格),則新區域的空間應用程式擁有者會接管實體的控制。如果您的模擬在多個工作者上執行,則實體可以從一個工作者的空間應用程式控制移至不同工作者的空間應用程式。當實體移至不同的工作者時, 會 SimSpace Weaver 處理基礎網路通訊。
訂閱
空間應用程式的世界視觀表是自己的擁有權區域。為了了解模擬世界的另一個部分發生了什麼情況,空間應用程式會建立訂閱。訂閱區域是整體模擬世界區域的子集。訂閱區域可以包含多個擁有區域的一部分,包括空間應用程式自己的擁有權區域。 會 SimSpace Weaver 通知空間應用程式訂閱區域內發生的所有實體事件 (例如,進入、退出、建立、更新和刪除)。
![]() 空間應用程式的世界檢視空間應用程式的世界視觀表是其擁有權區域,這是世界網格中的一個儲存格。 |
![]() 新增訂閱區域的空間應用程式檢視空間應用程式使用訂閱來了解模擬世界的另一個部分發生了什麼事。訂閱區域可以包含多個網格儲存格和部分儲存格。 |
例如,模擬實體互動的應用程式可能需要知道實體遠超過其擁有區域的空間邊界。為了達成此目的,應用程式可以訂閱其擁有權區域的邊界區域。建立訂閱後,應用程式會收到有關這些區域中實體事件的通知,並且可以讀取實體。另一個範例是自動駕駛車輛,無論哪個應用程式擁有該區域,都需要在前方 200 公尺處看到所有實體。車輛的應用程式可以使用篩選條件建立訂閱,做為(AABB)涵蓋可檢視區域的軸對齊週框方塊。
您可以建立不負責管理模擬空間層面的模擬邏輯。自訂應用程式是在單一工作者上執行的可執行程式。您可以控制自訂應用程式的生命週期 (啟動和停止)。模擬用戶端可以連線至自訂應用程式,以檢視模擬或與之互動。您也可以建立在每個 worker 上執行的服務應用程式。在執行模擬的每個 worker 上 SimSpace Weaver 啟動服務應用程式的執行個體。
自訂應用程式和服務應用程式會建立訂閱,以了解實體事件和讀取實體。這些應用程式沒有擁有權區域,因為它們不是空間。使用訂閱是他們能夠了解模擬世界中發生情況的唯一方式。
如何使用 SimSpace Weaver
當您使用 時 SimSpace Weaver,以下是您遵循的主要步驟:
撰寫並建置整合C++應用程式 SDK SimSpace Weaver 的應用程式。
您的應用程式會進行 API 呼叫,以與模擬狀態互動。
撰寫用戶端,透過一些應用程式檢視模擬並與之互動。
在文字檔案中設定模擬。
將您的應用程式套件和模擬組態上傳至 服務。
啟動模擬。
視需要啟動和停止您的自訂應用程式。
將用戶端連接至您的自訂或服務應用程式,以檢視模擬或與之互動。
在 Amazon CloudWatch Logs 中檢查您的模擬日誌。
停止模擬。
清除模擬。
模擬結構描述
模擬結構描述 (或結構描述) 是 YAML格式化的文字檔案,其中包含模擬的組態資訊。 會在啟動模擬時 SimSpace Weaver 使用您的結構描述。 SimSpace Weaver 應用程式開發套件可分發套件包含範例專案的結構描述。您可以使用此作為您自己的結構描述的起點。如需模擬結構描述的詳細資訊,請參閱 SimSpace Weaver 模擬結構描述參考。
工作者和資源單位
工作者是執行模擬的 Amazon EC2 執行個體。您可以在模擬結構描述中指定工作者類型。將您的工作者類型 SimSpace Weaver 映射至服務使用的特定 Amazon EC2 執行個體類型。 會為您 SimSpace Weaver 啟動和停止工作者,並管理工作者之間的網路通訊。 會為每個模擬 SimSpace Weaver 啟動一組工作者。不同的模擬使用不同的工作者。
工作者上可用的運算 (處理器和記憶體) 容量分為稱為運算資源單位 (或資源單位) 的邏輯單位。資源單位代表固定數量的處理器和記憶體容量。
注意
我們先前將運算資源單位稱為槽。您可能仍然會在我們的文件中看到此前一個術語。
模擬時鐘
每個模擬都有自己的時鐘。您可以使用 API 呼叫或 SimSpace Weaver 主控台來啟動和停止時鐘。模擬只會在時鐘執行時更新。模擬中的所有操作都會在稱為刻度的時段內進行。時鐘會向所有工作者宣告每個刻度的開始時間。
時鐘速率 (或刻度率) 是時鐘宣告的每秒刻度數 (赫茲或 Hz)。模擬所需的時鐘速率是模擬結構描述的一部分。刻度的所有操作都必須在下一個刻度開始之前完成。因此,有效的時鐘速率可以低於所需的時鐘速率。有效時鐘速率不會高於所需的時鐘速率。
資料分割
分割區是工作者上共用記憶體的區段。每個分割區會保留部分模擬狀態資料。
空間應用程式的分割區 (也稱為空間應用程式分割區或空間分割區) 包含空間應用程式擁有區域中的所有實體。根據每個實體的空間位置,在空間應用程式分割區中 SimSpace Weaver 輸入實體。這表示 SimSpace Weaver 會嘗試將空間接近彼此的實體放置在同一個工作者上。這可最大限度地減少應用程式需要的實體知識量,而這些實體並非其擁有來模擬其擁有的實體。
State Fabric
State Fabric 是所有工作者的共用記憶體系統 (所有分割區的集合)。它會保留模擬的所有狀態資料。
State Fabric 使用自訂二進位格式,針對實體的每個資料欄位,將實體描述為一組初始資料和更新日誌。使用此格式,您可以在模擬時間的上一個時間點存取實體的狀態,並將其映射回真實世界時間的某個點。緩衝區的大小有限,無法回到超過緩衝區中的時間。 會針對每個欄位 SimSpace Weaver 使用更新日誌中目前位移的指標,並將其更新為欄位更新的一部分。 會使用共用記憶體將這些更新日誌 SimSpace Weaver 映射到應用程式的處理空間。
此物件格式會導致低額外負荷且沒有序列化成本。 SimSpace Weaver 也會使用此物件格式來剖析和識別索引欄位 (例如實體位置)。
實體
實體是模擬中最小的資料建置區塊。實體的範例包括演員 (例如人物和車輛) 和靜態物件 (例如建築物和障礙物)。實體具有屬性 (例如位置和方向),您可以將其儲存為持久性資料 SimSpace Weaver。實體存在於分割區中。
應用程式
A SimSpace Weaver app 是您撰寫的軟體,其中包含執行每個模擬刻度的自訂邏輯。大多數應用程式的目的是在模擬執行時更新實體。您的應用程式會在 SimSpace Weaver 應用程式 SDK 中呼叫 APIs,以對模擬中的實體執行動作 (例如讀取和更新)。
您可以將應用程式及其必要資源 (例如程式庫) 封裝為 .zip 檔案,並將其上傳至其中 SimSpace Weaver。應用程式會在工作者的 Docker 容器中執行。 SimSpace Weaver 會在工作者上為每個應用程式配置固定數量的資源單位。
SimSpace Weaver 會將一個 (且只有一個) 分割區的擁有權指派給每個應用程式。應用程式及其分割區位於相同的工作者上。每個分割區只有一個應用程式擁有者。應用程式可以在其分割區中建立、讀取、更新和刪除實體。應用程式在其分割區中擁有所有實體。
應用程式有三種類型:空間應用程式、自訂應用程式和服務應用程式。它們因使用案例和生命週期而異。
注意
在 中 SimSpace Weaver,「應用程式」一詞可以參考應用程式的程式碼或該程式碼的執行中執行個體。
空間應用程式
空間應用程式會更新模擬中空間存在的實體狀態。例如,您可以定義Physics
應用程式,負責根據每個刻度的速度、形狀和大小移動和碰撞實體。在此情況下, SimSpace Weaver 會平行執行Physics
應用程式的多個執行個體,以處理工作負載的大小。
SimSpace Weaver 管理空間應用程式的生命週期。您可以在模擬結構描述中指定空間應用程式分割區的排列。當您啟動模擬時, 會為每個空間應用程式分割區 SimSpace Weaver 啟動空間應用程式。當您停止模擬時, SimSpace Weaver 會關閉您的空間應用程式。
其他類型的應用程式可以建立實體,但只有空間應用程式可以更新實體。其他類型的應用程式必須將他們建立的實體轉移到空間網域。 SimSpace Weaver 會使用實體的空間位置,將實體移至空間應用程式的分割區。這會將實體的所有權轉移到空間應用程式。
自訂應用程式
您可以使用自訂應用程式來與模擬互動。自訂應用程式會使用訂閱讀取實體資料。自訂應用程式可以建立實體。不過,應用程式必須將實體轉移到空間應用程式,以在模擬中包含實體並進行更新。您可以讓 將網路端點 SimSpace Weaver 指派給自訂應用程式。模擬用戶端可以連線至網路端點,以與模擬互動。您可以在模擬結構描述中定義自訂應用程式,但您需負責啟動和停止它們 (使用 SimSpace Weaver API 呼叫)。在工作者上啟動自訂應用程式執行個體後, SimSpace Weaver 不會將執行個體轉移到另一個工作者。
服務應用程式
當您需要在每個工作者上執行的唯讀程序時,可以使用服務應用程式。例如,如果您有大型模擬,而且需要檢視用戶端,在模擬中移動並僅向使用者顯示可見實體,則可以使用服務應用程式。在此情況下,單一自訂應用程式執行個體無法處理模擬中的所有實體。您可以將服務應用程式設定為在每個工作者上啟動。然後,每個服務應用程式都可以在其指派的工作者上篩選實體,並僅將相關實體傳送至其連線的用戶端。然後,您的檢視用戶端可以在模擬空間中移動時連線到不同的服務應用程式。您可以在模擬結構描述中設定服務應用程式。 會為您 SimSpace Weaver 啟動和停止服務應用程式。
應用程式摘要
下表摘要說明不同類型的 SimSpace Weaver 應用程式特性。
空間應用程式 | 自訂應用程式 | 服務應用程式 | |
---|---|---|---|
讀取實體 |
是 |
是 |
是 |
更新實體 |
是 |
否 |
否 |
建立實體 |
是 |
是* |
是* |
生命週期 |
受管 (SimSpace Weaver 控制它)。 |
未受管 (您可以控制它)。 |
受管 (SimSpace Weaver 控制它)。 |
啟動方法 |
SimSpace Weaver 會為每個空間分割區啟動一個應用程式執行個體,如您的結構描述中所指定。 |
您可以啟動每個應用程式執行個體。 |
SimSpace Weaver 會在每個工作者上啟動一或多個應用程式執行個體,如您的結構描述中所指定。 |
用戶端可以連線 |
否 |
是 |
是 |
* 當自訂應用程式或服務應用程式建立實體時,應用程式必須將實體的所有權轉移到空間應用程式,以便空間應用程式可以更新實體的狀態。
網域
A SimSpace Weaver domain 是應用程式執行個體的集合,可執行相同的可執行應用程式程式碼,並具有相同的啟動選項和命令。我們會依包含的應用程式類型來參考網域:空間網域、自訂網域和服務網域。您可以在網域內設定應用程式。
訂閱和複寫
應用程式會建立空間區域的訂閱,以了解該區域中的實體事件 (例如,進入、退出、建立、更新和刪除)。應用程式會先處理訂閱中的實體事件,再讀取其未擁有之分割區中的實體資料。
分割區可以存在於與應用程式相同的工作者上 (這稱為本機分割區),但另一個應用程式可以擁有該分割區。分割區也可以存在於不同的工作者上 (這稱為遠端分割區)。如果訂閱是遠端分割區,工作者會透過稱為複寫的程序建立遠端分割區的本機複本。工作者接著會讀取本機複本 (複寫的遠端分割區)。如果工作者上的另一個應用程式需要在相同的刻度上從該分割區讀取,則工作者會讀取相同的本機複本。