游戏架构更新的快,补丁补丁是游戏行业的常事

游戏架构更新的快,补丁补丁是游戏行业的常事

当今世界上大多数游戏都是用 C++ 编写的,那么为什么要拒​​绝呢?

该怎么办? 写一些关于游戏的文章。

编写游戏时首先应该考虑什么? 制作什么样的游戏,如何实现图形、音效和游戏逻辑。

使用 C++ 时首先应该考虑什么? 定义跨平台数据类型抽象,实现通用集合类c++游戏开发程序员,设计宏来实现RTTIc++游戏开发程序员,编写支持Unicode并可以与其他各种字符串类型相互转换的字符串类,自定义内存分配器,编写shared_ptr,并组织预定义的内存分配器。编译头文件游戏角色,旨在实现Object基类来处理跨DLL内存管理等问题...

那么这和制作游戏有什么关系呢? 如果不做好这一点,就很难开始编写游戏。

做到这一点需要多长时间? 很多时间。

c++游戏开发程序员_c做游戏开发_c++游戏开发

这就是为什么你要花大量的时间关心解决语言本身的缺点,而不是游戏本身的原因。 尤其是,人们往往有完美主义倾向。 每一个基础问题都可以揭示更深层次的问题并进行进一步的优化,进一步消耗宝贵的时间。 这也可以解释为什么有这么多的引擎和引擎基础,因为时间都花在了底层上。

新技术出现得很快,游戏架构更新得也很快。 一个又一个补丁在游戏行业中是很常见的事情。 如果你无法修复它,你就必须用新的替换它,无论你是否用神圣的C++编写它。 游戏开发者是消耗品,所以要保持开放的心态,生命短暂,享受当下。 有句话说“好的管理者不会用坏的工具折磨程序员”。 同样,聪明的程序员不会用C++折磨自己。 如果一定要用的话,尽量找现成的类库,除非你想专攻底层技术。

在软件开发中,游戏开发的方向看似有一个非常明确的目标,但实际上却是一个非常广阔的领域。 如果在开始时没有得到一些指导,很容易误入歧途。 相反,如果你能在走这条路之前做到,得到一些前人的指点,就能达到事半功倍的效果。

平台和编程语言选择

首先,游戏开发平台有很多种类型:

c做游戏开发_c++游戏开发_c++游戏开发程序员

如果你想从事移动平台的游戏开发,Android主流的JAVA语言,iOS主流的Objective-C语言,那么你就得学这个平台的主流语言,主流的游戏开发语言​​​​在未来很长一段时间内开发学习,个人游戏机上都会包含它。 它仍然是C++。 但这并不是说不同平台上的游戏开发没有共同点。 学习这个在另一个平台上是没有用的。 事实并非如此。 在编程世界里走得越远,你就会发现很多事情的本质都是相似的。 比如,如果你对C++的基本语法有扎实的理解(而不是死记硬背),以后转Java语言就会更容易。 这并不难,因为它们本质上的面向对象特性和各种编程语言特性是相同的。 所以,要想走得远,学习的时候就不能单纯的肤浅。 一个知识你越深入底层,你就越能看到与其他知识的相同点和相似之处,所以你会比别人更容易。 不过,当然,最好一开始就尽可能的坚持自己的专属领域和编程语言,这样才能尽快在这个领域占据一席之地。

无论你选择哪个平台,游戏开发浩大的工程都离不开游戏引擎,所以有两条路线供你选择:

路线一:仅使用游戏引擎

对于第一种路线,使用游戏引擎并不困难,因此适合想要快速开始从事游戏开发工作的人。 我们工作的时候大部分时间都不会开发自己的游戏引擎,所以这对我们的日常工作没有太大的影响。 对于只使用游戏引擎的人来说,入门阶段需要做的就是阅读引擎的教程(书籍、视频、在线博客、在线教程、官方帮助文档等)并熟练掌握编程语言在教程中使用。

所以你要做的第一件事就是了解流行的游戏引擎。 因为不同平台下的性能不同,支持的编程语言也不同,所以不同平台流行的游戏引擎也不同(方括号里的是基于开源、易用性、性能特别推荐的)及效果)其他方面推荐综合水平):

c++游戏开发_c做游戏开发_c++游戏开发程序员

在选择游戏引擎时,尽量使用流行的游戏引擎,因为这种游戏引擎的流行意味着官方的功能比较完善且易于使用,并且问答社区中有更多的人回答问题。

