我正在開發一個隨機生成水平的遊戲過程。這些級別是隨機生成的二維「地形」,它們看起來是連續的,每一個都考慮到前一個「級別」的最後一個「高度」值。然後一次加載5個級別,其中第二級別是「當前」級別,第一級別是剛剛完成的級別,並且如果用戶超過「當前」級別,則第三級別在那裏。保存/加載連續隨機生成的水平
我正在使用種子隨機(Java.Util.Random),以便隨機生成的級別始終如一。級別「1」對每個人都是一樣的,因爲每個人的Random對象都是相同的。當我想要每個人的等級500或甚至1000是相同的時候,我遇到的問題就會出現。當然,我的遊戲會令人上癮,讓人們一次玩上500或1000個關卡,但最終用戶將不得不停下來,我將不得不保存他們的進程,以便稍後加載它。
起初我以爲「哦,爲什麼不只是存儲他們所在的關卡號碼」,而且當我加載關卡時,我只是繼續生成這些關卡,直到達到這個數字。在我的手機上測試了這個理論並等待5分鐘,等級達到1000的時候,我意識到這是一個愚蠢的,「準備好的,火的目標」的方法。
所以我的問題是,有沒有辦法將「我在哪裏」存儲在種子隨機對象中,這樣我就可以根據Random的「位置」重新創建確切的情況。
謝謝你這是非常有用的,我目前正在實施一個解決方案根據你的答案,並希望得到它啓動和運行。不幸的是,由於這是一個新帳戶,我不能爲您「投票」,但是一旦我確定我可以正確加載/保存,我就會檢查您。 –
不太有效,也許我做錯了什麼?我傳遞給生成器Long.parseLong(「11223344」)。然後我設置一個私有變量Long seed =傳入的long。然後當生成器調用「generateMap」時,我首先調用rand = new Random(seed);並在完成後我打電話給seed = rand.nextLong();這些是得到所產生的種子(...的節省空間): Seed0:11223344 - SEED1:-139199 ... - seed2中:800030 ... - 不幸的是,當我嘗試通過 - 139199 ...發電機我得到這個,這不是從種子1下面!=種子2以上的延續: 種子0:-139199 ... - 種子1:4722603 ... –
你可以發佈種子之間發生了什麼0和種子1和種子2? –