日期:2014-05-20  浏览次数:20903 次

刚开始构思做一个网络2D游戏,结果马上碰壁了,求解脱
现在我在构思一个类似与RTS类的2D游戏,但是在思考的时候发现有几个问题。。。。:
问题1. 应该把哪些计算放到客户端哪些放到服务端呢? 我现在的想法是只把显示的部分放在客户端,所以的逻辑计算比如攻击判定,行走,使用技能等等都在服务端进行,然后客户端被动接受指令在窗口上画图或者玩家做了动作后主动请求服务器执行命令。 但是这样就牵扯出了另外一个问题2.

问题2:同步问题,因为类似RTS游戏所以对同步要求很高,我现在的想法是因为在双方玩家屏幕上应该显示差不多的画面 所以为了保证玩家们能够看到同样的画面就每次玩家做了一个动作后先发送给服务端然后等服务端广播到所有玩家后再开始在屏幕上画图, 但是这样的话如果网络速度不行就会觉得很卡。
要么就是先在本地马上开始计算,然后等服务端发来的广播消息后再修正到正确的结果, 但是这样的话又会有其他的问题,比如一个技能放到对方单位身上但是在消息到达服务端的时候那个单位已经移动走了,所以当服务端消息返回之后玩家就会发现实际上他浪费了一个技能。。。

问题3:客户端和服务端我应该用哪些技术比较好呢??? 因为我是一个人,或者以后可能会有其他人加入,所以我希望能用比较快速开发的工具,
暂时我的想法是用XNA做客户端,因为是2D的所以性能上应该不会有任何问题。 然后服务端也直接用C#。  

问题4. 在一般的游戏客户端,都是一直不停的循环然后检查状态后更新,是不是在服务端也应该这么做不停的循环更新状态然后广播给所有玩家呢、??

------解决方案--------------------
关键字:基于事件

理解透彻了这一点 你才能试图去写一些比较大型的程序
机械地轮询是行不通的……
------解决方案--------------------
客户端XNA用的是刷帧。

但是服务器不能也跟着刷啊。。。