发布时间:2023-11-27 03:32:39 浏览量:97次
我最近所有个人项目游戏都是用“纯” 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 代码,这当然是我感到舒适的一部分。
是的,就是这样 :-)
原文地址:
https://jonathanwhiting.com/writing/blog/games_in_c/
参考阅读:
一种灵活的API设计模式:在Spring Boot中支持GraphQL
支付核心系统设计:Airbnb的分布式事务方案简介
算力提升117%,资源使用下降50%,打开集群优化正确姿势
Golang实现单机百万长连接服务 - 美图的三年优化经验
本文作者 Jonathan Whiting ,由 Tim 翻译,转载请注明出处,技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。
高可用架构
改变互联网的构建方式
热门资讯
探讨游戏引擎的文章,介绍了10款游戏引擎及其代表作品,涵盖了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戏设计领域和数字艺术教育的重要性,欢迎点击咨询报名。
游戏中玩家将面临武侠人生的挣扎抉择,战或降?杀或放?每个抉定都将触发更多爱恨纠葛的精彩奇遇。《天命奇御》具有多线剧情多结局,不限主线发展,高自由...
3. B站视频剪辑软件「必剪」:免费、炫酷特效,小白必备工具
B站视频剪辑软件「必剪」,完全免费、一键制作炫酷特效,适合新手小白。快来试试!
4. 手机游戏如何开发(如何制作传奇手游,都需要准备些什么?)
如何制作传奇手游,都需要准备些什么?提到传奇手游相信大家都不陌生,他是许多80、90后的回忆;从起初的端游到现在的手游,说明时代在进步游戏在更新,更趋于方便化移动化。而如果我们想要制作一款传奇手游的
5. 3D动画软件你知道几个?3ds Max、Blender、Maya、Houdini大比拼
当提到3D动画软件或动画工具时,指的是数字内容创建工具。它是用于造型、建模以及绘制3D美术动画的软件程序。但是,在3D动画软件中还包含了其他类型的...
三昧动漫对于著名ARPG游戏《巫师》系列,最近CD Projekt 的高层回应并不会推出《巫师4》。因为《巫师》系列在策划的时候一直定位在“三部曲”的故事框架,所以在游戏的出品上不可能出现《巫师4》
一、声音优化在绝地求生游戏中能够提前听到脚步声往往能提前取得战机,主要有两种方法:1、利用SoundLock软件,软件的功能主要是限制最大音量。百度搜索...
众所周知,虚幻引擎5(下面简称UE5)特别占用存储空间,仅一个版本安装好的文件就有60G,这还不包括我们在使用时保存的工程文件和随之产生的缓存文件。而...
UI设计师、动画设计师、特效设计师每一个职位的功能和负责的方面都不同。所以,3D美术这方面需要大量的人才。但是要成为一个3D游戏建模师,也不是那么...
想让你的3D打印模型更坚固?不妨尝试一下Cura参数设置和设计技巧,让你轻松掌握!
最新文章