微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

现代C游戏编程示例

现代C功能在多大程度上如:

>多态性,
> STL,
>异常安全/处理,
>具有基于策略的类设计的模板,
智能指针
>新建/删除,放置新/删除

用于游戏工作室?我有兴趣知道图书馆的名称和他们使用的C功能.例如,Orge3D使用所有现代C功能,包括异常和智能指针.换句话说,如果我正在寻找一个使用现代C的游戏库的例子,我会去Orge3D.但是我不知道这些功能是否阻止游戏工作室使用Orge3D.

此外,我不知道是否还有其他例子.例如,我稍后使用Box2D一段时间,但它仅使用了placement new,而将class关键字用作C功能.这些类中的所有成员都是公开的,即使是封装也是坏的.

理想情况下,如果C功能是所有情况下最匹配的,这些将最常用.但似乎没有.阻碍是什么?显而易见的是要读一堆书,但这只是一半理由.这个问题是“C++ for Game Programming – Love or Distrust?”的后续行动(从我的回应中我得到一个印象,许多C功能还没有在游戏中使用,这不一定是应该的).

解决方法

我已经在两家游戏公司工作过,看到了一些代码库,并且在游戏开发者之间观察了一些关于这些问题的辩论,所以我可以提供一些意见.每个点的简短答案是它在工作室甚至从同一个工作室的团队到团队变化很大.下面列举的长答案:

>多态性,

由一些工作室使用,而不是其他工作室.许多团队仍然倾向于避免这种情况.虚拟功能呼叫的确是成本昂贵的,即使在现代游戏机上,成本也是显着的.在那些使用多态性的人中,我的愤世嫉俗的假设是只有一小部分使用它很好.

> STL,

由于许多与多态性相同的原因,分裂在中间. STL易于使用不正确,所以许多工作室选择避免在这些理由.在那些使用它的人中,很多人将其与自定义分配器配对. EA创建了EASTL,它解决了游戏开发中许多STL问题的原因.

>异常安全/处理,

很少的工作室使用异常处理.现代游戏机的第一个建议之一是关闭RTTI和例外. PC游戏可能会使用异常更大的效果,但是在控制台工作室中,异常非常频繁地被避免.它们增加代码大小,这可以是一个很高的价格,并且在一些相关的平台上不被支持.

>具有基于策略的类设计的模板,

基于政策的设计…我没有遇到过任何一个.模板经常用于内省/反射和代码重用等内容.当我阅读Alexandrescu的书时,基于政策的设计似乎对我来说是一个有缺陷的承诺.我怀疑它在游戏行业中的用处非常大,但是从工作室到工作室也会有很大差异.

智能指针

智能指针被许多也使用多态和STL的工作室所接受.控制台游戏中的内存管理是非常重要的,所以很多人不喜欢引用计数智能指针,因为他们没有明确的释放它们,但这些肯定不是唯一的智能指针.智能指针的想法总体上仍然在吸引.我认为这在2-3年会更为常见.

>新建/删除,放置新/删除

经常使用这些.它们经常被覆盖以使用下面的自定义分配器,从而可以跟踪内存并轻松找到泄漏.

我想我同意你的结论. C不会在游戏工作室中使用尽可能多的程度.这是有好的和坏的原因.好的是因为对性能的影响或记忆的关注,坏的是因为人们陷入困境.在很多方面,以一贯的方式做事情是有道理的,如果这意味着C有限C,那么C意味着C有限.但是有一些反C偏见浮在一边,有些是有道理的,有些还没有.

原文地址:https://www.jb51.cc/c/112063.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