每个游戏引擎都有自己的优点。 Unity3d使用方便,对性能要求不高,但效果不够华丽。 因此,它一般用在移动平台上,而不是电脑或游戏机上。

Unreal之所以胜出,是因为它开源、免费,而且效果非常出色。 但它对设备要求比较高,所以常被用来开发大型、效果华丽的游戏。

Cocos2d-x也是开源免费的,在2D领域有很深的造诣,但缺点是不允许可视化开发。 另外,想要了解游戏引擎的原理,首先要考虑的就是开源游戏引擎。

不同的游戏引擎所使用的编程语言或者脚本语言可能会有所不同,所以当你想要学习某种游戏引擎时,你还应该关注游戏引擎所使用的语言。 在大多数情况下,Windows 使用 C++,结合 lua 或 python 脚本语言。 ios平台使用Objective-C或swift,Android平台使用Java。 但这并非不可避免。 例如,Unity可以在各种平台上使用C#或javascript脚本语言。 以下是目前商业上流行的游戏引擎的详细对比:

c++游戏开发_c++游戏开发程序员_c做游戏开发

1)虚幻4(虚幻4)

c++游戏开发_c++游戏开发程序员_c做游戏开发

2)Unity3D

c++游戏开发_c做游戏开发_c++游戏开发程序员

3)Cocos2d系列(包括Cocos2d-x、Cocos2d-ObjC、Cocos2d-html5、Cocos2d-xna等)

c++游戏开发程序员_c做游戏开发_c++游戏开发

4) 哭泣引擎3

c++游戏开发程序员_c++游戏开发_c做游戏开发

5) 冻伤3 (霜冻3)

c++游戏开发_c做游戏开发_c++游戏开发程序员

6) 白鹭

但使用游戏引擎毕竟只是表面现象,看不到本质。 当游戏开发过程中出现某些问题或特殊需求时,你往往很难处理。 而且游戏引擎技术日新月异,你学到的几乎都是别人留下的方法,而不是底层的思想。 如果以后出现其他游戏引擎,你就得重新学习如何使用其他游戏引擎。 很多大公司甚至有自己的内部专用引擎(如网易的风魂引擎、金山的剑网3引擎、蜗牛公司的Flexi引擎等)。 因此,仅仅走这条路可能不会走得太远,而且可能会变得越来越无聊。

c++游戏开发_c做游戏开发_c++游戏开发程序员

路线二:使用游戏引擎,深入了解游戏引擎原理

对于第二条路线,深入研究游戏引擎原理不会在短时间内给你的工作带来什么突出的成果,但可以弥补只使用游戏引擎带来的问题。 而且,学习游戏引擎原理更多时候不仅仅是为了自己。 未来我想打造一个游戏引擎,但我想更深入地了解自己的游戏引擎并更好地使用它。 当然,千里之行始于足下。 经常学习游戏引擎底层原理的人,当积累了足够的经验后,就可以构建自己的游戏引擎。

对于想要学习游戏引擎原理的人来说,需要给自己设定明确的长期目标:

1)首先,一开始你可能对游戏引擎没有任何了解。 建议先使用一两个游戏引擎(我推荐C++程序员学习Unreal 4游戏引擎,现在免费开源,值得学习。那些不开源的游戏引擎要尽量不要不要研究它,因为它对学习原理没有多大贡献)。

2)因为游戏开发是一门实时渲染的艺术,所以离不开图形库的学习。 目前主流的图形库是Windows平台的DirectX 11和通用平台的Opengl。 您需要至少开始使用这两个图形库之一。

c++游戏开发程序员_c++游戏开发_c做游戏开发

3)然后,你就可以开始阅读计算机图形学书籍了。 如果你发现自己的理论基础不足,这时候就需要补充线性代数、基础微积分、3D数学等知识。

4)游戏引擎包含各个部分,上面的渲染图只是游戏引擎的一部分。 其他还有shader编写、地形编写、物理引擎编写、模型与动画、仿真体设计、网络编程等。完成渲染部分的基础学习后,可以选择自己感兴趣的部分专攻毕竟,我们大多数时候,实际工作都是团队开发而不是单独工作。 每个人都应该精通自己擅长的事情。

文章来源:https://www.163.com/dy/article/E5I8PD2V0511CSQJ.html