2011-09-11 52 views
1

我是一個相當不錯的程序員,我正在爲像XBOX這樣的塊建設遊戲開發Minecraft。我的遊戲中有大約10萬塊,但是當我在我的Xbox上運行它時,我遇到了一些非常糟糕的滯後問題。有一件事我做了這種幫助是使用它們後將所有對象設置爲null,但我仍然有問題。大多數遊戲開發者如何解決這個問題?我想到的只是繪製靠近玩家的方塊,但我認爲使用循環遍歷世界上所有的方塊會讓它減慢甚至更多。C#XNA滯後和幀率問題XBOX 360

+0

不想投票結束,但是這可能會在gamedev.stackexchange上得到更好的答案。 –

回答

3

你走的是正確的道路,如果可能的話,你絕對只想在附近畫東西。

Quadtreesoctrees是設計用於分別切割2D/3D空間以使得在給定區域中查找對象非常容易的數據結構。聽起來像這是你正在尋找。

您可以使用任何一種,具體取決於您希望「附近」的定義是什麼。如果您想要實現與Minecraft相同的功能,那麼Minecraft所做的就是顯示整個塊的列,這樣您就可以使用四叉樹來管理X/Z座標上的事物,並始終顯示Y上的所有內容。如果您想要要做一個基於3D的附近的定義,那麼你需要一個八叉樹。

這些工作通過使用樹結構對空間進行分區的方式。樹中的每個分支表示可用空間的象限(或八叉樹的八分圓),並且每個後續分支是該象限的象限。因此,深入到特定區域非常容易。樹的葉子保存實際數據,即。構成你的世界的街區。