我最近所有个人项目游戏都是用“纯” C语言开发。解释为什么要这样做可能很有趣。

预警:一大堆枯燥的编程语言观点将要出现。

我需要什么样一种编程语言

有些条件是不可协商的。

首先,语言必须可靠。我无法接受花时间去处理那些不是我自己原因造成的 bug。

我的许多游戏都是为 Flash 开发的,现在 Flash 快要死了。我不想花时间将旧游戏移植到新平台,我想制作新游戏。我需要一个可以信任一段时间的平台。

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

我理想中的编程语言

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

处理 bug 是巨大的精力消耗。我希望错误能尽可能少的产生,所以我需要严格的类型检查,强烈的警告消息和静态代码分析。我希望 bug 更容易被发现,所以我想要好的调试器和动态分析。

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

进一步,我更关心编译器的速度。我不是禅宗大师,等待 10 秒钟以上会是一种浪费。而且更重要的是,等待会打断我的工作流程,刷刷 Twitter,突然发现 5 分钟或更多时间就没有了。

我不是一个虔诚的 OOP 使用者,尽管我大部分职业生涯经历都在处理类和对象,但是花费的时间越多,对为什么要如此严格地结合代码和数据的理解就越少。我需要将数据作为数据进行处理,并编写最适合特定情况的代码。

替代方案

C++ 仍然是开发游戏的最常用语言,并非没有道理。我仍然用它来完成几乎所有合同项目,但我非常不喜欢它。

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

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

我非常喜欢 Go 语言,从很多角度来说,它是 C 语言的重生。我很想用它,但是有很多障碍阻碍了我。停止世界的垃圾收集对于游戏来说是一个很大的痛苦,停顿是不能接受的事情。游戏的库支持也非常差,尽管包装 C 语言库也不麻烦,但是这样做还是会增加很多工作量。

为 Web 开发添加功能会很不错,但是一个快速变化的开发环境还是比较可怕。尤其是 Flash 的死亡让我觉得恐惧。我真的不喜欢 JavaScript,它是如此宽松,我对大家竟然利用它开发了大量代码感到惊奇。但我没有兴趣尝试。

Haxe 看起来比大多数竞争者更有前途。如果我再次做 Web 开发我可能会更多深入研究。它有一些很好的库支持。我有点担心它的相对年轻,它会持续吗?目前我没有太多要说的,我只是涉足表面。

有些人会说不如自己造一个轮子,编写自己的语言,自己真正想用的语言。我很佩服这个想法,有时我也想这样做。但放弃所有现有的库支持,并为将来的兼容性承担全部责任实在太挑战了。当归结为现实时,我宁愿做游戏,也不愿去实现一门编程语言。

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

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

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

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

库和工具支持是强大且持续的。

我有些悲伤地说,但这仍然是我的语言。

我绝对不是要说“您也应该使用C语言”。我非常感激这里的偏好是非常具体且不寻常的。我已经比大多数人编写了更多的“纯” C 代码,这当然是我感到舒适的一部分。

是的,就是这样 :-)

【编辑推荐】

【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0

