• C++游戏后端开发(魔兽世界,MMO,TrinityCore源码拆解) 教程


    在这里插入图片描述

    基于魔兽开源后端框架 TrinityCore 的技术拆解课程

    一、TrinityCore CMake项目构建

    1.1 CMake的使用

    • 什么是CMake , CMake 的工作流程

    • CMakeLists.txt的编写规则

    • 静态库生成以及链接

    • 动态库生成以及链接

    • 嵌套CMake

    1.2 Windows和Linux下编

    • 译调试环境搭建

    • cmake和graphviz生成目标依赖图

    • linux vscode编程环境搭建

    • cmake和clangd实现精准跳转

    • C/C++插件实现调试

    • vs2019 windows下编译调试搭建

    二、TrinityCore 数据库模块

    2.1 连接池设计概要

    • 什么是连接池

    • 为什么需要复用连接

    • 为什么固定连接数

    • 主要应用场景

    2.2 同步连接池实现

    • 同步连接池的线程模型

    • 同步连接池接口封装

    • 同步连接池接口使用

    • 同步连接池应用场景

    2.3 异步连接池实现

    • 异步连接池的线程模型

    • 异步连接池接[口封装

    • 异步连接池接口使用

    • 异步连接池应用场景

    2.4 事务处理

    • 什么是事务

    • 什么情况下讨论事务

    • 事务操作

    • TrinityCore 中事务处理封装

    • TrinityCore 中事务处理案例

    2.5 数据库模块实践

    • 剥离可复用数据库模块

    • 应用同步连接池案例

    • 异步连接池-单SQL语句的使用

    • 异步连接池-多SQL语句chain式应用

    • 异步连接池多SQL语句holder式应用

    • 异步连接池多SQL语句transaction式应用

    三、TrinityCore 日志模块

    3.1 日志模块概要

    • 日志模块的作用

    • 日志模式核心抽象: logger和appender

    • logger规则:继承关系、日志级别、以及appender列表

    • appender如何定义日志打印目的地

    3.2 日志模块实现

    • 日志模块单例构建

    • 采用宏定义定制日志使用接口

    • 如何扩展appender

    • appender中设计模式模板模式

    • 同步日志方式实现

    • 异步日志方式实现

    • 异步日志线程模型

    3.3 日志模块实践

    • 剥离可复用日志模块

    • 为什么推荐使用异步日志

    • 异步日志日志安全分析及测试

    四、TrinityCore 网络模块

    4.1 阻塞io网络模型编程

    • 什么是阻塞io网络模型

    • 阻塞io解决连接建立的问题

    • 阻塞io解决连接断开的问题

    • 阻塞io解决数据接收的问题

    • 阻塞io解决数据发送的问题

    • 阻塞io解决网络问题的弊端

    4.2 reactor网络模型编程

    • 什么是reactor ?

    • reactor构成部分

    • reactor解决连接建立的问题

    • reactor解决连接断开的问题

    • reactor解决数据接收的问题

    • reactor解决数据发送的问题

    • reactor解决网络问题的特征: io同步, 事件异步

    4.3 windows iocp网络编程

    • 什么是完成端口

    • 重叠io的作用

    • iocp解决连接建立的问题

    • iocp解决连接断开的问题

    • iocp解决数据接收的问题

    • iocp解决数据发送的问题

    • iocp编程步骤

    • iocp与reactor在编程处理io时的差异

    4.4 boost.asio网络编程

    • boostasio跨平台网络库

    • cmake如何在项目中弓入boost.asio

    • boost.asio中核心命名空间

    • boost.asio中核心对象: io_ context, socket、 endpoint

    • boost.asio中异步io接口

    • asio解决连接建立的问题

    • asio解决连接断开的问题

    • asio解决数据接收的问题

    • asio解决数据发送的问题

    4.5 网络缓冲区设计

    • 为什么需要在用户层实现网络缓冲区

    • 读缓冲区的工作原理

    • 写缓冲区的工作原理

    • 手撕缓冲区实现

    4.6 网络模块实践

    • 剥离可复用网络模块

    • AsyncAcceptor职责与实现

    • NetworkThread职责与实现

    • Socket职责与实现

    • 手撕多线程模式下网络模块的应用

    五、TrinityCore 地图模块

    5.1 地图模块概要

    • 哪些功能模块需要用到地图模块

    • 地图模块的功能构成

    • 地图对象抽象: map、area、 grid、 cell

    • 网络数据驱动地图模块

    • 定时更新驱动地图模块

    5.2 地图模块AOI核心算法

    • AOI有哪些实现方式

    • AOI静态数据工具生成

    • AOI静态数据数据划分

    • AOI静态数据组织方式

    • AOI动态数据组织方式

    • AOI动态数据驱动方式

    • AOI地图数据加载

    • grid网格状态机以及状态转换

    • AOI地图数据卸载

    • 采用访问者模式实现地图数据与算法的隔离

    5.3 AABB算法实现碰撞检测

    • 轴对称边界盒算法AABB算法

    • TrinityCore中AABB算法实现

    • AABB算法优化

    • 碰撞检测接C口封装以及应用

    5.4 A*寻路算法

    • A*寻路算法概述

    • recast-detour开源库

    • recast根据模型生成导航数据

    • detour利用导航网格做寻路

    • 寻路接口封装以及应用

    六、TrinityCore 战斗模块专栏

    6.1 技能设计

    • 技能设计概述

    • 技能数据库表设计(配置)

    • 技能触发:距离、冷却时间、消耗等

    • 技能效果:伤害计算、增益效果等

    • 技能释放流程

    6.2 AI设计

    • AI设计概述

    • 基于行为树的AI设计

    • AI类继承层次关系;

    • AI攻击目标选择

    • AI攻击方式选择

    • AI移动方式选择

    • AI基于事件的驱动机制

    6.3 怪物管理

    • 怪物数据库设计(配置)-属性和行为

    • 怪物刷新规则设计-时间间隔以及范围

    • 怪物属性、技能、掉落、AI

    6.4 战场副本设计

    • 创建和咖载battlegrounds场景地图数据

    • battlegrounds规则实现

    • battlegrounds队伍匹配、队伍平衡以及角色分配

    • battlegrounds奖励系统和排名机制

    七、TrinityCore mmorpg核心功能与玩法

    7.1 任务系统设计

    • 任务系统数据库设计(配置)

    • 玩家数据库状态存储

    • 任务类型设计

    • 任务触发机制

    7.2 背包设计

    • 背包数据结构设计以及数据库表设计

    • 背包容量控制

    • 背包格子管理

    • 背包交互功能实现

    7.3 工会系统设计

    • 数据库表结构设计

    • 工会创建逻辑实现

    • 工会成员管理

    • 工会资源管理及分配机制

    • 工会活动与事件

    • 工会排名实现

    • 工会权限控制

    八、语言专栏

    8.1 lua程序设计

    • lua基础

    • lua错误处理

    • lua编译与预编译

    • lua模块与包

    • 元表与元方法

    • 环境

    • lua/c接口编程

    8.2 C++新特性

    • 智能指针 shared_ptr, unique_ptr

    • 函数对象以及闭包

    • 右值引用

    • 原子操作与锁: atomic、mutex、 condition_variable

    • 多线程环境队列设计: MPSCQueue、ProducerConsumerQueue

    8.3 C++设计模式

    • 单例模式

    • 工厂模式

    • 模板模式

    • 访问者模式

    • 责任链模式

    适宜工程师人群

    • 从事游戏后端岗位开发,但没有时间系统学习的在职工程师

    • 从事嵌入式方向开发,想转入游戏后端开发的在职工程师

    • 从事Qt/MFC等桌面开发的, 薪资多年涨幅不大的在职工程师

    • 从事C/C++后台开发,想往游戏服务器方向发展的在职工程师

    • 自己研究学习速度较慢,不能系统构建游戏开发知识体系的开发人员

    • 计算机相关专业想从事游戏开发的在校生(本科及以上学历)


    60+小时课程

    C++游戏后端开发(魔兽世界,MMO,TrinityCore源码拆解) 教程

    基于魔兽开源后端框架 TrinityCore 的技术拆解课程;课程涉及 MMORPG 核心模块实现(高性能网络模块、数据库模块、日志模块、地图模块、以及战斗模块等),同时也包括 MMORPG 核心玩法实现(任务、背包、工会、以及副本等)。通过课程学习,将掌握 MMORPG 核心开发技能。

  • 相关阅读:
    图片怎么转换成pdf?
    你了解IP协议吗?
    Parallels 将扩展桌面平台产品,以进一步改善在 Mac 上运行 Windows 的用户体验和工作效率
    MyBatis 快速入门
    Go:如何在GoLand中引用github.com中的第三方包
    Docker 容器监控 - Weave Scope
    成为会带团队的技术人 稳定性(三):那些年源源不断的“红包”事故
    sqlite3日期时间格式化和自动输入
    kubernetes1.24版本之后仍然使用docker作为运行时的部署方法
    公开可用的API 合集
  • 原文地址:https://blog.csdn.net/weixin_52622200/article/details/133701237