2024年游戏服务器开发技术栈

从事游戏服务器开发,下面是一些需要掌握的技术栈。

从熟悉到深入,各个阶段各有侧重。

抛砖引玉,可用于查漏补缺,或者建议大家可作为平时的学习计划来规划。

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)领取专属大额优惠券。

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值