簡體   English   中英

Andengine-一個好的紅寶石裝載機?

[英]Andengine - a good rube loader?

我看了一下在這里找到的那​​兩個項目:AndEngineJb2dJson AndEngineRubeLoaderExtension

如你們中某些人所知,我正在開發基於滾動場景的游戲,我正在從XML文件加載所有實體,並在最近的“加載場景”中創建它們,因此我增加了游戲寬度,並在整個級別上大約500個實體(而不是250 +-),但這會導致性能問題,游戲處於“滯后” \\“跳躍”狀態,並且一切運行緩慢。

我的問題是,如果這些Rube Loader支持性能問題,請像常規andengine loader一樣進行一些改進,或者它需要手動將XML \\ JSON中的每個實體加載

是否有人開發具有相同數量實體的基於滾動場景的游戲,並告訴我實現它的正確方法是什么?

謝謝

由於您實際上並未提供有關特定實現的詳細信息,因此我僅向您提供一種處理此類游戲的通用方法。

首先,您需要為游戲世界定義一個“活動”區域-這將是需要模擬的世界區域(即,該區域中的實體將移動並與世界互動)。

您的世界布局可能看起來像這樣:

范例世界

在此示例中,您的世界是灰色塊,並且超出了屏幕邊界(即黑框 )。 紅色框表示活動區域-請注意,它超出了顯示屏的大小,但並不覆蓋整個世界。 該區域的大小將取決於您的特定實施/需求。

活動區域通常會隨玩家一起移動,因此可以輕松地表示為與玩家的距離(在兩個方向上)。

基本思想是,僅當實體(以藍色顯示 )處於活動區域內時才對其進行仿真。 處於活動區域右側的所有實體在進入它們之前都應該處於非活動狀態,此時可以開始進行模擬-出於這個原因,活動區域應向顯示區域右側擴展一定數量,以便實體具有一些初始時間在顯示之前運行其模擬。 一旦實體離開活動區域(向左),它們就可以停止其模擬-如果需要,可以將其刪除。

因此,在示例圖片中:

  • E1已經通過活動區域,不再需要(可以將其禁用/刪除)
  • E2處於活動狀態並且可見(當前顯示)
  • E3處於活動狀態但尚不可見
  • E4E5尚未激活,並且僅在玩家靠近它們進入活動區域后才會變為活動狀態

至於如何處理實體,這取決於世界的大小,實體的數量等。

一種方法是在實體進入活動區域后創建/加載它們-在這種情況下,實體應延伸到顯示右側足夠遠的位置,以便它們在進入顯示區域之前有足夠的時間來創建/加載。 對於可能有成千上萬個實體的大世界,這是最好的方法。 在這種情況下,您可能還需要對您的世界進行某種細分,以便可以在不檢查每個實體的情況下排除大量實體,而無需檢查每個實體-固定大小的“塊”陣列(每個包含其中的實體)將起作用在大多數情況下,對於一個簡單的2D側滾動條來說,效果很好。

另一種方法是在開始時加載所有對象,並在它們進入活動區域后才對其執行仿真更新(例如物理,運動,碰撞檢測)。 這種方法適用於較小的領域,並提供了更容易的實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM