作者jerohands (这就是人生啊)
看板GameDesign
标题[问题] 请益 MMOG 系统架构设计概念
时间Sun Dec 16 14:21:23 2007
各位好,我想请教 MMO 开发在伺服器和客户端的系统设计概念,
目前我自己也有写一套,但跟目前线上游戏作比较,
在人物状态更新上相形之下逊色很多,会顿...
我来说说我的作法:
===============================
客户端:使用 RTP 传送资料
1.设定 TIMER 在 MsgProc 中固定每 33毫秒(frame rate 30/sec)
发送自己的状态到伺服器。
2.在「程式主体」中接收使用者输入改变自己状态,和上一个回圈的状态比较,
有改变且时间相隔 33毫秒以上,则发送自己的状态到伺服器。随後再更新其他
玩家的状态,更新的方法是依据上一次接收到的状态预测这次的位置和状态
(我不晓得这一步更新其他玩家是不是有画蛇添足...)。
===============================
伺服器端:使用 TCP 传送资料
1.接收到玩家送来的 RTP 封包,更新这位玩家在伺服器中的状态,
然後广播给其他玩家。
2.程式主体中每个回圈每 100毫秒发送每个玩家状态给其他在线的玩家。
===============================
伺服器端我有尝试改用 RTP 传送资料封包,但对於动态浮动 IP 的客户端,
会接收不到...
我的问题是,一般 MMOG 伺服器端和客户端在更新人物资料时
有什麽机制?UDP?Multi-Thread?
请指教。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 134.208.3.138
1F:推 asoedarren:甚麽平台? windows可以用iocp去做 12/16 16:14
2F:→ asoedarren:如果你不停在更新资讯 可以使用udp 反正遗失一两个封包 12/16 16:14
3F:→ asoedarren:也无所谓 12/16 16:16
4F:→ jerohands:嗯 那不知有没有介绍系统开发的文章或是书呢? 12/16 17:28
5F:→ jerohands:我比较想知道的是开发流程.. 12/16 17:29
6F:→ jerohands:不过最近我测试UDP遇到一个问题,NAT内的PC收不到.. 12/17 16:03
7F:推 asoedarren:NAT要打洞 12/17 18:23
8F:推 sheauren:NAT收不到很正常 你要开port给client或client自己来要了 12/18 16:40