关于那个伤血消息要发送给哪些人的问题的回帖

9 views
Skip to first unread message

sjinny

unread,
Jun 19, 2009, 8:54:48 AM6/19/09
to mmorpgdna
中午的回帖一直发不出去,再重发试试



呵呵……看看这个链接吧:
http://groups.google.com.mx/group/mmorpgdna/web/mmorpg?hl=zh-CN
倒数第四小节:
“当有人走进视野的情况,则先需要客户端在每次给服务器发送更新位置的消息的时候,服务器都给该连接算出一个视野范围,然后在需要广播的时候,循环整张地图上的玩家,找到坐标在其视野范围内的玩家从而完成广播的全过程。”
这篇文章里的观点也是要根据视野范围来决定要把消息发给哪些人,而不是直接广播给场景里的所有人……
我提个视野概念就被人说“拿客户端编程的视角来学习MMORPG服务器端”,不知道是我不懂服务器端还是你们不懂……
不过不知道这篇文章作者是谁……

另外,我认为讨论问题就是讨论问题,不应该老是对别人指手划脚,而应该就事论事。要是我说错了,就明明白白说我的怪点错在哪里,这样做会有什么问题。如果对具体问题没兴趣,反而喜欢对别人指手划脚,我就不得不怀疑是否没有诚意来交流技术,是否只是为了满足一点自己的虚荣心。

在2009-06-19,lu <mdn...@gmail.com> 写道:
>xMan的观点应该是sjinny不应该拿客户端编程的视角来学习MMORPG服务器端近而是MMORPG整体架构方面的知识,他的观点很明确嘛。
>
>On Jun 18, 11:11 pm, sjinny <sji...@163.com> wrote:
>> 问题是我不知道对方的观点......
>>
>> 在2009-06-18,czlc <liu_ch...@21cn.com> 写道:
>>
>>
>>
>> >我觉得你们观点没有明显的冲突。- Hide quoted text -
>>
>> - Show quoted text -
>200万种商品,最低价格,疯狂诱惑你

kennywong

unread,
Jun 19, 2009, 9:58:45 AM6/19/09
to MDNA网络游戏整体架构编程
恩,这个问题象我这样的初学者也是一直没搞懂,真的要向2000年就进入网游行业的xman和lu老大请教请教.
希望二位前辈别怪我们知识太贫乏,我们也是希望多掌握点MMORPG整体编程的知识.

On 6月19日, 下午8时54分, sjinny <sji...@163.com> wrote:
> 中午的回帖一直发不出去,再重发试试
>
> 呵呵……看看这个链接吧:http://groups.google.com.mx/group/mmorpgdna/web/mmorpg?hl=zh-CN
> 倒数第四小节:

> “当有人走进视野的情况,则先需要客户端在每次给服务器发送更新位置的消息的时候,服务器都给该连接算出一个视野范围,然后在需要广播的时候,循环整张地图上的 玩家,找到坐标在其视野范围内的玩家从而完成广播的全过程。”


> 这篇文章里的观点也是要根据视野范围来决定要把消息发给哪些人,而不是直接广播给场景里的所有人……
> 我提个视野概念就被人说“拿客户端编程的视角来学习MMORPG服务器端”,不知道是我不懂服务器端还是你们不懂……
> 不过不知道这篇文章作者是谁……
>

> 另外,我认为讨论问题就是讨论问题,不应该老是对别人指手划脚,而应该就事论事。要是我说错了,就明明白白说我的怪点错在哪里,这样做会有什么问题。如果对具体 问题没兴趣,反而喜欢对别人指手划脚,我就不得不怀疑是否没有诚意来交流技术,是否只是为了满足一点自己的虚荣心。

xMan

unread,
Jun 19, 2009, 11:02:29 AM6/19/09
to MDNA网络游戏整体架构编程
既然你们这么好学,我就不得不花点时间来与你们交流了。

1、 先好好读懂下面这段文字:
" 首先客户端需要在登录游戏的时候建立很多张广播列表,这些列表在客户端后台和服务器端要保持不定时同步。其中要建立多张列表,是因为要广播的类
型包括全局信息、本地信息和远程信息等等,这些列表都是在客户端登陆的时候根据服务器发过来的消息建立好的。在建立列表的同时,还需要获得每个列表中广
播对象的传输时间,并且要维护一张完整的用户状态列表在后台,也是进行不定时的和服务器进行同步,根据本地的用户状态表,可以使一部分决策由客户端来决
定,当客户端发送这部分决策的时候,则直接将最终决策发送到各个广播列表里面的客户端,并对其时间进行校对,以保证每个客户端在收到的消息的时间是和本
地时间进行校对过的,再采用预测补偿计算提前量的方法,计算出提前量,根据计算量确定实际行走速度,将会使同步变得非常的平滑。

其中,广播的重点就在于如何计算出广播的对象,首先在服务器端的连接结构里面增加一个广播对象的队列,该队列在客户端登陆服务器的时候由服务器传
输给合法的客户端,然后由客户端自己来维护这个队列,当有人走出客户端视野的时候,由客户端主动要求服务器给那个对象发送消失的消息。

当有人走进视野的情况,则先需要客户端在每次给服务器发送更新位置的消息的时候,服务器都给该连接算出一个视野范围,然后在需要广播的时候,循环
整张地图上的玩家,找到坐标在其视野范围内的玩家从而完成广播的全过程。"

2、然后使用Google工具,将“在国际上被称为 Mutual synchronization(相互同步)”的所有资料找到并读懂,然后写篇心得
出来;

