作者yzugsr (Bird)
看板GameDesign
标题Re: 格斗类的游戏(小朋友齐打交)
时间Mon Feb 12 22:17:29 2007
说实话我不内行 没有动手implement过
不过没人回这篇 我就来抛砖引玉一下
※ 引述《kangta198109 (Ryan)》之铭言:
: 想作个JAVA线上格斗游戏,类似好多年前的小朋友齐打交
: (简易版)下面是所想的架构,现在略嫌粗造,不知道可不
: 可以大家给我点意见,我很弱需要大家的意见,多谢罗^^
: Client Server
: ________ _________
: | | Real Time Socket | |
: | |--------------------> | |
: | |--------------------> | |
: |________| Nonreal time Socket |________|
: //Real Time Socket:即时资料
: //Nonreal time Socket:非即时资料
不知道你的real-time和non-realtime是指什麽意思
我想应该是reliable(ex. TCP)和unreliable(ex. UDP)吧..
: =========================================================
: 物件:
: (Server)
: CommandCatcher CommandPool RealTimeSocket NonrealTime Socket
: __________________ ___________ 储存指令_____________ __________________
: | 一次取出1~n个指令|<->|指令Queue |<---------| | | |
: |每5ms存取一次 | |__________| ---->|___________ | |________________|
: |__________________|--------------------| /|\ /|\
: /|\ 指令处理後资料回传 | 处理资料回传 |角色座标同步
: \|/ | 指令传入 |(对话)
: CommandProcess =====================================
: ___________________ | |
: | 碰撞处理 | \|/ \|/
: |更动角色状态与座标 (Client) (Client)
: |_________________| RealTimeSocket NonRealSocket
: ==========================================================
对话用TCP传, 指令用UDP传 这样的idea是对的
网路动作游戏很重要的一点 就是动作部份的传输要low latency
用UDP来传输一定是比较好的 但还是要面对packet loss和lag的问题
当你该收到一个封包而慢了三秒 或这个封包整个掉了
就需要一些prediction, recovery, synchronous的机制
我认为这些才是连线动作游戏最重要的地方
(玩连线游戏的时候, 我都会去揣摩一下他的同步机制是怎麽做的
像CS有时候lag会瞬间移动回朔
星海游戏中可以调network latency参数, 但网路越lag你的兵会越慢收到命令
War3感觉在这部份有点改进 不知道是不是幻觉)
印像中小朋友齐打交II (几年前的那个 非网路版) 的同步就实作的很差
区网连线还会lag 不知道最後的版本有没有改进
我觉得连线动作游戏和一般游戏主要的差别就是要注意这个吧..
: 以上是简略所想,不知道这种架构可不可以去实作?
: 好不好?
: 如果不好,非常不好意思,希望大家多体谅可能我想的并不周到
: 多谢罗^^
抛砖引玉一下 请大家补充指正
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.88.16
1F:推 StubbornLin:个人觉得游戏网路最麻烦的地方就在同步的问题... 02/12 22:23
2F:推 SCSonic:说到这个,就一定要说blizzard的作法 02/13 01:32
3F:→ SCSonic:一律只送出键盘指令XD 02/13 01:32