C++ 游戏服务器方向需要多少功底?

2023-12-05

这篇文章是回答一位知友的提问:

现在大二了马上升大三,就读于一个很垫底的211,专业是计算机相关的,但是对本专业内容不感兴趣,希望能从事c++后端的工作,对游戏比较有兴趣,但又不知道需要哪方面的知识,希望各位能给出一个客观的评价或者批评,帮忙指点,感激不尽。 看了一些书,unp扫了一遍,apue认真的读了一大半,但是觉得只读书不够,就一边看游双的linux高性能服务器编程,一边自己上手实现一个简陋的web服务器。上网看见什么东西就一点一点往里面塞,什么定时器,线程池,智能指针,raii锁之类的。之后准备大致搭起来服务器的架子就读一下muduo,优化一下自己写的渣渣。 不知道这样的学习进度合不合适,如果想进大厂c++后端或者找一个待遇不差的工作还需要哪些努力?如果想特化游戏服务器的编程能力,有没有合适的书或者路线推荐,请各位大佬指点一下小弟

正文

我真的不推荐你去阅读 UNP 这样大部头的书,不是说这个书不好,而是对于你目前这个阶段,去读这样大部头的书,会事倍功半,相信你自己应该也能感受的到。

作为一个过来人的老学长,我的建议是:

1. 先学好 C/C++。

这类书很多。不建议看《C++ Primer》这样的大部头,掌握 C++ 常用语法就可以了。当然 C++ 原理性的东西还是需要了解一下,推荐看下《深度探索C++对象模型》。

深度探索C++对象模型

链接: https://pan.baidu.com/s/1SOGJTy_k7qyxKmzqX9WzMw 提取码: 2i98

2. 学好网络编程,做到熟练使用常见操作系统的 Socket API。

根据你的水平高低来选择,依次从低到高的书有:

尹圣雨的《TCP/IP网络编程》

链接: https://pan.baidu.com/s/1ho3e1POq5LzEQWp0Gm2Nsg 提取码: sp8p

游双的 《Linux 高性能服务器编程》

链接: https://pan.baidu.com/s/1f9IErU5JP2sw-5Crha9vzg 提取码: je7g

陈硕的《Linux 多线程服务端编程 使用 muduo C++ 网络库》。

看了后两本书,你还能学到一些 C++ 服务器程序框架、结构等一些套路。

3. 学一些游戏开发的知识

如果你需要实战的话,我这里有一套完整的可以编译、调试和部署的 MOBA 游戏的源码。

这是一款类似英雄联盟的 5V5 实时对战游戏,服务器端使用 C/C++ 开发,同时支持 Linux 和 Windows 系统部署;客户端使用 C# + Unity3D 开发。

我们先来看下这个游戏的内容吧,这是在我机器上编译后运行的效果图:

登录界面

进入后台配置的对战服务器:

设置自己的昵称:

支持新手教学、人机对战和联网对战:

部署在我的云主机上后,和女朋友一起对战的效果图:

ps~被我女朋友虐的体无完肤。。。。。。

服务器端有非常多的模块,代码质量非常高,这里先截一张主要模块的项目图示:

上述游戏完整的服务器和客户端完整代码及安装部署教程:

链接: https://pan.baidu.com/s/1espdvfuBYBd0lvchJK69zw 提取码: 9ypc

建议先学习这套代码的服务端,先学习主框架,再学习细节。

服务器架构简图如下:

连线说明:

  • 实线:表示客户端登录流程,①②③④⑤表示登录流程,详细解释见下文。

  • 虚线:表示服务器间的连接,虚线箭头指向监听方。

架构说明:

完整的 C++ 书单在这里:

