为什么游戏引擎大多选择使用 C++ 而不是 C 开发?

来源:互联网 发布:广电网络一年多少钱 编辑:程序博客网 时间:2024/06/14 14:25
                                                                                                     

作者:crazybie
链接:https://www.zhihu.com/question/26591038/answer/89407866
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

在育碧干这么些年,我也来顺便说一下。先说说几个案例吧

1 id soft是业界知名的游戏先驱,在前几代游戏开发上几乎全部都是纯C(doom系列等等),卡尔马克是3D图形界响当当的明星。最近几代也开始转C++。他的回答是,C++是很容易写出丑陋的代码,但是C++用的好的话能写出更漂亮的代码。

2 开源软件的基石GCC编译器从3.2左右开始转C++实现。转之前的状态已经是用尽各种技巧,代码非常复杂,普通开发人员难以方便的贡献代码,整体进度很缓慢的程度。他们选择C++的理由是,C++能让代码更干净,可读性和维护性更好。Clang编译器一开始就是用C++开发。

3 linus骂C++大家都知道吧。其实人家骂是因为当时C++编译器很不成熟生成的代码不适合跑操作系统。人家后来是站出来澄清过。前段时间做git客户端他还是选了C++和qt。

这几个例子其实说明一点:
代码可维护性上,好的C++代码是远远大于好的C代码的,C++代码可以更干净。

因为C语言真的很优秀,跨平台,速度快,工业化就这几点这从它开始诞生到现在就没有对手,唯一比较弱的就是语言表达能力不是很强,而这一点其实跟其他几点是有些互斥的。C++正是为弥补这一点诞生的,目前也只有C++做到了相对C几乎无损耗的高抽象能力,而且还能保持C的所有特点(当然同时也引入了很多问题), 而这也注定成为C++语言复杂的原因。

简单的说,只要适合C但是又需要更好的维护性的时候,C++就很适合。

为什么以前都是C做游戏:
1 其实以前C编译器也不行的,都用汇编
2 规模小重用需求不高
3 速度快,简单,好普及

现在为什么还用C做游戏的部分组件:
1 因为规模不大
2 C有统一的二进制接口(ABI)
3 对于简单的任务C更简单直白

现在为什么很多时候也避免用C++
1 太复杂容易用错
2 代码组织不好的话,编译慢迭代慢
3 不够动态
4 底层特性太多,不够安全

为什么育碧之类的大公司依然坚定的用C++
1 工业化好:上中下游都直接首先支持C++,民间普及度也高
2 可以手动控制各种细节,优化的空间非常大。同样的游戏,肯定优先选更流畅逼真的,人永远是视觉动物。
3 可以更好的团队开发
所以相对这几点他的缺点其实也不算啥了。说到底其实只是一种交换而已。




查看原文:http://www.zoues.com/2016/10/20/%e4%b8%ba%e4%bb%80%e4%b9%88%e6%b8%b8%e6%88%8f%e5%bc%95%e6%93%8e%e5%a4%a7%e5%a4%9a%e9%80%89%e6%8b%a9%e4%bd%bf%e7%94%a8-c-%e8%80%8c%e4%b8%8d%e6%98%af-c-%e5%bc%80%e5%8f%91%ef%bc%9f/
0 0