1 / 58

基于 Pomelo 的 MMO RPG 开发

基于 Pomelo 的 MMO RPG 开发. 网易杭州研究院 张小刚 zhang0925@gmail.com @demon0925. 开始之前. 多少 人 有 Web 服务 的开发经验 ? 多少人有 Game 服务端的开发经验? 是否了解 Pomelo 框架?. 主要内容. Pomelo 框架介绍 基础篇 使用 Pomelo 框架一个简单的游戏 Demo 进阶篇 Pomelo 的扩展库 展望篇 我们未来的工作. Pomelo 框架. Pomelo 框架运行架构. Pomelo 框架总结. 高可伸缩性 分布式架构 易于扩展 简单易用

olaf
Download Presentation

基于 Pomelo 的 MMO RPG 开发

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 基于Pomelo的MMO RPG开发 网易杭州研究院 张小刚 zhang0925@gmail.com @demon0925

  2. 开始之前 • 多少人有Web服务的开发经验? • 多少人有Game服务端的开发经验? • 是否了解Pomelo框架?

  3. 主要内容 • Pomelo框架介绍 • 基础篇 • 使用Pomelo框架一个简单的游戏 Demo • 进阶篇 • Pomelo的扩展库 • 展望篇 • 我们未来的工作

  4. Pomelo框架

  5. Pomelo框架运行架构

  6. Pomelo框架总结 • 高可伸缩性 • 分布式架构 • 易于扩展 • 简单易用 • 简单的API接口 • 极少的配置 • 基于Node.js,轻量 • 强大 • 库和工具包支持 • 参考文档齐全,MMO demo

  7. 基础篇 • 从Demo开始 • 使用Pomelo构建工程 • 建立我们的游戏服务器 • 处理客户端的请求

  8. 捡宝Demo • 玩家在单一场景中检取宝物,获得积分 • 支持多玩家 • 实时记录并刷新积分

  9. 搭建Demo • 初始化Pomelo项目 • 构建场景服务 • 使用Pomelo进行通信 • 服务架构扩展和分析 • 参考资料

  10. 初始化工程 • 安装pomelo • 初始化工程

  11. 服务端目录结构 服务端代码 Connector 服务器 配置文件 服务端入口 客户端代码

  12. 编写场景服务 • 场景是游戏世界在服务端的抽象 • 场景地图 • 人物 • 宝物 • 游戏可以很复杂,也可以很简单 • 在捡宝 demo中,场景就是游戏地图、玩家和其中的宝物

  13. 编写场景服务 Driven • 这些服务要在哪里运行呢?

  14. 加入新的服务器类型

  15. 启动场景服务 • 服务端,写完了? • 等会儿,客户端还没收到信儿呢?

  16. Pomelo中的通信机制 • Request/Response模式 • 请求/响应模型 • 1to 1 • 广播模式 • 服务端对客户端 • 1to N • 服务端之间的RPC调用

  17. 客户端与服务端通信 • Handler/Request模式

  18. 与客户端的通信 • 通过Channel来推送消息

  19. 服务器之间的通讯

  20. 服务器的鸭子类型 area connector chat frontend backend status 提供rpc服务的server 基于websocket的server

  21. 服务端架构

  22. Pomelo的扩展支持 • 说好的分布式架构呢? • 前端服务器扩展 • 让我们加入更多的Connectors • 场景服务器扩展 • 加入更多场景 • 客户端的扩展 • 支持更多类型的客户端

  23. 扩展Connector • 加入多台connectors • 连接分配问题 • 负载均衡 • 负载均衡服务器

  24. 扩展场景服务 • 加入新的场景服务器 • 重写路由算法

  25. 客户端的扩展 • 提供更多的客户端支持 • JS Client • IOS Client • Android/Java Client • Unity 3D Client • Flash Client

  26. 分布式的服务器架构

  27. 捡宝Demo

  28. 参考资料 • IOS Client: https://github.com/NetEase/pomelo-iosclient • Android Client: https://github.com/NetEase/pomelo-androidclient • Unity 3D Client: https://github.com/NetEase/pomelo-unityclient • Flash Client: https://github.com/stokegames/pomelo-flashclient

  29. 参考资料 • Pomelo快速使用指南: https://github.com/NetEase/pomelo/wiki/Quick-start-guide • Treasures wiki: https://github.com/NetEase/pomelo/wiki/Tutorial-2----Treasures • Treasures git: https://github.com/NetEase/treasures • 作者:王朝 @Seeker

  30. 这个例子,也太简单了吧? • 需要保存进度!每次都从零开始,坑爹呢! • 数据持久化问题 • 需要战斗系统!没有战斗还能叫MMO RPG? • 人工智能 • 人都跑到房子上了! • 障碍物系统和寻路 • 简单的全局广播,我们的服务器撑得住吗?

  31. 进阶篇 • 持久化问题 • 人工智能 • 寻路系统 • 场景细分

  32. 持久化的挑战 • 大量需要持久化的数据 • 移动 • 攻击 。。。 • 大量事务 • 玩家间战斗 • 使用技能 • 高实时应用 • 大于100ms的延时是无法接受的 • 结论 • Sql方式无法满足我们的要求

  33. 我们的解决方案

  34. 我们的解决方案 • Pomelo-sync

  35. 参考资料 • Wiki: https://github.com/NetEase/pomelo/wiki/pomelo-sync%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3 • Git: https://github.com/NetEase/pomelo-sync • 作者:尧飘海 @飘hai

  36. 进阶篇 • 持久化问题 • 人工智能 • 寻路系统 • 场景细分

  37. 老虎,跑起来! • 怪物的生成 • 和宝物一样,随便找个坐标点扔上去得了 • 怪物行为的驱动 • 很简单,见人就咬就行了 • 那要怎么实现这个功能呢? 。。。 。。。冏 • 我们需要AI!

  38. AI模块的实现 • Behaviors Tree

  39. AI应用场景 • 驱动怪物 • 自动巡逻 • 主动追随,攻击 • 放弃攻击/返回 • 玩家自动行为 • 跟随/追击 • 拾取道具/装备 • 自动攻击

  40. Pomelo-bt • Git: https://github.com/NetEase/pomelo-bt • 作者:周永昶 @郁闷的武昌鱼

  41. 进阶篇 • 持久化问题 • 人工智能 • 寻路系统 • 场景细分

  42. 障碍物与寻路 • 飞檐走壁才叫大侠 • 总是有些地方是不能去的 • 障碍物系统 • 那,如何确定路径? • 寻路系统

  43. 障碍物的标注

  44. 内存中的障碍物地图

  45. 寻路算法 • 基于矩阵的A*算法

  46. 有障碍物的情况

  47. 可能出现的悲剧

  48. 算法复杂度 • 在理想情况下,接近O(n) • 在悲剧的情况下,O(n2) • 目标不可达 • 实际距离远大于直线距离

  49. Pomelo-pathfinding • Git: https://github.com/NetEase/pomelo-pathfinding • 作者:张小刚 @demon0925

  50. 进阶篇 • 持久化问题 • 人工智能 • 寻路系统 • 场景细分

More Related