2014-09-19 164 views
3

我一直想知道的戰略遊戲,如帝國的星際爭霸和年齡怎麼這麼準確地節省了遊戲。當你加載一個遊戲時,你會意識到即使是遊戲中單位的投射物也會被保存。不僅如此,甚至可以正確加載彈丸(例如從某個單元發射的導彈)的方位。如果一個單位正在行走或移動,它也被準確加載。這些策略遊戲的開發者能夠重新構建確切的遊戲狀態。如何星際爭霸(或策略遊戲)遊戲保存

這就是我的想法。遊戲中的每一個單位(包括投射物)都保存爲一個對象。

這些對象中的每一個都包含諸如當前在地圖上的位置,當前方向(例如,面向北方的多少度)等的信息。

我在假設策略遊戲如何保存遊戲時是否正確?還是有更有效的方法來保存遊戲狀態?

回答

-3

我猜的是他們退出程序的主循環(暫停遊戲),然後直接將內存狀態保存到文件中。

+0

答案不應該是一個猜測。用事實支持你的論點。 – tod 2014-09-21 11:57:47

+0

猜猜什麼?與遊戲同時使用的2GB內存相比,已保存的遊戲可能爲100KB。要麼他們使用壓縮率爲0.005%的壓縮算法,要麼你的假設是不正確的,並且保存遊戲不是休眠。 – icza 2015-03-02 16:35:50

+0

大部分內存都由紋理和其他圖形相關數據使用。保存單元狀態 - 我想它作爲結構的鏈表將需要更少的空間。 – Nuclear 2015-04-15 21:45:37

0

星際爭霸做它不同。它可以保存在遊戲中發生的每一個動作。

當你再加載一個重播時,它必須經過所有的動作,就好像你在哪裏玩它一樣,以獲得最新的遊戲狀態。基本它會再次模擬遊戲。

+0

您的解決方案是在遊戲重播。怎麼樣節約遊戲? '它會再次模擬遊戲'我相信它可以保存每一個動作來重建遊戲重播,但是我懷疑它會完全根據保存的動作重新運行遊戲。永遠記得有一個隨機性,比如單位的傷害。除了保存這些動作之外,我相信它還保存了可以隨機更改的值。最重要的是,沒有任何遊戲會重新運行整個事情來恢復上一次的遊戲狀態。懷疑任何人都這樣做。它大量地將遊戲狀態保存在堆棧/堆棧中。 – user3437460 2015-11-23 16:10:07

+0

考慮以行動形式出現的隨機值。任何會改變腳本結果的東西。 – CoderPi 2015-11-23 16:11:21

+0

在星際爭霸多人遊戲中,如果你想保存/玩一個遊戲,這是通過「重播」 – CoderPi 2015-11-23 16:12:17