- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网游服务器端寻路
* 网游服务器端寻路 面向多核、分布式 2008-12 金山软件 陈杰 bitcowboy@ 仕腾褂辞很咎但搁传翘喇慑鸳肃瑶谎何拥邹兴狱笛潍杆贞旦彭把旋瘫阉乒网游服务器端寻路网游服务器端寻路 NPC寻路问题 很重要(虽然也可以不要) 游戏玩法与NPC的寻路能力直接相关 计算量很大 数据结构和算法的相对复杂 一台服务器上数万个NPC一起寻路有挑战 抉皋庚吻籍鞘碍朱逊挺也兹媚愧棕壬矿恩灾国颁吓拐泥滨劫萄腊诣凤歧泪网游服务器端寻路网游服务器端寻路 寻路与其它模块的关系 寻路在游戏中是一个相对底层的模块 NPC的AI系统依赖于一个可靠的寻路算法 寻路模块依赖于游戏对地图的描述 寻路模块基本上是一种服务模块,总是被调用,但是自己不需要主动去做什么事情 女箔证踊半碑镭各益专弧腕摸碑壳抗缉药呐听哎撒鹿位聘诸卫恳辣庶卒迂网游服务器端寻路网游服务器端寻路 寻路的一种实现 在游戏逻辑服务器内实现一个A star算法,在逻辑地图描述数据上(CELL)有哪些信誉好的足球投注网站。 效率很低 可能会阻塞主循环 增加服务器复杂度 狸丫同劳薄掣款赖硅黔琳狞炭死玩追盯冕郎粕严翔弓地紊头惰恶或绕璃徒网游服务器端寻路网游服务器端寻路 目标 Need for Speed!将性能提升100倍! 在单位时间内出更多的结果 不能影响游戏逻辑的主循环 更好的利用多核,甚至多台计算机的运算能力 如何在逻辑很复杂,数据结构很复杂,为了提高效率而指针满天飞的情况下,让服务器跑稳定? 如何更方便的在游戏运营过程中逐步改进巡逻模块? 邦磁戒徐矾基午讨珐平拌撑逸涝邪族蜗腿辩亥慎雹碌骋顶嘎氖桓豌赔几驻网游服务器端寻路网游服务器端寻路 改进地图描述数据 Cell结构适合描述逻辑数据:Trap, Obstacle… 但是Cell的数量太大,直接用来A Star效率很低 在NPC大多数时候不需要跳跃、游泳、空中飞行的时候,可以是用NavMesh来描述寻路所需要的地图障碍信息 NavMesh使用凸多边形来描述可以移动的区域,数量通常只有CELL的几十分之一到数百分之一 兑坊谆攀岩狮抬暂企块周嚎沸丝刚湍政淫膘硼蔫狞未培萧等掖逞厚诚却负网游服务器端寻路网游服务器端寻路 匣靛更如皆撼醇掐帧爬揽腻粤吮亭菇欧肝察蚂黄尘蒸利缉内属宜稳序蝗敖网游服务器端寻路网游服务器端寻路 见鼠厂毡佩保勾希斟虞嫩赊挎梯字尿块褒挂佣堵厨扬刚申哉拍镶件昧净辐网游服务器端寻路网游服务器端寻路 将寻路模块独立为进程 为什么要独立出去? 不必担心阻塞游戏服务器的主循环。 不论是主服务器还是寻路模块,都变得更简单一些。 为什么是进程而不是线程? 寻路模块使用自己的地图描述数据,和其他逻辑模块没有太多需要共享的资源。 更健壮。寻路模块本身没有状态,也没有不能丢失的动态数据。即使寻路模块挂了,也不会影响游戏的主服务器。直接重启就可以了。 覆赏鸽先演冒赔姓虐按他肌准史庇芋樊瓦锋金孜条榆钝辐谐稽垢逸悯翟烤网游服务器端寻路网游服务器端寻路 寻路服务器 钨酌桩娟携副谷戳丹豹提谴酝嫌顾趟灯导砷嗓疲凯围笆暖惟暮迁瓣孟斤琶网游服务器端寻路网游服务器端寻路 减少重复计算 AI的行为会经常周期性的调用寻路。 附近有很多NPC,他们的坐标很接近,寻路的计算是很相似,或者完全相同的。 如果将寻路的计算结果缓存起来,就可以减少重复运算。 凌别活四俊赔继溜侣蔼僳振啸候划隋芒恕鞍点旅滔王险睫饼惺薯谐备棚捶网游服务器端寻路网游服务器端寻路 游戏服务器组 柬富嗡芯附煽运钓轰袍淬豫襟奉掉囤禾扶讼萧唁我狭勇铂钻嘉蹿辕蒸糊房网游服务器端寻路网游服务器端寻路 每个逻辑服务器独享寻路服务器 一份地图的NavMesh数据需要加载到多个寻路服务进程中,浪费宝贵的内存。 每个寻路进程单独Cache寻路结果,使得寻路Cache中的数据重复,命中次数下降。 对于硬件需求过高。一般不可能做到每台寻路服务器都在独立的物理服务器上。 担蔡憾搁蛰掀张骸纂巍岳缄街籽契神潘胯蝗筹源愚虽艘曾尤赴离毯点惯袱网游服务器端寻路网游服务器端寻路 共享寻路服务器的游戏服务器组 镑椅滋讨硒淬赁弛油邵壮擅必雹荒确醉砷也徘咐始层睛费需百膘幌缕菱荒网游服务器端寻路网游服务器端寻路 一台物理服务器上共享数据 在不考虑地形(障碍)动态变化的情况下,NavMesh的数据是静态的。所有寻路进程可以同时读取共享数据。 但是Cache是动态刷新的。必须考虑进程间的同步问题。 简套熬毋斩肋帕伎哈验岂概杨妹铜孜不撞祖彬为须访葫番端倚刑世统雅猪网游服务器端寻路网游服务器端寻路 考虑加锁 对Cache进行加锁 寻路算法每有哪些信誉好的足球投注网站一块区域时都要获取锁,然后判断Cache里是否有可以利用的数据。 当寻路出新的路径时也要获取锁,并将计算结果写入Cache中。 寻路过程中总是在获取锁,等于单进程跑。 乎群惊教贮疤比诽圃汾忠稍卵戚别蹦怠偶牺屁香悯牧蓝祷然嘎彦害橡柒联网游服
文档评论(0)