我怎樣才能有效地裝載大量的恒星系統(tǒng)?
我正在開發(fā)一個太空探索和戰(zhàn)斗游戲,我可以創(chuàng)建星系、星云、太陽系,并根據(jù)需要按程序加載和卸載它們。也就是說玩家能看到的星星就在他們所在的地方。我有一個米
解答動態(tài)
精英可能使用的技巧是,他們不會預(yù)先生成整個星系并將其存儲在數(shù)據(jù)庫中。當需要時,它們可能會在運行時生成大部分星系。
I將使用偽隨機但確定性的算法來實現(xiàn)這一點,該算法可以在運行時僅從星系的位置生成星系中每個對象的屬性。
因此,當玩家放大到星系的一部分時,則運行星系塊生成算法,該算法將區(qū)塊坐標作為輸入,并輸出具有位置、顏色和大小的星星列表。相同的輸入總是導(dǎo)致相同的輸出,所以當另一個播放器稍后放大到同一塊時,它們會得到相同的結(jié)果。對于不同的縮放級別,您可能有不同的算法,每種算法都會考慮上一種算法的輸出,并為其添加更多細節(jié)。因此,使用最小縮放因子的算法只能生成最大的恒星(因此您可以快速生成一個同時顯示整個銀河系的視圖),而且播放器越靠近銀河系的任何部分,在該區(qū)域生成的額外小恒星就越多,當玩家點擊這些星星中的任何一顆來放大它的星體系統(tǒng)時,星體系統(tǒng)生成算法就會運行。它的輸入是恒星的顏色、大小和星系位置。它的輸出是一個行星的類型,大小和軌道參數(shù)列表。它也是一個確定性算法,所以它總是為同一顆恒星生成相同的行星。
然后你可以對行星表面,行星表面上的城市,那些城市里的房子和那些房子里的房間做同樣的事情。所以你最終得到了一個星系,它的詳細程度需要一次存儲大量的數(shù)據(jù)。但您不需要存儲所有數(shù)據(jù),因為任何數(shù)據(jù)都可以根據(jù)需要重新計算。
是一個非常簡潔的工具,用于程序生成算法,如單純形噪聲或沃利噪聲等噪聲模式算法。您可以在任意位置對它們進行采樣,以獲得可重復(fù)的結(jié)果。另一種是標準的偽隨機數(shù)生成器,它可以用一個種子值初始化,然后總是為同一個種子值生成相同的數(shù)字序列。
您真正需要存儲在數(shù)據(jù)庫中的是實際上無法在其上重新生成的數(shù)據(jù)需求:部分你想手工設(shè)計的星系會改變?yōu)間alaxy是player actions 的結(jié)果,首先檢查數(shù)據(jù)庫中是否存在請求數(shù)據(jù)的此類數(shù)據(jù)集,如果不存在,你用算法生成數(shù)據(jù)。現(xiàn)在你只需要想出算法,產(chǎn)生有趣和多樣的結(jié)果,然后用游戲機制,提供一個引人入勝和有趣的游戲體驗,受益于所有的內(nèi)容多樣性。如果你有一個使用種子的確定性算法,比如PRNG的工作原理,你幾乎可以不存儲任何東西,并且在飛行中生成恒星的位置,只保留你當前需要的位置。想想演示場景演示是如何工作的。- End
免責(zé)聲明:
本頁內(nèi)容僅代表作者本人意見,若因此產(chǎn)生任何糾紛由作者本人負責(zé),概與琴島網(wǎng)公司無關(guān)。本頁內(nèi)容僅供參考,請您根據(jù)自身實際情況謹慎操作。尤其涉及您或第三方利益等事項,請咨詢專業(yè)人士處理。