为什么我要用C写游戏

我就是这样一个与众不同的老顽固。最近所有由我单独完成的游戏项目完完全全都是用C写的。肯定没人这样干过,所以我觉得这值得我解释下为什么我要这样做。

枯燥的编程语言观点要来啦!嗯,我已经警告过你们了。

从一种语言中我们所需要的

有些事是毋庸置疑的。首先,它必须是可信任的。我不能花费我的时间去解决那些不是我导致的bug。以前许多游戏都是用flash来编写的,然而现在

flash正在面向灭亡。我也不想花费不必要的时间将老游戏移植到新的平台,我想要的是制作新的游戏。因此我需要一个在一段时间内都能自信使用的平台。同

样,我想要避免自己被一个特定的操作系统捆绑。理想状况下我喜欢我可以有发展控制台的选项。所以选择一种编程语言最重要的是它是可移植的,并且有可移植式
库的支持。

从一种语言中我们所想的

我所追求的最重要的,但不是必要的一件事就是其简单性。我发现查找语言的特性和它所具备的聪明古怪的API是一件及其累人的事!理想的语言是-这些
东西都可以被记住,而无需去查找它们。另外,处理那些bug绝对会使你的创造性流失。所以我想要一个强类型的、强大的错误提示以及静态代码分析来减少
bug的出现。我还想要一个好的debugger和动态分析来使我更容易发现bug。我不关心性能是否强大,但至少可以用。如果你不追求逼真的话它可用现
代、功能强大的电脑尽情探索其可能性。

我甚至会关心编译器的速度问题。我不是可以非常专注的禅师,等待超过十秒对于我来说是一种浪费,但更重要的是这会打破我思考的节奏。

我不追求面向对象(OOP)。我已经花了太多时间在管理类和对象上面,但我发现花了更多的时间,却不太明白为什么要把代码和数据严格的结合起来。我想要处理数据并且编写适合特定情况的代码。

备选方案

C++ 仍然是编写游戏最普遍的语言,没有原因。我用它写了很多项目,但其实我非常不喜欢它。

C++ 涵盖了我所需要的,但却没有满足我想要的。它实在太复杂了!尽管一些工具相当好,但它还是十分容易出现bug。和C相比C++编译速度很慢。但即使它具备高性能并且有C所没有的一些特性,但我并不在意这些有的没的。

C# 和 Java 有些通病。它们都是冗长复杂的怪兽,我所需要的是简单简洁的东西。 它们都迫使程序员去思考面向对象编程的风格,这通通都是我反对的。作为一个高级语言,它们应该有隐藏其复杂性的趋势。

相比我更喜欢Go。在许多方面它是C的再发展,我会选择使用Go,但是它也有个很大问题阻止我使用它。使用stop-the-world的方法来实

现垃圾回收算法对于游戏是件再烦人不过的事情。游戏库的支持也是有点弱,虽然你可以使用C库,但这会增加更多的工作量。这足够让我怀疑它长期的实用性。虽

然它很好的服务于web,同时这具备了一个可怕的快速移动环境的性质。这可有点flash灭亡的意思。然后我想说我真的真的不喜欢javascript,
它是如此的松散模糊,我特别讶异居然有人能够在软件中使用它写上一大块。我简直没有一丁点兴趣尝试它。

Haxe 感觉上比其他语言更有前景。如果我还做些和web有关的东西的话我会选择它。它有很好的库支持。我就有点担心它不太成熟,能不能长久的问题。好了,我也没什么要说的了。

Jonathan Blow正在编写他自己的语言,一种他自己想用的语言。我特别羡慕,有时候我也会考虑做这件事。但想想,需要丢弃所有现有的库支持和承担未来兼容性的责任以至于太对需考虑。并且这实在太困难了,当本质问题于此,我宁愿去做游戏好了。

为什么C是我的最佳选择

C既危险又可靠。 就像一把锋利的刀,切手指和切蔬菜一样,但学会小心的使用它也不会太难。

它编译的时候特别快,我无法想像有什么比它更快。

它还可以在任何地方运行,通常较为容易。我都想不到它什么时候不能像这样工作。

库和工具支持又强大又不间断地更新。

我要很悲壮的告诉你们,这就是我的语言。

我绝对不会说“嘿,你也应该使C”我完全赞每个人有不同的个人偏好和特别的习惯。只想说相比用其他语言来说我已经编写了很多C 代码,并且这令我很舒服。哦好吧,就这样 :-)

作者:叶露

来源:51CTO

时间: 2024-11-03 21:38:12

为什么我要用C写游戏的相关文章

网络游戏-大家是用什么结构写游戏的"天梯系统"匹配规则的呢?

问题描述 大家是用什么结构写游戏的"天梯系统"匹配规则的呢? 天梯匹配系统 只用一个积分来做匹配 一对一匹配.积分的规则就是策划定的公式 这个跳过.我的当前结构是这样的:相同积分的玩家存到一个 list 里面. 然后将这个list用积分做key 存在一个map里面.当一个积分是 1000 的玩家查找对手的时候. 我会去map 里面把 800 到 1200 范围(这个范围是策划定)内的所有list取出来( 也就是这里我循环了400次!!) 然后从每个list 里面随机抽取几个玩家 汇总到

c++-初学者用opengl写游戏帧率不稳

