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

2023-10-10 00:05

本文主要是介绍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 核心开发技能。

这篇关于C++游戏后端开发(魔兽世界,MMO,TrinityCore源码拆解) 教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/176508

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10