|
发表于 2007-6-2 13:40:00
|
显示全部楼层
Re: 公司的人都知道这个马甲了。
海芳允婷: 公司的人都知道这个马甲了。
回卡特:你的这三个问题我想来想去还是觉得回答你比较好。
1.目标B类型与技能要求匹配
2.A与B的距离<=20码
3.该技能已经完成冷却(包括由其他技能引起的公共冷却)
第一个 b->can_fight(A使用的技能);它返回一个值。0或者1
第二个 3D服务端引擎有判断两物品距离函数。 调用一下然后和20比就行了
第三个 玩家身上有技能使用时间的标志。初始值为0 使用技能以后,会变成冷却时间,然后每次刷新降低任务各个冷却时间值。
算你说对了一部分.并且关键不是怎么写判定语句,而是放哪里进行判定.
这些条件全都是关键判定,出于防止破坏游戏规则的客户端WG程序,都需要在服务器进行验证.
但这在WOW的战斗逻辑中实际是采用客户端/服务端双重验证的方式,听起来很多余是吧?但我觉得这是个很聪明的做法.它能有效降低服务器的运算压力.
简单些说(我只是一个执行策划,对网络协议标准等具体的技术细节也不十分清楚,因此我仅仅是从过程上对WOW中技能的发动进行阐述):
1.当用户按下快捷,这些条件首先会根据客户端的当前状态进行一次判定.若判定通过则向服务器发送验证请求,否则不向服务器发送,直接在客户端提示用户:无法发动该技能
2.服务器接到客户端发来的验证请求,则根据服务端当前数据再次对这3个条件进行验证.若判定通过,则在服务端以技能被发动进行运算,并向对应的客户端发送消息----该技能已成功发动;若判定中存在条件不满足,则技能没有发动,并向对应客户端发送消息----该技能无法发动.
3.客户端根据服务端发送来的消息选择相应的动画进行显示.
也就是其逻辑遵循这样一个原则----"凡客户段不满足的条件,放到服务端也不满足;但客户端满足的条件,放到服务端则不一定满足"----这样的原则在战斗的流畅性,公平性,服务器的压力之间达到了一个合理的折中. |
|