2009-07-04 61 views
3

只是想知道什麼提示人們避免在多人遊戲和錄像遊戲同步問題記錄關閉遊戲邏輯的使用模型在模型視圖控制器模式提示,以避免在多人同步問題和重放使用MVC模式

所以據IM知道,它不是一個好主意,讓該模型的它之外的任何非const的訪問,但除此之外,即時通訊有點卡住,仍然有一些同步問題

感謝

回答

1

爲了實現分佈式的同步,需要指定一個主模型,理想的獨立遊戲服務器上。控制事件就是這樣,得到時間戳,所有事情的相互作用得到計算,並且時間戳記的更新事件被髮送出去。重放可以通過存儲和重放更新事件來完成。

由於模型是一個單獨的服務器上運行,你甚至不能給視圖常量(同步)訪問它。通用MVC是不是真正正確的方法,它是更多:

model -> event stream -> local model -> view 
^        | 
|        v 
selector <- action stream <- controller 

當兩個流肯定是異步的,可能UDP,所以損耗。

避免多線程,如果有任何它應該在上述組分(用於選擇器內例如線程池,每區一個線程在模型)中的一個內被完全本地化。

對於很多遊戲,出於性能原因,您需要打破該模型並讓控制器直接更新本地模型的某些部分(例如,您可以在拔掉互聯網連接的情況下在Wow中漫步)。這肯定會導致同步問題,但對於ping時間>人爲反應時間的網絡上的實時遊戲可能無法避免。

0

通過同步做你的意思是多線程同步?如果是這種情況,我會使用互斥鎖。如果你的意思是通信同步,你可以解釋一下發生了什麼?