IT培训网 - IT职场人学IT技术上IT培训网
如何学习c++游戏服务端编程
时间:2018-12-24 14:09:54 来源:编程网 作者:IT培训网 已有:名学员访问该课程
c++游戏服务端编程有什么书籍推荐吗?
用过java node但是c++项目如何编译运行都不知道,有没有服务端开发书籍推荐
目前C++做服务器,多用于高并发及时性强的领域,比如游戏,金融等。而游戏服务端编程主要是三个方面,网络,数据存储,逻辑处理。后两个方面各公司有不同的策略,可以进入公司再了解。而游戏服务器编程的重中之重就是网络,如果你精通了Cpp网络编程,学习任何公司的框架都不成问题。
在我看来,游戏服务器端编程除了大量的业务逻辑coding,主要有两个大的方向:1、分布式系统,2、服务器端游戏引擎。
分布式系统
分布式的方向比较通用,分布式锁、分布式队列、分布式缓存、分布式存储等等,不仅仅可以做游戏,还可以做任意的服务器端,比如说微信、qq、滴滴打车、云,等等。随着paxos/raft的火热,近年来分布式的发展有加速之势。知乎也有一些帖子可以参考。
服务器端游戏引擎
服务器端游戏引擎方向比较专,适用于特别喜欢游戏的人,不仅仅需要懂服务器还需要懂引擎,目前这方面的人才比较缺乏。我对这个方向也没啥经验,仅仅知道一些关于PhysX的知识。
要深入了解游戏服务器的套路,需要进入到相关的团队,在开发运营中和大家一起摸索总结。在这之前,需要学习一些基础知识。游戏服务器端编程需要的基础知识主要有:1、编程语言,2、算法,3、设计模式。
编程语言
每个公司不同,据我所知有主要有C++、go、java、python。我司用C++。不管用啥,对所选的编程语言都要足够的熟悉。比如说学C++连vector::reserve都不知道的人,不适合做服务器。关于编程语言的书就数不胜数了,对于C++,推荐《effective STL》。懒人可以不看其它的书,但是这本必看,因为薄不浪费时间,看完不会坑队友。
算法
游戏服务器程序本身就是算法密集型,cpu是为所有在线的玩家服务器的,低效的代码浪费的cpu时间在服务器端可能会成倍地被放大,算法优化是家常便饭。一个团队可能通常只需要一个特别精通算法的人,来进行攻坚和困难的算法优化,但是其他人也要懂一些基本的算法。游戏的业务逻辑本身也非常复杂,多重嵌套的循环无处不在,不懂算法的人连写出来的循环都怪怪的,一不小心就将复杂度提升了一个数量级。算法方面的书籍也是非常之多,但是如果有时间,推荐找一个acm的网站刷题,至少刷一百题以上,至此,不能说写出来的服务器代码多么高效,大多数情况下至少不拖后腿了。刷题可以亲身体会到每个优化点在大规模输入的情况下对执行时间的影响程度,这种体会正是服务器编程所需要的。《算法竞赛入门经典》是学习算法的好书。
设计模式
说是“熟悉面向对象”可能会更贴切,因为模式的名字在最后反而不重要了。设计模式是为了在组织代码的时候能够按照比较便于维护和扩展的套路。关于设计模式的作用,工程的代码量越大越能体现出来、项目在线上运营的时间越长也越能体现出来。设计模式的领悟也要靠写很多代码,在C++的领域,学习使用QT是了解设计模式不错的途径。《java与模式》是了解设计模式的好书。
此外,网络、操作系统都是游戏服务器必须掌握的知识,服务器编程的入门书籍推荐《linux高性能服务器编程》、《unix网络编程第二卷》。
如果你连C++工程的编译运行都做不到,建议从C# (.net core)入手吧。
也许你很快就发现你这辈子都用不上C++呢。
以后碰上对运行效率要求极苛刻的情况,也可以用C++写算法,用C#调用。
学习C++最好的环境并不是看书,而是直接参与项目,这种上古语言,其实已经很少有什么书能教你构建一个好的工程了。合理的使用方式都在“苟存”的项目中,你如果没有机会参与实际项目,还是使用其他语言,这样能让你有更多时间去接触和学习语言之外的计算机知识。
如果你非要通过自学C++做项目,送你一句话:皓首穷经,岁月蹉跎。
每期开班座位有限.0元试听抢座开始!
温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。