从零学习游戏服务器开发(一) 从一款多人联机实时对战游戏开始
写在前面的话
经常有学生或者初学者问我如何去阅读和学习一个开源软件的代码,也有不少朋友在工作岗位时面对前同事留下的项目,由于文档不完善、代码注释少、工程数量大,而无从下手。本文将来通过一个多人联机实时对战游戏——最后一战,来解答以上问题。
其实,我以上问题在我是一个学生时,我也同样因此而困惑,但是后来,我发现,对于文档缺失、注释缺失的项目,需要自己摸索,虽然是挑战,同时也是机遇——一个不错的学习机会。因为至少有代码,正如侯捷大师所说的的,“源码面前,了无秘密”,所以我们应该“read the fucking code”。
所以,这个系列的文章,我们分析“最后一战”这个游戏源码时,我们不会按照传统的思路:先介绍总结的程序结构,再介绍各个模块的细节,因为,当我们面对一套陌生的源码时,尤其是在文档缺失的情况下,我们根本无法开始就掌握这个项目的总体结构,我们只能从零开始一个个模块的对代码进行阅读和调试,所以我们这个系列的文章也按这个思路来分析,以真实的案例来教会新手一步步读懂一个开源项目的代码。
我们先来看下这个游戏的内容吧,下面给出游戏画面的部分截图:
这是一款类似于王者荣耀、dota之类的5v5实时RPG竞技游戏。
客户端的逻辑比较简单,主要是一些游戏特效和动画(基于Unity 3D),所以这里我们主要分析游戏的服务器端源码。
先介绍一下推荐的源码的运行和开发环境(我的配置):
Windows 7
Visual Studio 2010
服务器端有非常多的模块,这里先截一张主要模块的项目图示:
从下一篇文章开始,我们将介绍如何学习这样的源码。整理源码不易,如果您喜欢此文,帮忙给本文点个赞。
代码下载地址
链接: https://pan.baidu.com/s/1NsjZ2X9qqPKHFJao2DLweg 密码: 8w6g
从零学习游戏服务器开发(一) 从一款多人联机实时对战游戏开始相关推荐
- 分享一套仿英雄联盟大型多人联机实时对战游戏源码(包含完整服务器和客户端源码)...
源码介绍 这是一款类似英雄联盟的 5V5 实时对战游戏,服务器端使用 C/C++ 开发,同时支持 Linux 和 Windows 系统部署:客户端使用 C# + Unity3D 开发. 我们先来看下 ...
- 一套仿英雄联盟大型多人联机实时对战游戏源码(包含完整服务器和客户端源码)...
源码介绍 这是一款类似英雄联盟的 5V5 实时对战游戏,同时支持 Linux 和 Windows 系统部署. 我们先来看下这个游戏的内容吧,这是在我机器上编译后运行的效果图: 登录界面 进入后台配置 ...
- 2020,游戏服务器开发需要掌握哪些,你都具备了吗
序言 一.游戏服务器开发工作介绍 有很多朋友会问我,想从其它开发领域转到游戏服务器开发上来,需要学什么? 或许是因为游戏服务器开发工资高,或许是因为感觉做游戏服务器需要掌握的技术更高级,更具有挑战性, ...
- 游戏服务器开发技术小结
转载请自觉标明原创出处 原文链接:http://gameislife.info/archives/category/游戏开发 游戏服务器开发技术小结 1 概述 本文从开发者的视角,浅析游戏服务器 ...
- Java游戏服务器开发之二--导航帖
Java游戏服务器开发之三--日志 Java游戏服务器开发之四--通讯框架netty Java游戏服务器开发之五--使用工厂模式生成netty Java游戏服务器开发之六--整合spr ...
- 学习游戏服务器开发必看,C++游戏服务器开发常用工具介绍
C++游戏服务器开发常用工具介绍 在软件开发过程中需要使用的工具类型实属众多,从需求建模到软件测试,从代码编译到工程管理,这些工具都对项目有着不可替代的作用.庄子有云,"吾生也有涯,而知也无 ...
- 2020最新版C/C++学习路线图--游戏服务器开发重点
黑马程序员C/C++学习路线图大纲中第六阶段的学习是游戏服务器开发的学习:主要介绍了C/C++学习路线图的游戏服务器开发的学习目标,C/C++学习路线图的游戏服务器开发的市场价值,C/C++学习路线图 ...
- 学习JAVA游戏服务器开发需要了解的情况
一,游戏服务器开发的工作介绍 近来遇到有很多人想从其它开发领域转到游戏服务器开发行业上来,他们或许觉得游戏服务器开发工资高,或许觉得做游戏服务器需要掌握的技术更高级,可以锻炼自己,或许觉得想换个环境等 ...
- 如何学习java游戏服务器开发?
为什么游戏服务器很多都用Java开发 Java 做游戏服务器开发的优势还是很多的,<我的世界>的服务器就是Java开发的.Java技术比较成熟,大数据,云计算,网站App后台,基本都采用J ...
最新文章
- 人工神经网络研究的发展及特性,以前不叫人工智能
- tm1650中文资料_TM1616,TM1650,TM1651 SOP16原厂直销,技术支持
- 怎样cp文件夹时忽略指定的文件夹和文件
- C++中log的底数理解
- springboot----热部署
- C++ 内存模型——虚表(vtbl)的访问
- 页脚保持在未满屏页面的底部
- 读书书签-《高等应用数学问题的MATLAB求解》第三版,薛定宇 陈阳泉著
- 尚观嵌入式c语言视频教程
- IDA Pro 权威指南学习笔记(十三) - 基本代码转换
- 建站百科|网站Banner风格、样式大解析
- clang diagnostic
- WIN 10 挂载分区之diskpart工具
- 【考前冲刺】计算机三级网络技术之综合题-IP地址计算
- 基于python的影评数据分析_基于Python聚焦型网络爬虫的影评获取技术
- 记一次钉钉群聊机器人的开发
- 成功的在项目中使用Squirrel
- R语言ggplot2可视化:使用ggpubr包的arrangeGrob函数将多个可视化结果整合为gtable对象、使用as_ggplot函数将gtable对象转化为ggplot对象
- 网页引用优酷视频并添加封面自动播放
- LLDP链路层发现协议
热门文章
- java递归获取树结构的指定层级、指定层级之上(向上递归(包含父集所有、爷爷集所有...)(父集单独、爷爷集单独...))、指定层级之下所有的(子集、孙子集...)和list集合转Tree树结构
- python把字典保存到文件_将Python字典保存到文件中,并定期更新它
- 前端开发环境与最佳实践
- markdown 文本内跳转,生成目录
- 毕业论文_页眉+页码
- 【系统设计】本地生活之附近商家 LBS 服务实现
- android 系统源码分析
- [玩转UE4/UE5动画系统>应用篇>功能模块] 之 ALS V4地面站立动作状态机详解
- QQ邮箱接收邮件报警
- C/C++编程学习 - 第16周 ① 含k个3的数