都9012年了,为何我用C语言开发游戏

作者:Jonathan Whiting

原文:https://jonathanwhiting.com/writing/blog/games_in_c/

▍为什么我用C编写游戏

我是不走寻常路的人。我最近制作的所有个人项目游戏都是用'vanilla' C

语言编写的。因此,我可以解释为什么这样做可能很有趣。

▍我从语言中需要什么

有些事情是不能避而不谈的。首先,这款语言必须可靠,我不能花时间去处理那些不是我自己造成的错误。

我的许多游戏都是为Flash编写的,现在Flash已接近暮年,我不想花时间将旧游戏移植到新平台,我想制作新游戏,我需要一个可以相信一段时间的平台。

同样,我想避免将自己绑定到特定的操作系统,并且理想情况下,我希望可以选择开发控制台。因此,重要的是我的编程语言是可移植的,并且具有良好的可移植库支持。

▍我想要一种语言

在我想要的但不是必需的列表上,最重要的是简单性。我发现查找语言功能,以及古怪的“聪明”API令人厌烦。我可以记住一种理想的语言,然后再不必查找任何东西。

处理错误将会消耗许多创造其他代码的时间,我希望产生更少的错误,所以我想要严格的键入,强烈的警告消息和静态代码分析。我希望更容易发现错误,所以我想要好的调试器和动态分析。

我对高清并不感兴趣,但我仍然对性能有所关注。拥有更多可用周期可以拓宽的工作范围。探索现代功能强大的计算机带来的影响尤为有趣。

甚至比我更关心编译器的速度,我不是禅宗大师,等待10秒钟以上是浪费时间,是的,但更重要的是,这破坏了我的精力。我跳到Twitter,突然超过5分钟消失了。

我不是OOP转换者。我一生的大部分时间都用于处理类和对象,但是花费的时间越多,对您为什么要如此严格地结合代码和数据的理解就越少。我想将数据作为数据进行处理,并编写最适合特定情况的代码。

▍替代方案

C++仍然是编写游戏的最常用语言,并非没有道理。目前来说,我手头仍然拥有很多合同是要用C++编写的,但我非常不待见它。

C++满足了我的需求,但严重挫败了我的需求。这个语言极其复杂,尽管它真是个不错的工具,但还是很容易创建隐匿的错误。与C相比,它的编译速度也较慢。它是高性能的,并且提供了C所没有的功能。但是我不想要的功能,而且成本很高。

C#和Java也有类似的问题。它们是冗长而复杂的野兽,我正在寻找一种简洁,简单的生物。他们俩都为使程序员发展成为我反对的强烈的OOP风格做了很多工作。按照大多数高级语言,它们倾向于隐藏复杂性,而实际上并不能阻止它对您的困扰。

我非常喜欢Go。考虑到自发布以来多年以来所学到的内容,在很多方面都对C进行了重新审视。我想使用它,但是有很多障碍阻碍了我。窗口停止工作对于游戏来说是一个很大的痛苦,窗口停止工作是您真正负担不起的事情。游戏的库支持非常差,尽管您可以包装C库而没有很多麻烦,但是这样做会增加很多工作量。利基市场足以使我对长期的相关性感到担忧。

为网络制作东西会很不错,但是感觉就像一个快速发展的可怕环境。随着闪存的死亡,这尤其令人恐惧。我真的不喜欢javascript,它是如此宽松,以至于人们可以在其中编写大量软件。我对尝试没有兴趣。

Haxe比大多数替代品更有前途。如果我再次做网络工作,我将在这里潜水。有一些很好的库支持。我有点担心它的相对年轻,它会持续吗?我对此没有太多要说的,我只是涉足表面。

有人我说拧,我会写自己的语言,即我想使用的语言。我对此很佩服,有时我也想这样做。放弃所有现有的库支持并为将来的兼容性承担全部责任实在太大了。这也是非常困难的,当归结为现实时,我宁愿做游戏,也不愿编程语言。

▍为什么C仍然是我的最佳选择

C很危险,但是很可靠。一把非常锋利的刀既可以割伤手指,也可以割伤蔬菜,但如此简单,要学会谨慎使用它并不难。

它的速度很快,在编译时我想不出什么更快的方法。

它可以在几乎任何东西上运行。通常这比较容易。很难想象会出现这种情况。

-END-

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191129A0FIRW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券