2009-07-04 64 views
3

只是想知道什么提示人们避免在多人游戏和录像游戏同步问题记录关闭游戏逻辑的使用模型在模型视图控制器模式提示,以避免在多人同步问题和重放使用MVC模式

所以据IM知道,它不是一个好主意,让该模型的它之外的任何非const的访问,但除此之外,即时通讯有点卡住,仍然有一些同步问题

感谢

回答

1

为了实现分布式的同步,需要指定一个主模型,理想的独立游戏服务器上。控制事件就是这样,得到时间戳,所有事情的相互作用得到计算,并且时间戳记的更新事件被发送出去。重放可以通过存储和重放更新事件来完成。

由于模型是一个单独的服务器上运行,你甚至不能给视图常量(同步)访问它。通用MVC是不是真正正确的方法,它是更多:

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

当两个流肯定是异步的,可能UDP,所以损耗。

避免多线程,如果有任何它应该在上述组分(用于选择器内例如线程池,每区一个线程在模型)中的一个内被完全本地化。

对于很多游戏,出于性能原因,您需要打破该模型并让控制器直接更新本地模型的某些部分(例如,您可以在拔掉互联网连接的情况下在Wow中漫步)。这肯定会导致同步问题,但对于ping时间>人为反应时间的网络上的实时游戏可能无法避免。

0

通过同步做你的意思是多线程同步?如果是这种情况,我会使用互斥锁。如果你的意思是通信同步,你可以解释一下发生了什么?