从事游戏服务器开发,下面是一些需要掌握的技术栈。
从熟悉到深入,各个阶段各有侧重。
抛砖引玉,可用于查漏补缺,或者建议大家可作为平时的学习计划来规划。
1、TrinityCore CMake项目构建
(一)CMake的使用
-
什么是 CMake,CMake的工作流程
-
CMakeLists.txt的编写规则
-
静态库生成以及链接
-
动态库生成以及链接
-
嵌套CMake
(二)Windows和Linux下编译调试环境搭建
-
cmake和graphviz生成目标依赖图
-
linux vscode编程环境搭建
-
cmake和clangd实现精俳跳转
-
C/C++插件实现调试
-
vs2019 windows下编译调试搭建
2、TrinityCore数据库模块
(一)连接池设计概要
-
什么是连接池
-
为什么需要复用连接
-
为什么固定连接数
-
主要应用场景
(二)同步连接池实现
-
同步连接池的线程模型
-
同步连接池接口封装
-
同步连接池接口使用
-
同步连接池应用场景
(三)异步连接池实现
-
异步连接池的线程模型
-
异步连接池接口封装
-
异步连接池接口使用
-
异步连接池应用场景
(四)事务处理
-
什么是事务
-
什么情况下讨论事务
-
事务操作
-
TrinityCore 中事务处理封装
-
TrinityCore 中事务处理案例
(五)数据库模块实践
-
剥离可复用数据库模块
-
应用同步连接池案例
-
异步连接池-单SQL语句的使用
-
异步连接池-多SQL语句chain式应用
-
异步连接池-多SQL语句holder式应用
-
异步连接池-多SQL语句transaction式应用
3、TrinityCore日志模块
(一)日志模块概要
-
日志模块的作用
-
日志模式核心抽象: logger和appender
-
logger规则:继承关系、日志级别、以及appender列表
-
appender如何定义日志打印目的地
(二)日志模块实现
-
日志模块单例构建
-
采用宏定义定制日志使用接口
-
如何扩展appender
-
appender中设计模式-模板模式
-
同步日志方式实现
-
异步日志方式实现
-
异步日志线程模型
(三)日志模块实践
-
剥离可复用日志模块
-
为什么推荐使用异步日志
-
异步日志日志安全分析及测试
4、TrinityCore网络模块
(一)阻塞io 网络模型编程
-
什么是阻塞io网络模型
-
阻塞io解决连接建立的问题
-
阻塞 io解决连接断开的问题
-
阻塞io解决数据接收的问题
-
阻塞io解决数据发送的问题
-
阻塞 io解决网络问题的弊端
(二)reactor 网络模型编程
-
什么是reactor?
-
reactor构成部分
-
reactor解决连接建立的问题
-
reactor解决连接断开的问题
-
reactor解决数据接收的问题
-
reactor解决数据发送的问题
-
reactor解决网络问题的特征: io同步,事件异步
(三)windows iocp 网络编程
-
什么是完成端口
-
重叠io的作用
-
iocp解决连接建立的问题
-
iocp解决连接断开的问题
-
iocp解决数据接收的问题
-
iocp解决数据发送的问题
-
iocp编程步骤
-
iocp与reactor在编程处理io时的差异
(三)boost.asio 网络编程
-
boost.asio跨平台网络库
-
cmake如何在项目中引入boost.asio
-
boost.asio中核心命名空间
-
boostasio中核心对象: io_context、socket、endpoint
-
boost.asio中异步io接口
-
asio解决连接建立的问题
-
asio解决连接断开的问题
-
asio解决数据接收的问题
-
asio解决数据发送的问题
(四)网络缓冲区设计
-
为什么需要在用户层实现网络缓冲区
-
读缓冲区的工作原理
-
写缓冲区的工作原理
-
手撕缓冲区实现
(五)网络模块实践
-
剥离可复用网络模块
-
AsyncAcceptor职责与实现
-
NetworkThread职责与实现
-
Socket职责与实现
-
手撕多线程模式下网络模块的应用
5、TrinityCore地图模块
(一)地图模块概要
-
哪些功能模块需要用到地图模块
-
地图模块的功能构成
-
地冬对象抽象:map、area、grid、cell
-
网络数据驱动地图模块
-
定时更新驱动地图模块
(二)地图模块AOI核心算法
-
AOI有哪些实现方式
-
AOI静态数据工具生成
-
AOI静态数据数据划分
-
AOI静态数据组织方式
-
AOI动态数据组织方式
-
AOI动态数据驱动方式
-
AOI地图数据加载
-
grid 网格状态机以及状态转换
-
AOl地图数据卸载
-
采用访问者模式实现地图数据与算法的隔离
(三)AABB算法实现碰撞检测
-
轴对称边界盒算法-AABB算法
-
TrinityCore中AABB算法实现
-
AABB算法优化
-
碰撞检测接口封装以及应用
(四)A*寻路算法
-
A*寻路算法概述
-
recast-detour开源车
-
recast根据模型生成导航数据
-
detour利用导航网格做寻路
-
寻路接口封装以及应用
6、TrinityCore战斗模块专栏
(一)技能设计
-
技能设计概述
-
技能数据库表设计(配置)
-
技能触发:距离、冷却时间、消耗等
-
技能效果:伤害计算、增益效果等
-
技能释放流程
(二)AI设计
-
AI设计概述
-
基于行为树的Al设计
-
Al类继承层次关系
-
04.Al攻击目标选择
-
AIl攻击方式选择
-
Al移动方式选择
-
AI基于事件的驱动机制
(三)怪物管理
-
怪物数据库设计(配置)-属性和行为
-
怪物刷新规则设计-时间间隔以及范围
-
怪物属性、技能、掉落、Al
(四)战场副本设计
-
创建和加载 battlegrounds场景地图数据
-
battlegrounds规实现
-
battlegrounds队伍匹配、队伍平衡以及角色分配
-
battlegrounds奖励系统和排名机制
7、TrinityCore mmorpg核心功能与玩法
(一)任务系统设计
-
任务系统数据库设计(配置)
-
玩家数据库状态存储
-
任务类型设计
-
任务触发机制
(二)背包设计
-
背包数据结构设计以及数据库表设计
-
背包容量控制
-
背包格子管理
-
背包交互功能实现
(三)工会系统设计
-
数据库表结构设计
-
工会创建逻辑实现
-
工会成员管理
-
工会资源管理及分配机制
-
工会活动与事件
-
工会排名实现
-
工会权限控制
8、语言专栏
(一)lua程序设计
-
lua基础
-
lua错误处理
-
lua编译与预编译
-
lua模块与包
-
元表与元方法
-
环境
-
lua/c接口编程
(二)c++新特性
-
智能指针shared_ptr, unique _ptr
-
函数对象以及闭包
-
右值引用
-
原了操作与锁: atomic、mutex、condition_variable
-
多线星环竟队列设计:MPSCQueue、ProducerConsumerQueue
(三)C++设计模式
-
单例模式
-
工厂模式
-
模板模式
-
访问者模式
-
责任链模式
以上是系统学习课程大纲,需要系统学习请添加小雯(V:2207032995,备注:gcc)领取专属大额优惠券。