c语言开发游戏趋势,都9012年了,为何我还坚持用C语言开发游戏相关推荐

  1. c语言开发与游戏时间,都9012年了,为何我用C语言开发游戏(是的,C语言)

    原标题:都9012年了,为何我用C语言开发游戏(是的,C语言) 作者:Jonathan Whiting 原文:https://jonathanwhiting.com/writing/blog/game ...

  2. 三星oneui主屏幕费电_都 9012 年了,三星系统还「负优化」吗?

    近日,三星正式向国内 Galaxy S9 系列.Note9 系列推送了 Android 9 正式版.此次除了系统版本的重大升级外,三星还为用户带来全新设计的用户界面:One UI. 在宣传中,三星称 ...

  3. 都9012年了,怎么还会有人不会面试?

    作者:Liz 来源:纯洁的微笑 我是一家互联网公司的一线HR,负责公司技术人员的招聘.今天我有两个候选人又被fail了. 关于这个岗位,我也很无奈.按理说,全是基础岗位的招聘,薪资也给的不算低,应该很 ...

  4. 做web前端开发就是爽!不仅工资高而且没事还能写个游戏玩!真棒

    web前端程序员薪资高 web薪资 17000左右 就是好,可以随便玩游戏!!! 程序员是这样玩游戏的 GitHub经常有一些很有趣的项目,特别是一些小游戏,有的烧脑,有的沙雕,玩惯了商业化游戏,这些 ...

  5. 2022年神仙打架,各家主机PC游戏厂商都拿出了招牌菜

    此前,游戏新知曾报道过2022年值得关注的手游作品,有不少读者在文章评论区提出,2022年PC与主机上的新作品同样值得期待,因此游戏新知也对未来一年的PC与主机游戏作品做了盘点. 需要注意的是,这份名 ...

  6. 游戏设计的艺术:一本透镜的书——第十章 某些元素是游戏机制

    这是一本游戏设计方面的好书 转自天之虹的博客:http://blog.sina.com.cn/jackiechueng 感谢天之虹的无私奉献 Word版可到本人的资源中下载 第十章 某些元素是游戏机制 ...

  7. unity5.6滑雪游戏skiing源码DownhillSkiingGame。支持安卓+IOS双端 C#语言开发。

    unity5.6滑雪游戏skiing源码DownhillSkiingGame.支持安卓+IOS双端 C#语言开发.拿来学习研究和二次开发都很不错. 源码下载 unity5.6滑雪游戏skiing源码D ...

  8. flutter能开发游戏吗_游戏开发者都擅长“打自己的游戏”吗?

    作者:箱子 Vice 记者 Patrick Klepek 最近在推特上发起一个话题:身为游戏开发者,你是否擅长玩自己的游戏. 得到的反馈出乎意料,相当一部分设计师.美术.作家都站出来承认:即使是自己参 ...

  9. 张小龙「跳一跳」都玩到 6000 多分,是时候掌握微信小游戏高级开发了

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作者 | 凌华彬.王哲 责编 | 徐威龙 [CSDN 编者按]今天,在 2018 年度微信公 ...

最新文章

  1. 爬取30亿人脸被600家执法机构使用,这家公司揭美国数据隐私老底
  2. 美国人到底为什么不待见人脸识别技术?
  3. 99.99%准确率!AI数据训练工具No.1来自中国
  4. TC的handle绿了……菜鸟表示泪流满面
  5. 120. Leetcode 516. 最长回文子序列 (动态规划-子序列问题)
  6. wxWidgets:显示 wxTreeListCtrl 的示例
  7. 自定义Chrome插件Vimium
  8. MyEclipse小问题与汉字处理
  9. linux l文件共享,llinux服务器文件共享的一种简单的方法
  10. 华强北二手手机卖不出去,闲鱼砸一亿现金帮扶
  11. mysql5.6.22编译安装教程_Linux CentOS6.0下编译安装MySQL 5.6.22
  12. Ubuntu 11.10搭建和配置Nagios
  13. UVA445 Marvelous Mazes
  14. element下拉框回显问题
  15. Android技术精髓-Bitmap详解
  16. LayaAir UI 组件 # RadioGroup 单选框按钮组
  17. AE(4)实例:更换衣服色彩
  18. 【IoT】 产品设计与工艺:塑料表面处理工艺
  19. 台式电脑桌面没有计算机图标,电脑桌面图标全部消失怎么恢复 电脑桌面图标设置随意放置的方法...
  20. 深度学习:GAN 对抗网络原理详细解析(零基础必看)

热门文章

  1. 原生编辑器_免费开源的GIF制作神器,可录屏幕/摄像头/画板,自带编辑器
  2. java long 对应mybati类型_修改 mybatis-generator 中数据库类型和 Java 类型的映射关系...
  3. leetcode -python 三数之和原创
  4. sql导航函数 NTH_VALUE
  5. word2vector 讲的比较好的文章
  6. NTU 课程笔记:Nonparametric statistics
  7. 【数学建模】线性代数知识汇总,参加建模大赛的小伙伴看过来,它会是你的最优选
  8. tableau可视化数据分析60讲(二)-tableau入门篇之各模块功能介绍
  9. 自然语言处理NLP-100例 | 第一篇:如何用Python做情感分析?
  10. 【图像处理opencv】_图像几何变换