Giter Site home page Giter Site logo

oops-moba's Introduction

oops framework + tsrpc 网络游戏全栈解决方案

此产品实现了MOBA类游戏玩法基础功能,可用于二次开发或学习全栈游戏制作技巧。

产品前后端全采用TypeScript语言实现,同时业务代码使用同一套ECS框架设计,前后端代码风格接近,便于理解学习。

前端框架采用 oops-framework 做为业务框架。

后端框架采用 tsrpc 框架,使用这套框架前后端通讯协议就不需要在学习其它中间协议语言,全自动工具生成协议代码,底层二进制传输数据,可把精力关注到游戏业务逻辑设计上,提高开发效率。(感谢 tsrpc 作者提供优秀的开源技术资源)

开发环境

  • 引擎版本:Cocos Creator 3.6.1(需要Cocos Creator 3.x低版本购买后联系作者获取)
  • 编程语言:TypeScript

已适配平

H5 微信小游戏 Android原生 iOS原生 抖音小游戏 OPPO小游戏 vivo小游戏
  • 本资源仅保证支持作者已测试通过平台,其他平台理论上是支持的,其它平台兼容问题请自行适配或加入交流群与作者交流
  • 有其它定制需求的开发者可加入交流群与作者交流

解决问题

  1. 如果无同类解决方案,使用此产品二次开发网络游戏可省至少二个月的自研开发成本
  2. 学习 oops-framework 实战开发技巧,里面包含客户端框架中大多技术的应用
  3. 学习 tsrpc 实战开发技巧,里面包含服务器框架中大多技术的应用
  4. 学习网络游戏程序设计技巧
  5. 学习游戏技能系统程序设计技巧

应用案例

功能介绍

  • 玩法功能
    • 账号功能
    • 游戏区服
    • 房间管理
    • 创建
    • 加入
      • 选择加入
      • 匹配加入
    • 退出
    • 网络即时战斗玩法
      • 摇杆控制角色移动
      • 触摸地图控制角色移动
      • 弱网移动同步策略
      • 网络即时战斗系统
        • 角色数值系统
        • 技能系统
        • 技能释放前摇与后摇
        • 木桩类打靶NPC
        • 死亡后3秒后服务器复活角色
  • 客户端功能模块
    • 游戏登录模块
    • 游戏公共模块
    • 游戏初始化模块
    • 摄像机管理模块
      • 轨道摄影机
      • PC平台鼠标滚轮调整镜头距离
    • 地图管理模块
    • 房间管理模块
    • 角色管理模块
      • 遥感控制移动
      • 触摸地图控制移动
      • 角色动作移动、攻击、死亡、复活
      • 角色数值系统
    • 技能系统模块
      • 可自定义类扩展技能框架
        • 技能配置表
        • 技能数值计算框架
          • 自动选目标
          • 验证技能是否满足触发条件
          • 技能效果对角色数值的影响计算
        • 技能动画播放框架
      • 立即触发效果类技能
        • 远程射击技能
        • 瞬发回复技能
        • 全体连锁闪电技能
      • 位移类技能
      • 持续触发效果类技能
        • 持续伤害
        • 持续控制(新增)
      • 持续光环类范围影响技能(新增)
      • 持续陷阱类范围影响技能(新增)
  • 服务端功能模块
    • 支持 HTTPS、WSS
    • 支持 数据加密
    • 服务器与服务器之间通讯白名单
    • 网关服务器
      • 账号登录
      • 账号注册-数据库中没帐号会自动注册
      • 登录权限-未登部分协议无法使用
    • 匹配服务器
      • 服务器初始化
      • 房间服务器加入并进入工作状态
      • 获取在线的游戏房间列表
      • 创建一个房间
        • 在人数所少房间服务器创建
      • 匹配一个房间,如果在超时前没匹配到则创建一个新房间进入
    • 房间服务器
      • 服务管理模块
        • 服务器初始化
        • 申请加入匹配服务器,等待授权进入工作状态
        • 登录权限验证
        • 断线逻辑
          • 玩家断线自动离开房间
          • 与匹配服务器断线,无限尝试连接匹配服务器直到恢复正常后继续提供服务
        • 空房回收策略
        • 聊天业务处理
        • 房间管理
          • 创建
          • 加入
            • 选择加入
            • 匹配加入
          • 退出
      • 房间管理模块
        • 房间数据状态管理
        • 房间内玩家状态广播
        • 房间内战斗逻辑管理
          • 服务器同步验证验证客户端技能计算结果
            • 服务器只广播技能触发命令,不广播技能结果的状态,减小数据包
            • 服务器验证逻辑与客户端同一套技能框架代码,减小开发成本
      • 玩家管理模块
        • 玩家数据状态管理
        • 玩家玩法协议代码分离设计
        • 玩家移动状态同步
        • 玩家移动广播
        • 玩家攻击广播
        • 玩家离开房间广播
        • 角色数值系统

工程结构与第三方库下载

  • 公共配置 ShareConfig.ts
    • 开启https与wss
    • 传输协议是否使用加密功能
    • 是否用二进制数据传输
  • 客户端
    • assets 资源与脚本目录
    • 使用 vscode 打开 cocos creator 3.6.0 项目
    • 使用 vscode 中的终端(Ctrl + `),运行 npm install -d
    • 连接服务器配置文件 GameServerConfig.ts,默认连接外网作者的服务器,本地调试可修改为本地IP
  • 服务端
    • tsrpc_server 脚本目录
    • 使用 vscode 打开 tsrpc_server 目录
    • 使用 vscode 中的终端(Ctrl + `),运行 npm install -d
    • 配置文件 Config.ts

调试与部署

  • 安装软件

  • 调试环境

    • npm run dev:gate 启动网关服务器
    • npm run dev:match 启动匹配服务器
    • npm run dev:room 启动房间服务器
    • npm run dev:room2 再启动一个房间服务器测试分布式
    • npm run build 构建发布
  • 生产环境

    • npm install pm2@latest -g 安装工具
    • pm2 start ecosystem.config.js --env production 启动生成环境
    • pm2 start ecosystem.config.js --env develop 启动调试环境
    • pm2 delete all 停止所有服务器
  • oops-framework 文档传送门

  • tsrpc 文档传送门

oops-moba's People

Contributors

adgdds avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.