长亭外,古道边,芳草碧连天

身披半件长工衣,怀揣一颗地主心

用户操作
[即时聊天] [发私信] [加为好友]
白云哥ID:lfhfut
28668次访问,排名4134(1)好友2人,关注者8
长亭外,古道边,芳草碧连天
lfhfut的文章
原创 37 篇
翻译 1 篇
转载 0 篇
评论 28 篇
白云哥的公告
MSN:beyondlimit2001@hotmail.com
最近评论
Ocean:客户端就以10HZ的频率不停向服务器报告自己的当前位置及移动方向状态,服务器再将这个信息向周围玩家广播。
我跟踪mangos发现她是不断有一个heartbeat 数据包,但是似乎不像是10HZ ( 1秒钟10次?)那么高
否则这样的数据量是不是太恐怖了?
还有,方向转动如何同步? 这也需要做类似于移动同步的事情吧,网延也有可能导致双方的转动有视觉上的误差
Ocean:客户端就以10HZ的频率不停向服务器报告自己的当前位置及移动方向状态,服务器再将这个信息向周围玩家广播。
我跟踪mangos发现她是不断有一个heartbeat 数据包,但是似乎不像是10HZ ( 1秒钟10次?)那么高
否则这样的数据量是不是太恐怖了?
还有,方向转动如何同步? 这也需要做类似于移动同步的事情吧,网延也有可能导致双方的转动有视觉上的误差
小野:的确技术上可以实现,可玩性还是要策划把握,随机地图还是应该用外部编辑再随机选择的方法,虽然公共量可能会翻倍
小黑:WOW的这个技术还是值得借鉴的呵呵,既节约客户端的size,又方便了策划的工作,对服务器的压力也不是很重.
killercat:不错。
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 MMO中随机生成地下城的一点随想收藏

    新一篇: 应用抽象的开发感想 | 旧一篇: 数据广播方案的优化

      找了下,网上关于这方面的资料大多是讲随机迷宫生成算法的,但是MMO中的地下城不仅仅是迷宫这么简单,不是只要生成一条或多条通路就算完成,还包括怪物的摆放,一些事件触发器类物件的摆放,地表景观类物件的摆放,还有地表Tile块的指定等。就生成的通路来说,也不可能只有一种简单的石头地形,或者全是沙地路,而在遇到拐弯或小坡小坎的地形时,地形块的指定会更加的复杂。

      当然,这些问题都可以通过技术手段一个个来解决,但还有一个问题,如何保证随机生成出来的地图具有可玩性。这要求生成的道路即不能太直,也不能绕的太厉害,会有一些比较巧妙的区域来给玩家采用一些攻防的战略,怪物的颁布也比较合理。这些属于有些类似于艺术创作的东西,全部让计算机来处理还过于复杂。

      这两天想到了一个方案,以类似于拼图的方式来组装出随机地图。并且可以再简单些,所有的拼图块都是固定大小的正方块,块中间的道路以及地表装饰物等是事先制作好的,这样在拼图时只需要按这些块定义出的接口来确定是否可拼接即可。

      为了让问题再进一步简单,我们可以要求所有块的连接处的通路宽度必须相同,位置也必须固定在每条边的正中间,限制多了当然会让制作时的自由发挥度降低,但复杂度也会降低不少,这个可以适当做些取舍。

      服务器在生成随机地图时需要知道两个块是否能拼接,我们可以对每个块及其连接属性做一些定义,这些定义至少要包括:

      1。该块用到的TileSet编号,只有使用相同TileSet的块才能拼合到一幅地图中。

      2。该块四条边的连通情况,要为每条边都定义是否可连通,通路的Tile块编号属性。

        只能让两边都可连通或都不可连通的块拼命,否则一条路突然中断,那将会是很尴尬的场景。

        另外,拼接块两边通路的Tile编号也必须相同,否则一条沙地路可能会连到另一条石板路上去。

      在为地图摆放怪物及触发器类物件时也有一点点不同,指定位置必须采用相对于当前块的相对坐标,在服务器生成完随机地图后再根据每个块的偏移来修改这些坐标为绝对坐标。

      在生成地图时也有一些细节需要处理,比如某幅地图中一定要出现某个或某几个块,用来放入口出口等。还有一些必须拼合在一起的块,用来实现单独一个块无法容纳下的超大自然景观或是城堡等。可能还需要限制一下某个块只能出现的位置,用来定义地下城的离的比较远的前门和后门等。

      我们可以为每幅要生成的地图定义一个模板,其中就包含这些限制条件,还有其他策划们可能会想到的一些限制条件,要生成指定的随机地图时,从该模板开始,选择合适的块来进行拼接。

      最后是随机地图的使用。因为地图是服务器临时生成的,客户端之前并没有该地图的数据,所以在传统的进入地图命令发送之前,需要多加一步处理:如果要进入的地图是随机生成的,则先将该地图数据发送给客户端,待客户端在内存中创建好该地图后,剩下的过程就与传统过程没有区别了。

      至于服务器如何把生成的地图发给客户端。如果是完全随机生成的地图,要将整幅地图发送给客户端那将是一件很消耗带宽的事,而采用块来拼装的方式后,实际需要发送的数据只有块编号。每个块的定义数据都保存在客户端。

      服务器也需要保留有每个块的格子阻挡信息,在生成完随机地图后,服务器和客户端都要按此块列表来生成完整的格子阻挡信息,用于寻路及客户端行走的合法性检测等。

      以上只是这两天的一点随想,不知道暗黑中的随机地下城是如何生成的,google了下没有结果,有相关资料的麻烦共享一下,或者对此主题提供一些相关思路,不胜感激。

    发表于 @ 2008年05月05日 01:00:49|评论(loading...)|编辑

    新一篇: 应用抽象的开发感想 | 旧一篇: 数据广播方案的优化

    评论

    #linkerlin 发表于2008-05-20 13:53:19  IP: 61.172.241.*
    也许无冬的一些讨论对你有帮助:

    http://nwn.bioware.com/forums/viewtopic.html?topic=413721&forum=74
    #小野 发表于2008-09-02 13:32:27  IP: 123.112.79.*
    的确技术上可以实现,可玩性还是要策划把握,随机地图还是应该用外部编辑再随机选择的方法,虽然公共量可能会翻倍
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 白云哥