2011-06-21 237 views
2

我正在計劃爲iOS平臺開發多人戰略遊戲。然而,作爲一個具有多個「單位」的戰略遊戲,遊戲玩法可能會存在不平衡現象,這需要通過不斷的機械調整(升級/削弱某些單位)來解決。在iOS戰略遊戲中拉動遊戲機制更新?

完成此操作最簡單的方法就是更改應用程序本身的機制,並不斷向Apple提交更新。然而,更新需要花時間在蘋果的審覈流程中傳播(所以這些更改不會是瞬間的),我需要檢查遊戲中的所有玩家是否運行相同版本的遊戲,強制用戶更新到遊戲的最新版本等。

我正在考慮的是類似於遊戲Uniwar所做的事情。每次遊戲啓動時,它都會檢查是否存在可用的遊戲玩法調整,如果有,則會下載更新(並向用戶顯示更新消息,詳細說明已更改的內容)。然而,作爲一個相對較新的程序員,我並不知道最簡單的方法是完成這個任務。我是否會在線提供包含單位統計信息的文本文件,並讓遊戲檢查該文件是否有變化?還是有更好,更有效的方法?如果我這樣做,我該怎麼做?

+0

我認爲這是一個很好的問題,但我冒昧地改變標題以更好地反映您實際詢問的內容。希望你不介意。 – You

+0

@你好,謝謝,我不太清楚應該怎麼表達它。現在好多了。 –

回答

1

首先,確保您的規則是您可以輕鬆更改的某種資源(無論是二進制還是基於文本)。更新這些最方便的方法是定期輪詢服務器,最方便的是使用HTTP協議,根據需要獲取更新。我看到它的方式有兩種方法。

第一種方法使用HTTP協議的優秀緩存功能,因此需要了解這些的服務器(和客戶端庫)。最基本的想法是在服務器上發佈最新版本的遊戲機制(例如http://example.org/mechanics.gz),然後讓客戶端發出條件GET請求,並將If-modified-since header設置爲執行上次更新檢查的時間。如果沒有更新,HTTP協議會有效地完成剩下的工作,併發送一個304 Not modified,併發送新的機制(這種方法的缺點是整個機制文件必須在每次更新時下載)第二種方法是由更新列表(以及它們的URI,ID和發佈日期)組成, ,說客戶拉動的http://example.org/updates.xml在每次調查中。客戶端然後檢查是否有任何更新沒有,並按時間順序下載和應用這些更新。使用這種方法,可以使舊的更新可用(並且將具有永久鏈接),並且可以使用diff。如果歷史很重要或者遊戲機制文件很大,這非常有用。

+0

很好的答案,感謝您的幫助!我確信這兩種方法中至少有一種適合我。 –

0

該文件的格式並不重要 - 使用任何適合您的作品。我認爲能夠調整遊戲玩法的關鍵是將遊戲規則轉化爲可配置的對象。如果規則是所有對象,則可以執行諸如更改它們的應用順序,賦予每個對象的權重,規則生效的條件等。您可能有一個對象負責管理和正確運用規則,基本上是一個「規則模型」。一旦你有了這些,你所需要做的就是在規則和規則模型類中實現NSCoding,並且你可以輕鬆地編寫和讀取規則配置。