问题描述 初学者用opengl写游戏帧率不稳 c++学期作业写了一个3d游戏,其中有些自己写的碰撞检测,效率比较低,运算量比较大,出现了帧率不稳的问题. 现在使用glutTimerFunc控制帧率 设置时间间隔为5的时候 低运算量200FPS 高运算量130发票时 设置时间间隔10 低运算量100FPS 同等高运算量80FPS 我有个疑问,时间间隔设为5时,高运算量130FPS,那么100FPS时的每帧时间应该足够了,可是为什么会下降到80FPS呢 有没有什么好的解决方法,谢谢大家了! 还有,有

传奇程序员:8岁写游戏独力开发赚1亿美元

到2013年初,Minecraft的注册用户已经不计其数,付费用户数量也已经超过9000多万.2011年10月,发布了移动版Minecraft,在App Store的付费应用中,仍旧排在前三. 这个如今被越来越多人奉为神作,并让无数人深深沉迷其中的游戏最初却几乎由Markus Persson一个人独力开发,与真名相比,他在网络上的昵称Notch无疑更加有名,许多人将他视作独立游戏开发大神和独立软件圈子的标志性人物. 靠着Minecraft,Notch在2012年的收入超过了1.1亿美元,那么他究

谈谈游戏服务器的发送数据处理

发送数据处理模式的概念:  相信每一个第一次写游戏服务器的人都会在发送数据处理这里卡主,因为相对于简单易处理的接收消息处理,发送消息的时机和驱动更加难以把握.为什么呢?我们看下套接字可读的条件:  1: 该套接字接收缓冲区中的数据字节数大于接收低水位标记  2: 该连接的读关闭  3: 该套接字是一个监听套接字,并且有新的连接  4: 该套接字上有错误处理 以上所有的条件,都可以通过注册事件来完成,并且因为都是被动触发,所以处理起来比较轻松. 那我们看看套接字可写的条件:  1: 该套接字发送缓

Java游戏编程初步

编程 现在流行的游戏似乎都是用C或C++来开发的.在java平台上几乎没有很大型及可玩的流行游戏.由于java是个新生语言,他的许多特性还有待大家的发掘,但是我们不能否认Java在游戏编程方面的强大性.本文将带领大家一步一步学习编写Java游戏.最终打造属于自己的Java游戏. 在开始之前我们得确认你已经安装了Java JDK,并已经安装了浏览器软件如IE.本章是以Internet为开发对象,一步一步教大家认识Java的Thread.Applets-.以及游戏编程要注意的一些方方面面并在每一小部

游戏服务器的发送数据处理

发送数据处理模式的概念: 相信每一个第一次写游戏服务器的人都会在发送数据处理这里卡主,因为相对于简单易处理的接收消息处理,发送消息的时机和驱动更加难以把握.为什么呢?我们看下套接字可读的条件: 1: 该套接字接收缓冲区中的数据字节数大于接收低水位标记 2: 该连接的读关闭 3: 该套接字是一个监听套接字,并且有新的连接 4: 该套接字上有错误处理 以上所有的条件,都可以通过注册事件来完成,并且因为都是被动触发,所以处理起来比较轻松. 那我们看看套接字可写的条件: 1: 该套接字发送缓冲区中可用空

使用NetBeans进行J2ME开发(五):揭开游戏开发的神秘面纱

游戏开发,好大的一个命题哦.无论是游戏的剧情设计,还是游戏的美工制作,那都不是一两下子能够完成的事,而编程,只是其中的一小部分.但是,就算是这一小部分,我也不可能把它掌握得很透彻.这篇随笔,大部分都是些抄书的东西,主要是为了我的博客的完整性而存在,但是我依然会尽力把它写好,要让那些精通Java其它领域但是却没有机会做J2ME开发的高手们看看图片解解馋,让那些想做手机游戏开发的同仁们看看J2ME的Game API究竟为我们提供了哪些支持,让我们知道写游戏需要了解哪些概念. 先来了解一下MIDP 2

用HTML5制作一个简单的弹力球游戏

  学canvas学了有一个多礼拜了,觉得canvas真心好玩.学canvas的人想法估计都跟我差不多,抱着写游戏的态度去学canvas的.所以运动学啊.碰撞检测啊.一些简单的算法神马的是基础啊.以前没做过游戏的我学起来还真心吃力.今天就来说下用canvas写个最简单的弹力球游戏,就运用了最简单的重力作用以及碰撞检测. 先上DEMO:弹力球DEMO (鼠标点击canvas里的空白区域会给与小球新速度) [创建小球对象] 第一步就是先创建一个小球对象,写好小球的构造函数: 代码如下: var Ba

html5贪吃蛇游戏使用63行代码完美实现

以前也很少关注html5,感觉选择html已经慢慢成为趋势,想了解下.就找了个游戏学习了,写完这个游戏感觉html5和js结合很紧密,如果js不 是特别好.估计需要先补习下js,这个只是个人的建议,不一定准确.还有一个就是,思维和逻辑要特别清楚,不然写游戏可能很痛苦. 贪吃蛇,最主要的功能点: 1,蛇的移动 2,改变蛇的方向 3,放置食物 4,增加舍身 5,怎么挂的. 第一次写游戏,第一次写html5 感觉还是很吃力的.写完了,给大家分享下.互相交流.............不懂的或者有建议的,