游戏引擎|你可以永远相信C++


游戏引擎|你可以永远相信C++
文章图片
游戏引擎|你可以永远相信C++
首先 , 让我说一个围绕编码界的错误观念 , 即“ C ++比Python低” , 或者您可以将“ Python”替换为许多其他动态编程语言 。
嗯.....不
首先让我们定义什么是低级 , 定义“低级”将帮助我们理解为什么C ++在游戏中如此受欢迎 。
低级只是机器代码的另一个计算术语 。 因此 , 存在的唯一低级语言是汇编 。
低级语言通常与具有低级功能的高级语言混合在一起 。
有什么不同 ?
【游戏引擎|你可以永远相信C++】区别在于 , 对于低级语言 , 它必须将语法明智的一对一映射或非常接近于机器代码 。
看一下汇编代码和C代码 , 差异很大 , 因此C或C ++都不是低级语言 , 它们都是高级语言
但是它们仍然具有低级功能 , 例如 , 它们可以操纵内存或从寄存器中读取和写入数据 , 并且通常可以像Assembly一样访问硬件 。
但是 , 它们是通过使用库来实现的 , 而通过以语法实现这些功能的实现则要少得多 。
事实是C和C ++并不是低级别的 , 因为它们永远都不需要 , 这两种语言都可以内联汇编代码并可以链接从Assembly源代码文件生成的目标文件 , 从而为您提供了两种与Assembly混合的方式 。
然而 , 由于硬件变得越来越复杂的原因 , 汇编的使用越来越少 , 而汇编(低级语言的另一个特性)的使用也越来越少 , 因此这些功能已转换为C / C ++库 。
将1对1映射到机器代码对于性能而言是非常重要的 。 它可以帮助您减少机器代码 , 并允许使用某些硬件加速功能 。 两者都对性能至关重要 。
C / C ++在生成尽可能少的机器代码方面表现出色 , 而在不这样做的情况下 , 因为较长的代码会利用某种形式的硬件加速 。
因为C是真正优先考虑性能的第一语言 , 所以它已成为OS开发的语言 。 C ++是C语言传统的延续 , 重点是OOP 。 当您必须处理复杂数据以及与数据的复杂代码交互时 , OOP是理想的选择 。
像许多其他库一样 , 图形库也是由操作系统提供的 , 并且由于操作系统通常是用C或C ++编写的 , 所以这些库是用C或C ++或二者兼有的 。
因此 , 自从黎明以来游戏就一直使用C ++就不足为奇了 。
但是 , 无论其他人在这里回答什么 , C ++都不是游戏开发中最受欢迎的语言 。 事实上 , 至少对于游戏开发而言 , C ++是一种垂死的语言 。
这可能会令人惊讶 , 因为在游戏开发中一再提到C ++ 。
如今 , 绝大多数游戏都是使用游戏引擎编写的 。
发生这种情况的原因是 , 正如我们早先所说的那样 , 硬件已经变得如此复杂 , 不仅很难在Assembly中编写代码 , 甚至在C ++中也是如此 。
有两个主要的游戏引擎Unity和Unreal 。 到目前为止 , Unity最受欢迎 , 因为它首先出现在市场上 , 因为从第一天开始 , 它就支持移动开发 , 这是一个发展迅速的领域 , 而且它的重量很轻 。
因此 , 大多数游戏不是用C ++编写的 , 而是用C#编写的 。
第二个候选对象是Unreal , 它确实允许使用C ++编写游戏 , 但这是吗?
虚幻C ++是一个很奇怪的C ++ , 尽管它是C ++ , 但它确实具有C ++框架中通常不具备的2个功能:GC和Reflection 。 很明显 , Epic试图使它更接近Unity的C# 。 但是 , 即使虚幻游戏仍然使用C ++ , 它也向前迈了一步 。
虚幻技术引入了一种新的语言 , 即一种称为“蓝图”的可视编码语言 , 这种语言在艺术家和其他非编码人员中非常流行 , 但自从成为Epic的真正方便且非常积极地支持后 , 甚至对于游戏编码人员来说 , 这也是一种规范 。


推荐阅读