3、写出你在看第一段文章里思考不明白的地方,我会尽自己的力量来与你们交流,不过先不要报什么太大的希望,你们自己一定要先用心反复思考再提出问题,
不要给你看的你都没有看懂还要来问,这样谁都没有时间来帮助你们。

> > >> - Show quoted text -- 隐藏被引用文字 -
>
> - 显示引用的文字 -

kennywong

unread,
Jun 19, 2009, 12:34:02 PM6/19/09
to MDNA网络游戏整体架构编程
恩,想必作者应该是参考了这篇文章.
http://dev.gameres.com/Program/Abstract/DeadReckoning.htm
先感谢xman的赐教.我想你的思想是这样的:
1)客户端登陆,根据当前所在位置,循环整个地图上的玩家,建立广播对象的队列,然后发回给客户端.
2)当A走出B视野的时候A主动要求服务器通知B,A消失了.然后A的广播列表中删除B,B的广播列表中删除A.
3)A每次移动,服务器都循环整个地图上的玩家,计算出A视野内的玩家,然后将这些玩家添加到A的广播列表,同时
将A视野内的玩家添加到A的广播列表.
不知描述是否正确.那么关键问题在于,是否玩家的每次移动都需要循环整个地图上的玩家,以计算出视野内的玩家呢.
如果是,这个代价是否太大了.

On 6月19日, 下午11时02分, xMan <MESSAGE...@163.COM> wrote:
> 既然你们这么好学,我就不得不花点时间来与你们交流了。
>
> 1、 先好好读懂下面这段文字:
> " 首先客户端需要在登录游戏的时候建立很多张广播列表,这些列表在客户端后台和服务器端要保持不定时同步。其中要建立多张列表,是因为要广播的类
> 型包括全局信息、本地信息和远程信息等等,这些列表都是在客户端登陆的时候根据服务器发过来的消息建立好的。在建立列表的同时,还需要获得每个列表中广
> 播对象的传输时间,并且要维护一张完整的用户状态列表在后台,也是进行不定时的和服务器进行同步,根据本地的用户状态表,可以使一部分决策由客户端来决
> 定,当客户端发送这部分决策的时候,则直接将最终决策发送到各个广播列表里面的客户端,并对其时间进行校对,以保证每个客户端在收到的消息的时间是和本
> 地时间进行校对过的,再采用预测补偿计算提前量的方法,计算出提前量,根据计算量确定实际行走速度,将会使同步变得非常的平滑。
>
> 其中,广播的重点就在于如何计算出广播的对象,首先在服务器端的连接结构里面增加一个广播对象的队列,该队列在客户端登陆服务器的时候由服务器传
> 输给合法的客户端,然后由客户端自己来维护这个队列,当有人走出客户端视野的时候,由客户端主动要求服务器给那个对象发送消失的消息。
>
> 当有人走进视野的情况,则先需要客户端在每次给服务器发送更新位置的消息的时候,服务器都给该连接算出一个视野范围,然后在需要广播的时候,循环
> 整张地图上的玩家,找到坐标在其视野范围内的玩家从而完成广播的全过程。"
>
> 2、然后使用Google工具,将"在国际上被称为 Mutual synchronization(相互同步)"的所有资料找到并读懂,然后写篇心得
> 出来;
>
> 3、写出你在看第一段文章里思考不明白的地方,我会尽自己的力量来与你们交流,不过先不要报什么太大的希望,你们自己一定要先用心反复思考再提出问题,
> 不要给你看的你都没有看懂还要来问,这样谁都没有时间来帮助你们。
>
> On 6月19日, 下午9时58分, kennywong <huangweil...@21cn.com> wrote:
>
>
>
> > 恩,这个问题象我这样的初学者也是一直没搞懂,真的要向2000年就进入网游行业的xman和lu老大请教请教.
> > 希望二位前辈别怪我们知识太贫乏,我们也是希望多掌握点MMORPG整体编程的知识.
>
> > On 6月19日, 下午8时54分, sjinny <sji...@163.com> wrote:
>
> > > 中午的回帖一直发不出去,再重发试试
>

> > > 呵呵......看看这个链接吧:http://groups.google.com.mx/group/mmorpgdna/web/mmorpg?hl=zh-CN


> > > 倒数第四小节:
> > > "当有人走进视野的情况,则先需要客户端在每次给服务器发送更新位置的消息的时候,服务器都给该连接算出一个视野范围,然后在需要广播的时候,循环整张地图上的 玩家,找到坐标在其视野范围内的玩家从而完成广播的全过程。"

> > > 这篇文章里的观点也是要根据视野范围来决定要把消息发给哪些人,而不是直接广播给场景里的所有人......
> > > 我提个视野概念就被人说"拿客户端编程的视角来学习MMORPG服务器端",不知道是我不懂服务器端还是你们不懂......
> > > 不过不知道这篇文章作者是谁......

xMan

unread,
Jun 19, 2009, 10:31:11 PM6/19/09
to MDNA网络游戏整体架构编程
基本上理解正确。
你的问题就是我的第二个要求所能让你理解的最佳答案,赶快去找Mutual synchronization算法的实现吧,通过这个过程,你会明白是否
要采用"玩家的每次移动都需要循环整个地图上的玩家"这种方式。
现在有很多具体的实现分别采用的各自的算法,将服务器和客户端各自承担的部分做了调整,这样就可以在整体效率和服务器所担负的必要功能上取得很好的平
衡。

On Jun 20, 12:34 am, kennywong <huangweil...@21cn.com> wrote:
> 恩,想必作者应该是参考了这篇文章.http://dev.gameres.com/Program/Abstract/DeadReckoning.htm

> > > - 显示引用的文字 -- Hide quoted text -

Reply all
Reply to author
Forward
0 new messages