在游戏开发中,通常会有前端和后端两部分,前端负责处理用户界面、图形渲染等与玩家直接交互的内容,而后端则负责处理服务器逻辑、网络通信、数据库管理等与多个玩家之间交互的内容。
在C++后端游戏开发中,开发者可以利用C++强大的性能和底层控制能力来实现高效的游戏逻辑、多线程处理、网络通信和数据存储等关键功能。同时,由于C++是一种面向对象的语言,也可以很好地组织和管理复杂的游戏代码结构。
总而言之,C++后端游戏开发是通过使用C++语言编写游戏服务器的逻辑和功能,并与前端进行协同工作,以创建高性能、可扩展且具有各种复杂特性的游戏系统。
从事C++后端游戏开发需要掌握以下技术:
- C++编程语言:熟练掌握C++的语法、面向对象编程和泛型编程等特性。
- 数据结构和算法:理解并能够应用各种常用数据结构和算法,如数组、链表、栈、队列、哈希表等,以及排序算法、搜索算法等。
- 网络编程:了解网络通信原理,掌握TCP/IP协议栈,能够使用Socket库进行网络编程,处理客户端与服务器之间的数据传输和通信。
- 多线程编程:熟悉多线程编程模型,掌握线程同步、互斥和锁机制,处理多线程环境下的并发问题。
- 数据库管理:了解关系型数据库(如MySQL)或NoSQL数据库(如MongoDB),能够设计和优化数据库结构,并使用SQL或其他查询语言进行数据操作。
- 内存管理和性能优化:理解内存管理原理,避免内存泄漏和访问越界等问题;同时熟悉性能调优技术,减少CPU消耗和提高代码执行效率。
- 操作系统知识:对操作系统有一定了解,包括进程管理、文件系统、I/O操作等基本概念。
- 游戏开发框架和引擎:熟悉常见的游戏开发框架和引擎,如Unity、Unreal Engine等,能够使用相应工具进行游戏后端开发。
这里给大家推荐零声教育全网独家的【C++游戏后端开发】课程体系,基于魔兽开源后端框架TrinityCore的技术全面解析:
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++设计模式
- 单例模式
- 工厂模式
- 模板模式
- 访问者模式
- 责任链模式
以上是系统学习课程大纲,需要系统学习请扫码添加小雯老师(备注911)领取专属大额优惠券。
9、适宜工程师人群
- 从事游戏后端岗位开发,但没有时间系统学习的在职工程师
- 从事嵌入式方向开发,想转入游戏后端开发的在职工程师
- 从事Qt/MFC等桌面开发的,薪资多年涨幅不大的在职工程师
- 从事C/C++后台开发,想往游戏服务器方向发展的在职工程师
- 自己研究学习速度较慢,不能系统构建游戏开发知识体系的开发人员
- 计算机相关专业想从事游戏开发的在校生(本科及以上学历)
精品文章推荐阅读: