有哪些游戏脚本用什么语言写是用C++语言写的?

用于编写游戏的主要编程语言的介绍及其优缺点
我的图书馆
用于编写游戏的主要编程语言的介绍及其优缺点
这是每个游戏编程FAQ里都有的问题。这个问题每星期都会在游戏开发论坛上被问上好几 次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程序中,总有一些计算 机语言优于其他语言。下面是几种用于编写游戏的主要编程语言的介绍及其优缺点。希望这 篇文章能帮助你做出决定。
如果说FORTRAN和COBOL是第一代高级编 译语言,那么C语言就是它们的孙子辈。C语言是Dennis Ritchie在七十年代创建的,它功能 更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。C语言 被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如操作系统 。在此之前,操作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代 码移植成为可能的编程语言。
C语言支持结构化编程,也就是说C的程序被编写成一些 分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代 码使用GOTO语句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的"空心粉式代码 "代码要简单得多。事实上,C仍然具有GOTO语句,不过它的功能被限制了,仅当结构化 方案非常复杂时才建议使用。
正由于它的系统编程根源,将C和汇编语言进行结合是 相当容易的。函数调用接口非常简单,而且汇编语言指令还能内嵌到C代码中,所以,不需要 连接独立的汇编模块。
优点:有益于编写小而快的程序。很容易与汇编语言结合。具 有很高的标准化,因此其他平台上的各版本非常相似。
缺点:不容易支持面向对象技 术。语法有时会非常难以理解,并造成滥用。
移植性:C语言的核心以及ANSI函数调 用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。其他的东西都跟平台有 关。比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函 数调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。
用C语言编写的游戏:非常非常多。
资料:C语言的经典著作是《The C Programming Language》,它经过多次修改,已经扩展到最初的三倍大,但它仍然是介绍C的 优秀书本。一本极好的教程是《The Waite Group''s C Primer Plus》。
C++语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP是结构 化编程的下一步。OO程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的对 象库存在,这使得编程简单得只需要将一些程序"建筑材料"堆在一起(至少理论 上是这样)。比如说,有很多的GUI和数据库的库实现为对象的集合。
C++总是辩论的 主题,尤其是在游戏开发论坛里。有几项C++的功能,比如虚拟函数,为函数呼叫的决策制定 增加了一个额外层次,批评家很快指出C++程序将变得比相同功能的C程序来得大和慢。C++的 拥护者则认为,用C写出与虚拟函数等价的代码同样会增加开支。这将是一个还在进行,而且 不可能很快得出结论的争论。
我认为,C++的额外开支只是使用更好的语言的小付出 。同样的争论发生在六十年代高级程序语言如COBOL和FORTRAN开始取代汇编成为语言所选的 时候。批评家正确的指出使用高级语言编写的程序天生就比手写的汇编语言来得慢,而且必 然如此。而高级语言支持者认为这么点小小的性能损失是值得的,因为COBOL和FORTRAN程序 更容易编写和维护。
优点:组织大型程序时比C语言好得多。很好的支持面向对象机 制。通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。
缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把 整个语言正确的实现。
移植性:比C语言好多了,但依然不是很乐观。因为它具有与C 语言相同的缺点,大多数可移植性用户界面库都使用C++对象实现。
使用C++编写的游 戏:非常非常多。大多数的商业游戏是使用C或C++编写的。
资料:最新版的《The C++ Programming Language》非常好。作为教程,有两个阵营,一个假定你知道C,另外一个 假定你不知道。到目前为止,最好的C++教程是《Who''s Afraid of C++》,如果你 已经熟知C,那么试一下《Teach Yourself C++》。
3、我该学习C++或是该从C开始
我不喜欢这种说法,但它是继"我该使用哪门语言"之后最经常被问及的问 题。很不幸,不存在标准答案。你可以自学C并使用它来写程序,从而节省一大堆的时间,不 过使用这种方法有两个弊端:
你将错过那些在游戏中可能是更有效的数据建模 方式。
不用马上开始学习 OO 编程,但可能要强制你改掉最终必须忘掉的编程坏 习惯,这一点请相信我。
最大的商业游戏,包括第一人称射击游戏很多并没 有使用C++。但是,这些程序的作者即使使用老的C的格式,他们通常坚持使用面向对象编程 技术。如果你只想学C,至少要自学OO(面向对象)编程技术。OO是仿真(游戏)的完美方法 ,如果你不学习OO,你将不得不"辛苦"的工作。
4、汇编语言
显然 ,汇编是第一个计算机语言。汇编语言实际上是你计算机处理器实际运行的指令的命令形式 表示法。这意味着你将与处理器的底层打交道,比如寄存器和堆栈。如果你要找的是类英语 且有相关的自我说明的语言,这不是你想要的。
确切的说,任何你能在其他语言里做 到的事情,汇编都能做,只是不那么简单 - 这是当然,就像说你既可以开车到某个地方,也 可以走路去,只是难易之分。话虽不错,但是新技术让东西变得更易于使用。
总的来 说,汇编语言不会在游戏中单独应用。游戏使用汇编主要是使用它那些能提高性能的零零碎 碎的部分。比如说,毁灭战士整体使用C来编写,有几段绘图程序使用汇编。这些程序每秒钟 要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。而从C里调用汇编写的函数是 相当简单的,因此同时使用两种语言不成问题。
特别注意:语言的名字叫"汇编 "。把汇编语言翻译成真实的机器码的工具叫"汇编程序"。把这门语言叫做 "汇编程序"这种用词不当相当普遍,因此,请从这门语言的正确称呼作为起点出 发。
优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的 程序。你将是利用处理器最新功能的第一人,因为你能直接使用它们。
缺点:难学、 语法晦涩、坚持效率,造成大量额外代码 - 不适于心脏虚弱者。
移植性:接近零。因为这门语言是为一种单独的处理器设计的,根本没移植性可言。如果使用了某个特殊处理 器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上(比如,AMD的3DNow指令是 无法移植到其它奔腾系列的处理器上的)。
使用汇编编写的游戏:我不知道有什么商 业游戏是完全用汇编开发的。不过有些游戏使用汇编完成多数对时间要求苛刻的部分。
资料:如果你正在找一门汇编语言的文档,你主要要找芯片的文档。网络上如Intel 、AMD、Motorola等有一些关于它们的处理器的资料。对于书籍而言,《Assembly Language: Step-By-Step》是很值得学习的。
5、Pascal语言
Pascal语言是由Nicolas Wirth在七十年代早期设计的,因为他对于FORTRAN和COBOL没有强制训练学生的结构化编程感 到很失望,"空心粉式代码"变成了规范,而当时的语言又不反对它。Pascal被设 计来强行使用结构化编程。最初的Pascal被严格设计成教学之用,最终,大量的拥护者促使 它闯入了商业编程中。当Borland发布IBM PC上的 Turbo Pascal时,Pascal辉煌一时。集成 的编辑器,闪电般的编译器加上低廉的价格使之变得不可抵抗,Pascal编程了为MS-DOS编写 小程序的首选语言。
然而时日不久,C编译器变得更快,并具有优秀的内置编辑器和 调试器。Pascal在1990年Windows开始流行时走到了尽头,Borland放弃了Pascal而把目光转 向了为Windows 编写程序的C++。Turbo Pascal很快被人遗忘。
最后,在1996年, Borland发布了它的"Visual Basic杀手"- Delphi。它是一种快速的带华丽用户界 面的 Pascal编译器。由于不懈努力,它很快赢得了一大群爱好者。
基本上,Pascal 比C简单。虽然语法类似,它缺乏很多C有的简洁操作符。这既是好事又是坏事。虽然很难写 出难以理解的"聪明"代码,它同时也使得一些低级操作,如位操作变得困难起来 。
优点:易学、平台相关的运行(Dephi)非常好。
缺点:"世界潮流 "面向对象的Pascal继承者(Modula、Oberon)尚未成功。语言标准不被编译器开发者 认同。专利权。
移植性:很差。语言的功能由于平台的转变而转变,没有移植性工具 包来处理平台相关的功能。
使用Pascal编写的游戏:几个。DirectX的Delphi组件使 得游戏场所变大了。
资料:查找跟Delphi有关的资料,请访问:Inprise Delphi page。
6、Visual Basic
哈,BASIC。回到八十年代的石器时代,它是程序初 学者的第一个语言。最初的BASIC形式,虽然易于学习,却是可怕的无组织化,它义无返顾的 使用了GOTO充斥的"空心粉式代码"。当回忆起BASIC的行号和GOSUB命令,没有几 个人能止住眼角的泪水。
快速前进到九十年代早期,虽然不是苹果公司所希望的巨人 ,HyperCard仍然是一个在Windows下无法比拟的吸引人的小型编程环境。Windows下的 HyperCard克隆品如ToolBook又慢又笨又昂贵。为了与HyperCard一决高下,微软取得了一个 小巧的名为Thunder编程环境的许可权,并把它作为Visual Basci 1.0发布,其用户界面在当 时非常具有新意。这门语言虽然还叫做Basic(不再是全部大写),但更加结构化了,行号也 被去除。实际上,这门语言与那些内置于TRS-80、Apple II及Atari里的旧的ROM BASIC相比 ,更像是带Basic风格动词的Pascal。
经过六个版本,Visual Basic变得非常漂亮。用户界面发生了许多变化,但依然保留着"把代码关联到用户界面"的主旨。这使 得它在与即时编译结合时变成了一个快速原型的优异环境。
优点:整洁的编辑环境。易学、即时编译导致简单、迅速的原型。大量可用的插件。虽然有第三方的DirectX插件, DirectX 7已准备提供Visual Basic的支持。
缺点:程序很大,而且运行时需要几个 巨大的运行时动态连接库。虽然表单型和对话框型的程序很容易完成,要编写好的图形程序 却比较难。调用Windows的API程序非常笨拙,因为VB的数据结构没能很好的映射到C中。有OO 功能,但却不是完全的面向对象。专利权。
移植性:非常差。因为Visual Basic是微 软的产品,你自然就被局限在他们实现它的平台上。也就是说,你能得到的选择是:Windows ,Windows或Widnows。当然,有一些工具能将VB程序转变成Java。
使用Visual Basic 编写的游戏:一些。有很多使用VB编写的共享游戏,还有一些是商业性的。
资料:微 软的VB页面有一些信息。
Java是由Sun最初设计用于嵌入程序的可移 植性"小C++"。在网页上运行小程序的想法着实吸引了不少人的目光,于是,这门 语言迅速崛起。事实证明,Java不仅仅适于在网页上内嵌动画 - 它是一门极好的完全的软件 编程的小语言。"虚拟机"机制、垃圾回收以及没有指针等使它很容易实现不易崩 溃且不会泄漏资源的可靠程序。
虽然不是C++的正式续篇,Java从C++ 中借用了大量 的语法。它丢弃了很多C++的复杂功能,从而形成一门紧凑而易学的语言。不像C++,Java强 制面向对象编程,要在Java里写非面向对象的程序就像要在Pascal里写"空心粉式代码 "一样困难。
优点:二进制码可移植到其他平台。程序可以在网页中运行。内含 的类库非常标准且极其健壮。自动分配合垃圾回收避免程序中资源泄漏。网上数量巨大的代 码例程。
缺点:使用一个"虚拟机"来运行可移植的字节码而非本地机器码 ,程序将比真正编译器慢。有很多技术(例如"即时"编译器)很大的提高了Java 的速度,不过速度永远比不过机器码方案。早期的功能,如AWT没经过慎重考虑,虽然被正式 废除,但为了保持向后兼容不得不保留。越高级的技术,造成处理低级的机器功能越困难, Sun为这门语言增加新的"受祝福"功能的速度实在太慢。
移植性:最好的 ,但仍未达到它本应达到的水平。低级代码具有非常高的可移植性,但是,很多UI及新功能 在某些平台上不稳定。
使用Java编写的游戏:网页上有大量小的Applet,但仅有一些 是商业性的。有几个商业游戏使用Java作为内部脚本语言。
资料:Sun的官方Java页 面有一些好的信息。IBM也有一个非常好的Java页面。JavaLobby是一个关于Java新闻的最好 去处。
8、创作工具
上面所提及的编程语言涵盖了大多数的商业游戏。但是也 有一个例外,这个大游戏由于它的缺席而变得突出。
"神秘岛"。
没错,卖得最好的商业游戏不是使用以上任何一门语言编的,虽然有人说" 神秘岛"99%是使用 3D建模工具制作的,其根本的编程逻辑是在 HyperCard 里完成的。
多数创作工具有点像Visual Basic,只是它们工作在更高的层次上。大多数工具使用 一些拖拉式的流程图来模拟流程控制。很多内置解释的程序语言,但是这些语言都无法像上 面所说的单独的语言那样健壮。
优点:快速原型 - 如果你的游戏符合工具制作的主 旨,你或许能使你的游戏跑得比使用其他语言快。在很多情况下,你可以创造一个不需要任 何代码的简单游戏。使用插件程序,如Shockware及IconAuthor播放器,你可以在网页上发布 很多创作工具生成的程序。
缺点:专利权,至于将增加什么功能,你将受到工具制造 者的支配。你必须考虑这些工具是否能满足你游戏的需要,因为有很多事情是那些创作工具 无法完成的。某些工具会产生臃肿得可怕的程序。
移植性:因为创作工具是具有专利 权的,你的移植性以他们提供的功能息息相关。有些系统,如Director可以在几种平台上创 作和运行,有些工具则在某一平台上创作,在多种平台上运行,还有的是仅能在单一平台上 创作和运行。
使用创作工具编写的游戏:"神秘岛"和其他一些同类型的探 险游戏。所有的Shockwave游戏都在网络上。
资料:Director、HyperCard、 SuperCard、IconAuthor、Authorware。
你可能希望得到一个关于 "我该使用哪种语言"这个问题的更标准的结论。非常不幸,没有一个对所有应用 程序都最佳的解决方案。C适于快而小的程序,但不支持面向对象的编程。C++完全支持面向 对象,但是非常复杂。Visual Basic与Delphi易学,但不可移植且有专利权。Java有很多简 洁的功能,但是慢。创作工具可以以最快的速度产生你的程序,但是仅对某一些类型的程序 起作用。最好的方法是决定你要写什么样的游戏,并选择对你的游戏支持最好的语言。"试用三十天"的做法成为工业标准是件好事情。
TA的最新馆藏
喜欢该文的人也喜欢随笔 - 712&
评论 - 49&
&&&&&&&&&&&
早年开发游戏必须用C++,这没得说,年,java还没有nio,其他动态语言不抗重负,只能C/C++能开发出完整可用的游戏服务端。直到2005年,韩国的游戏很多都还是纯C++写服务端,金山之前也开发过很多纯粹C++的游戏服务端,后来大家都切了。现代选择有很多:java + javascript, c+python, c+lua, scala, go, erlang。我们面向性能的服务器用 java,面向逻辑服务器 python,面向高并发的会选择 scala,次一级高并发或者性能测试程序(机器人)会选择 gevent。那是不是我们就不用C++呢?我们用 C来做网络,不用C++,但是C的比例在所有代码中占比有限。这是否意味我们可以放弃C/C++了?也不是:C语言是一把锋利的匕首,而现代动态语言是一把长剑。平时匕首可以藏在身上,大部分时候用长剑披荆斩棘就够了,但当你碰到坚硬的石头,长剑不管用了,那么拿出匕首来果断的切碎他。对于一个成熟领域而言,我的建议是尽量用更高级一点的开发语言,因为游戏开发很多核心技术都有了较为妥当的解决方法。大量的服务端逻辑其实都是在等待,等待网络,等待数据库,这种情况下用C得不偿失。但是服务端有一些地方还是躲不开C/C++,比如当服务器涉及到 3D计算的话(国内很多2D服务端,国外很多3D服务端),大量的矢量矩阵,除了用C++封装出一套好用的数学库外,即便直接用java写,那也是很麻烦的。再比如现在快速动作越来越多,为了让玩家操作更流畅,我需要基于 UDP快速可靠协议,协议开发用 java或者scala,性能上是没办法满足要求的,况且协议实现后要和客户端通信,你没法让所有客户端跟着你一起用java/scala。再比如某些cpu密集的抽象度高的模块,如 aoi或者 ai模块。对于一个新兴领域而言,C/C++很多情况下是你别无选择的东西。比如移动化浪潮刚起步的时候,还没有啥 cocos或者 unity你真要开发游戏,你必须迅速的使用起 OpenGL ES和 OpenSL,然后再叠加某一脚本,以快制胜,第一批移动浪潮上发财的就是这些游戏。又或者,你可以根本躲开,先不介入,等到几年后cocos和 unity成熟了,你在介入用lua / C#写程序。再比如服务端你如果离开熟悉的游戏和web,去开发一个陌生的领域,如流媒体服务,你会发现这怎么和10年前的游戏一样呀,什么高级工具都不给我用用,这时你可以再等个四五年应该高级工具会出现,异或你想领先别人时,你就果断的拿出 C/C++来解决之,这就是C独有的开拓新领域能力。大部分答案都是非黑即白,非此即彼。不要只会C不会动态语言,避免成为一个傻逼;也不要只会动态语言不会C,避免离开熟悉的温室就活不下去。对于一个新手而言,如果什么都没学过,我的建议是先用快速开发的东西,把项目弄起来再说,有精力有机会的情况下,也不能完全放弃一些基础的东西,让自己残缺了。PS:在相同架构下,就纯粹性能而言,各种语言性能差距到底是多少呢?如果只开发回合制这些慢节奏游戏,或者HTTP接口,大部分情况都在等待数据库等待用户消息的话,差别确实不大,的确可能5%都不到。如果cpu密集了,那么可以参考下面的图表,总体来说是10-50倍的性能差别:&img src="https://pic3.zhimg.com/36ce0e9ad05a38e9c12cf52e24179ae6_b.jpg" data-rawwidth="289" data-rawheight="339" class="content_image" width="289"&有人问,说了半天,这个也不行,那个也不完美,而我时间有限,有没有一个更经济实惠的方法呀?如何才一次性达到彼岸呀?时间有限项目吃紧有没有更好的选择?我说有啊!那就是 java。国内游戏开发绕来绕去还是脚本+C+erlang+go,难道大家就不会其他东西了么?大部分可以的情况下,除了非用C/C++,我推荐各位认真考虑下 java,这个性能上最接近C的东西,能承当大部分cpu密集型事务,却又不会象c那样 crash了找都找不到问题在哪里。同时面向高并发时基于原生jvm的 scala可以提供类似 erlang的简单方式,函数式编程 & 大规模并发协程 & actor;同时 java可以很方便的同 javascript结合,js的速度应该是动态语言里面最快的吧。再者 java还有 groovy,可以提供 python/ruby的泛型编程,用超高的开发效率和 python/ruby媲美,同时还能和 scala 结合实现高并发。最重要的是写 java好招聘,到处都是写 java的工程师,大部分语言级的培训都可以省略了。国内游戏开发者很多拒绝学习 java,因为很多开发者自己是碰都没碰过。现在拒绝 java的人,大部分只是在游戏圈子里面打转的人,偶尔开发下 web,缺乏其他行业和领域的经验。看看除游戏外,当今多少世界级的开源服务器是用 java开发的?游戏就真有那么特殊么?我看不是,国外大把java开发的游戏服务端,各位如果知道游戏服务端领域有啥 java技术栈解决不了的事情,麻烦告诉我一声。再看看java上下游的 scala, javascript, groovy这些东西。所以建议各位,有空有条件的情况下,认真考虑下 java技术栈,世界很大,不是只有游戏;即便游戏,现在的开发方法真的对吗?
阅读(...) 评论()C++是用什么语言写的??【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:298,742贴子:
C++是用什么语言写的??收藏
假如C++是A语言写的,那A语言又是什么语言写的,假如A语言时B语言写的那B又时什么语言写的............................
c++学习?选海同,先工作后付款!海同专注c++学习,口碑更好!报名海同c++学习免费赠送价值8000元的嵌入式课程!
English...
从来没有听过 语言可以由另一种语言编写..汉语是用什么语言写的?
机器码 -& 汇编 -& ASM/C -& ASM/C/C++ -& ASM/C/C++
你是说编译器吧?最开始,是用打孔纸带把机器语言输入电脑做成的,那时的大神能在一两个星期内写好一个编译器。当然现在的编译器一般都用C/C++写。
恩,我问的就是这个意思
fortran还是cobol还是汇编?忘了
貌似是这个MM开发的,很有炮姐的风范啊
大概两年以前 我也问过这个问题后来发现编成语言是某种规则 用这个规则将你的写的代码 翻译成机器能够识别的玩艺于是有了这个多姿多彩的世界..上帝(创世神)也是这么想的 只不过它用来编写程序的东西比二进制要复杂的多
登录百度帐号2012年7月 C/C++大版内专家分月排行榜第二2012年6月 C/C++大版内专家分月排行榜第二
匿名用户不能发表回复!|我现在想学习游戏的编写程序,可是我不知道学习什么语言才是实用的,还有游戏的外挂是什么语言啊?
全部答案(共1个回答)
用JAVA。实用这比较难说,但学C++和Java一定没错。
听说外挂一般用VB写的,VB是比较容易学,现在一般网上下载的小程序都是VB写的,入门学VB最好。
请问你是程序员吗?还是为了兴趣?
我也学过4年计算机,但我的同学中现在只有3~5个做计算机开发,因为真的很辛苦,还是传统行业比较好。
C语言,C++,C#都可以,做专业的开发还需要学一些脚本语言,java也可以开发一些小游戏,但对稍大的游戏就不行了。我们常见的游戏,像DOTA,反恐是C++结合...
我是大学计算机系,曾经在校负责java手机游戏软件的编程,网游框架也写过(D3D),去过游戏公司编程
①java软件介绍:Eclipse,JBuilder 20...
COBOL(COmmon Business Oriented Language)——是数据处理领域最为广泛的程序设计语言。
COBOL历史
COBOL(COmm...
基本上是C++
你可以参考这篇文章《用什么语言做游戏》
简单的说现在的游戏还是用C、C++和汇编混合编程的,因为游戏的性能要求很高,而C系列是性能最好的高级语言了,尽管它存在许...
答: 喝点玉屏风冲剂试试看,里面的的黄芪有止汗和托毒外出的作用。玉屏风还被称为中药中的丙种球蛋白,有提高免疫力的作用。
答: 内心里有矛盾的挣扎.也许是因为在女性那里受过伤,所以心里会有排斥的感觉,可是做为一个男人,异性又会对你产生不可抗拒的吸引力.
先要把心里的伤治好才行,倒底是女性...
答: 新区后面有写新自己看.
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415

我要回帖

更多关于 cpp写游戏 的文章

 

随机推荐