- 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中。 寻路过程中总是在获取锁,等于单进程跑。 读写锁 寻路过程中可以明确区分读写两个阶段 寻路过程中,获取读锁来获取Cache数据。 寻路结束后,获取写锁来更新Cache数据。 多个进程可以同时读Cache,但是如果有进程要写Cache的话,所有进程都要等。 利用本地Cache提高并发能力 为每个进程增加一个本地的私有Cache。 寻路进程算出结果后只将寻路结果更新到本地的Cache。而不是立刻去写共享的Cache。 等一段时间之后,进程再一次性讲本地Cache的内容提交到共享Cache。 降低了进程获取共享Cache写锁的频率,从而提高并发能力。 带本地Cache的寻路进程 锁的问题 锁的目的就是让程序变得不并行。 锁本身的代价很高,特别是进程之间的锁,往往需要使用操作系统内核对象来实现,获取和释放的开销通常在1000 CPU Tick左右。 锁很不安全,只有有一初代码没有按规矩来获取或者释放锁,整个系统都会出问题。 利用调度算法避免锁 引入一个调度进程。 所有寻路进程的任务由调度进程分配。 所有寻路进程完成寻路任务的时候向调度进程汇报。 调度进程没有分配任务的时候,寻路进程不能访问共享Cache(读/写都不行)。 调度进程可以在没有进程访问共享Cache的时候向一个进程分配更新共享Cache的任务。 调度进程
您可能关注的文档
- 红景天松茸软胶囊知识讲座.ppt
- 红木家具需要在继承基础上创新.ppt
- 红细胞膜蛋白提取流程.ppt
- 纳兰及纳兰词.26.ppt
- 纳兰性德人物介绍.ppt
- 纳兰性德长相思课件.ppt
- 纳税实务资料--学生.ppt
- 纸币发行量计算公式(计算机考试模板).ppt
- 纳兰性德词《长相思》赏析.ppt
- 纸带问题(高一物理).ppt
- 2026年消防设施操作员之消防设备基础知识考试题库500道带答案(新).docx
- 销售岗前培训课件.ppt
- 2026年消防设备操作员考试题库500道(典型题).docx
- 2026年消防设施操作员之消防设备高级技能考试题库300道附答案(实用).docx
- 2026年消防设施操作员之消防设备高级技能考试题库300道标准卷.docx
- 2026年材料员之材料员基础知识考试题库300道附完整答案(全优).docx
- 2026年材料员之材料员基础知识考试题库300道带答案(培优a卷).docx
- 2026年机械员考试题库含答案(轻巧夺冠).docx
- 2026年材料员之材料员基础知识考试题库300道【夺分金卷】.docx
- 2026年期货从业资格之期货法律法规考试题库500道(考点精练).docx
最近下载
- 高三化学一轮复习 铁及其化合物 学案.doc VIP
- 个体工商户登记(备案)申请书.doc VIP
- 2024年新疆农业大学招聘事业编制人员考试真题.docx VIP
- 工业领域视觉大模型落地实践.pdf VIP
- TNAHIEM 121-2024 创伤中心建设与设备配置规范.docx VIP
- 统编版六年级上册语文《宇宙生命之谜》【精华版】课件完整版.pptx VIP
- 2023年新疆农业大学招聘事业编制工作人员31人笔试备考试题及答案解析.docx VIP
- 地铁主体结构顶板回填收土施工方案.doc VIP
- 基坑围护土方开挖监理细则.doc VIP
- 考研真题 安徽工业大学830化工原理历年考研真题.docx VIP
文档评论(0)