计算机必看经典书籍(含下载方式)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 游戏服务器方向需要多少功底? 的相关文章

  • 将复选框添加到 UniformGrid

    我正在尝试将复选框动态添加到 wpf 中的统一网格中 但看起来网格没有为它们分配足够的空间 所以它们都有点互相重叠 这就是我将它们添加到后面的代码中的方法 foreach string folder in subfolders PathCh
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • AI视觉字谜爆火!梦露转180°秒变爱因斯坦,英伟达高级AI科学家:近期最酷的扩散模型...

    克雷西 萧箫 发自 凹非寺 量子位 公众号 QbitAI AI画的玛丽莲 梦露 倒转180 后 竟然变成了爱因斯坦 这是最近在社交媒体上爆火的扩散模型视错觉画 随便给AI两组不同的提示词 它都能给你画出来 哪怕是 截然不同 的对象也可以 例
  • java基于SpringBoot_vue+elementui的考研资料预订交流平台

    考研交流平台根据实际情况分为前后台两部分 前台部分主要是让用户使用的 包括用户的注册登录 首页 考研指南 考研资料 考研交流 考研资讯 后台管理等功能 后台部分主要给管理员使用的 主要功能包括首页 个人中心 用户管理 资料分类管理 考研指南
  • 计算机毕业设计选题推荐-SpringBoot 足球青训俱乐部管理后台系统

    作者主页 疯狂行者 java领域优质创作者 专注于Java技术领域技术交流 文末获取源码 精彩专栏推荐订阅 在 下方专栏 Java精彩实战项目案例 Java精彩新手项目案例 Python精彩新手项目案例 文章目录 Java精彩实战项目案例
  • 计算机毕业设计选题推荐-SpringBoot 阿博图书馆管理系统

    作者主页 疯狂行者 java领域优质创作者 专注于Java技术领域技术交流 文末获取源码 精彩专栏推荐订阅 在 下方专栏 Java精彩实战项目案例 Java精彩新手项目案例 Python精彩新手项目案例 文章目录 Java精彩实战项目案例
  • python+django智能水果店连锁商城销售系统设计vue

    本次研究的系统使用了DJANGO框架 VUE框架等技术 还有 MySQL数据库 最终实现了智能水果销售的系统设计 本系统主要包括 用户管理模块 个人中心 水果类别管理模块 用户下单 用户信息 水果信息模块等 随着智能水果销售的系统的正式启用
  • nodejs+vue+微信小程序+python+PHP健身房信息管理系统的设计与实现-毕业设计推荐

    模块包括主界面 统首页 个人中心 教练管理 会员管理 器材任务管理 自练信息管理 健身课程管理 健身项目管理 健身视频管理 预约教练管理 课程订单管理 留言板 健身论坛 系统管理等进行相应的操作 在当今高度发达的信息中 信息管理改革已成为一
  • C++ 后台开发面试时一般考察什么?

    一 自我介绍 先说下我的个人经历 我刚工作的前几年做股票 期货 现货的交易系统 后来去二三四五做战略软件 再后来去声网做信令 再后来去了携程旅行网做基础框架业务 用的都是 C C 如今在某大厂 畅销书 C 服务器开发精髓 一书作者 参与过很
  • java+springboot+ssm仓库仓储物资进销存系统cangku+jsp

    本仓库系统主要功能设计包括管理员和用户两种角色 主要的功能设计包括个人中心 用户管理 物资管理 公告管理等模块 个人中心 用户可以对个人账号资料信息进行管理 可以选择修改密码和个人资料 通过定时的修改个人密码 保证个人资料信息的安全 用户管
  • python+django基于协同过滤算法的小说推荐系统可视化大屏vue

    小说推荐系统综合网络空间开发设计要求 目的是将传统管理方式转换为在网上管理 完成小说推荐管理的方便快捷 安全性高 交易规范做了保障 目标明确 小说推荐系统可以将功能划分为管理员功能和用户功能 1 管理员关键功能包含系统首页 个人中心 用户管
  • 基于Vue+nodejs+elementUI的校园二手书管理系统oc81w

    最终实现一个基于vue2 0 node js且功能完善 流畅易用的二手书交易平台 为用户提供了一个能登录注册 能买能卖 能搜索二手书的平台 拥有良好的用户体验 帮助他们更加便捷地进行二手书籍的交流和交易 通过该系统 用户可以轻松地添加 编辑
  • 基于Java的智慧图书馆图书借阅推荐系统springboot+vue

    本系统共包含17个表 分别是关于我们表 配置文件表 图书信息评论表表 罚款信息表 归还记录表 借阅记录表 公告信息表 收藏表表 关于我们表 token表表 图书分类表 图书盘点表 图书信息表 用户表表 信息提醒表 续借记录表 用户表等信息表
  • python汽车4S店服务系统django汽车用品商城系统0dq3x

    系统用户功能为 1 用户 主要通过汽车服务商城浏览服务并选择下单 功能可表现为注册登录 信息服务 信息浏览 推荐服务 预约服务 在线咨询 客户评价 注册登录 对第一次使用的用户进行账号注册 可以选择记住密码 信息服务 学生能修改个人信息 修
  • django基于Python可视化分析系统的在线学习资源推荐系统的设计与实现vue

    1 系统总功能模块设计 可视化的学习系统分两大部分 即管理员管理和用户管理 系统按照用户的实际需求开发而来 贴近生活 从管理员出拿到分配好的账号密码可以进入系统 使用相关的系统应用 管理员权限最大 其次的用户 管理员总体负责整体系统的运行维
  • django基于Python的热门旅游景点数据分析系统vue

    热门旅游景点数据分析系统综合网络空间开发设计要求 目的是将传统管理方式转换为在网上管理 完成热门旅游景点数据分析管理的方便快捷 安全性高 交易规范做了保障 目标明确 热门旅游景点数据分析系统功能主要包括个人中心 门票信息管理 名宿信息管理
  • nodejs微信小程序+python+PHP电费管理系统的设计与实现-毕业设计推荐

    目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1 1背景及意义 1 1 2 国内外研究概况 1 1 3 研究的内容 1 第2章 相关技术 3 2 1 nodejs简介 4 2 2 express框架介绍 6 2
  • C++11/14/17 学习书籍推荐

    本文是回答一位知友的提问 如果现在买C 17的书学习 里面是否包含C 14 C 11的知识 或者推荐哪个版本 和书谢谢 正文 我理解题主应该是想学习 C 新标准 即 C 11 及之后版本的 C 标准新增的一些实用语言特性 时至今日 C 11
  • 如何学习 C 语言?

    人常说 给一个人看一个程序 你将折磨他一天 教一个人写程序 你将这么他一辈子 你确定要学 C 语言吗 如果准备好了 咱们进入正题 万事开头难 C 语言是一门下限很高上限也很高的编程语言 它是你之后学习操作系统 网络编程 多线程编程等计算机基
  • 计算机毕业设计选题推荐-SpringBoot 桂林旅游景点导游平台

    作者主页 疯狂行者 java领域优质创作者 专注于Java技术领域技术交流 文末获取源码 精彩专栏推荐订阅 在 下方专栏 Java精彩实战项目案例 Java精彩新手项目案例 Python精彩新手项目案例 文章目录 Java精彩实战项目案例
  • java高校学生实习管理系统springboot+vue

    高校学生实习管理系统管理员 学生 教师 管理员功能有个人中心 学生管理 教师管理 公告信息管理 实习申请管理 实习信息管理 实习成绩管理 学生可以注册 可以实习申请 查看公告信息 查看实习成绩 教师给学生添加实习成绩 审核学生实习申请 查看
  • C++ 游戏服务器方向需要多少功底?

    这篇文章是回答一位知友的提问 现在大二了马上升大三 就读于一个很垫底的211 专业是计算机相关的 但是对本专业内容不感兴趣 希望能从事c 后端的工作 对游戏比较有兴趣 但又不知道需要哪方面的知识 希望各位能给出一个客观的评价或者批评 帮忙指