摘要:

我可以的程序"厚 客户"的游戏在C无创新 车轮, 或者我是不是应该咬的 子弹和使用某些图书馆或SDK?我是一个温和C程序并不是 害怕工作的指针,数据 结构、存储地点,等等。如果 它会给我的控制我需要 做一个伟大的"厚的客户"的游戏。然而,我想避开的 高级别的语言和框架 为了权力和控制, 便于使用。

我是有趣的在摆弄2D战斗/平台游戏,作为一个方面项目某个时候。我主要是一个Linux服务器的端的程序员的经验,在Python,Ruby和PHP.我知道这有良好的框架,在其中的一些语言,喜欢 查看.我也意识到成功的人们有用的东西,如空气和。净...但是我有一些问题:

  • 性能:脚本语言是非常缓慢。如果我在做一个真实的-游戏时间,我希望它将尽快成为可能。
  • 巨大的二进制文件:使用框架等。网或脚本语言,如红宝石往往导致大Clr或图书馆,否则,你不会需要。游戏,我要让将小型和简单的--我不想其CLR要更大的比赛本身!
  • 额外的东西:老实说,我只是不喜欢这个想法的继承的一些大型游戏图书馆的行李,如果我可以理解我自己的代码的更好。

我问这个问题,因为我知道我非常容易受到不这里发明的综合症。我一直想要的节目我自己,并且我是肯定的它浪费了很多时间。然而,这项工作对我非常经常--例如,而不是使用 (一个非常大的网项目的框架内与一个欧姆和GUI的工具包,烤),我使用一系列较小的工具,如红宝石 续集 合在一起。

因此,我转向你,所以专家。我天真?这里就是我看到它:

  • 使用C
      • 可能会让我恨编程
      • 高风险的重新改造车轮
      • 高风险的这么久,我失去兴趣
    • 优点
      • 试图和真正的最A-列出游戏做在C(这仍然是真实的吗?)
      • 高级别的控制存储管理、速度、资产管理等, 我相信我自己要学会处理
      • 没有令人讨厌的
  • 使用框架或SDK
      • 风险大的交付
      • 依赖于原始图书馆作者的所有方面的游戏发展--如果没有一个特征,我想要什么?我会有节目我自己,这并不是坏的,但部分地击败的目的使用高级框架中的第一个地方
      • 高风险的业绩问题
    • 优点
      • 更快发展的时间
      • 可能会更容易保持
      • 没有时间浪费的重新创造共同的模式

我还有什么可以添加到这个清单?它是一个纯粹的主观判断,或有人可以密封处理我?书的建议表示欢迎。

有帮助吗?

解决方案

我目前的想法是:

  • 如果你想学习的程序,开始做游戏机的基本要素上(即使是实施基本数据结构表、地图等)。我已经做到了这一次,而这是一个学习的经验,我犯了许多错误,我不会这么做的第二次。然而,学习如何节目以及使得一些很酷的东西和看到的结果,我会评价这个高度评价。

  • 如果你想让一个适当的游戏,使用什么图书馆那你想和设计所有的游戏基础设施自己。这是我在做什么,现在,我用所有的好东西喜欢STL,ATL/维拓,提升,源码,安装,等等。到目前为止,我已经学到了很多关于中东/游戏逻辑方面的代码而设计的。

  • 如果你只是想做一个游戏艺术家和其他人合作,以创建一个成的产品,使用一个现有的发动机(食人魔,Irrlicht、星云、扭矩,等等),只是添加在你的游戏逻辑和技术。

最后一点智慧,我学到的是,不要担心的不是这里发明的综合症。正如我已经认识到,其他图书馆(例如STL,提高,安装,等等)有一个数量级(三)更多的人-小时的开发时间,远远超过我曾经花在这部分的游戏/发动机。因此,唯一的原因实施这些东西你自己是如果你想要了解他们。

其他提示

我相信,你的工作根据一种谬论。

有几个框架具体地说为游戏的编程---写的人有很多经验并发症的游戏设计中,几乎肯定会更tha你做的。

换句话说,你有一个"高风险的业绩问题"如果你不使用一个框架。

我会建议你尝试 pyglet.

  • 它具有性能良好,因为它利用了照片
  • 它是一个紧凑的一个图书馆
  • 它没有额外的依赖关系的蟒蛇之一

做一些测试,看看你能不能让它的速度不够快为您。只有当你证明自己,它不搬到一个较低的水平。虽然,我相当有信心,蟒蛇+pyglet可以处理它的...在最糟糕的你必须要写几C扩展。

今天,我相信你是在哪里你可以忽略的效能问题,除非你具体地说试图做一些事情,推动的限制。如果你的游戏就是说,没有复杂得多的地震II,那么你应该选择的工具和库让你做最为 你的 时间。

为什么我选择的地震II?因为运行中 一个版本的编制。净, 它运行的软件渲染,在超过可接受的框架率在目前的机。(如果你喜欢的-比较MAME模拟的多个处理器和图形的硬件可接受的费率计算)

你需要问问自己,如果你在这建立的一个发动机或建立一个游戏。如果你的目的是创建一个游戏,你绝对应该看看既定游戏的引擎。2D游戏的发展,看看 扭矩游戏生成器.这是一个非常强大的2D游戏引擎/SDK,将把你放入生产从每天1.他们有足够的工具的集成,内容包,你获得完整的源代码如果你想做出改变和/或了解它是如何工作的。它也是Mac OS x兼容,并具有Linux版本的社区。

如果你是在寻找的东西控制台上的侧面,它们有太多。

我很惊讶没有人已经提到过 GO.它是一个框架建立在可用做管理的可编程,同时除去一个很大的绒毛和详细程度较低的水平可编程。

性能的-聪明,对于大多数2D和3D游戏的任务,特别是建设东西就像一个战斗的游戏,这个平台工作非常好。它不是 作为 快,如果你在做裸露的金属可编程,但它得到你非常接近,并在管理环境,不会少。

另一个很酷的利益署是,大多数的代码可以上运行一个Xbox360,甚至可以进行调试的通过网络连接的游戏上运行的。部署的游戏,现在允许被批准的团队为分发和销售上的Xbox游戏活。所以如果你想要该项目的商业状态,你可能已经到可用的手段的分布。

像所有MS发展的工具、文件和支持是一流的,并有一个大型开发者社区有大量的教程,现有的项目,等等。

你想来可以来玩你的游戏主机上的?做你想要做的,它作为一个学习经验?你想的最终产品可以交叉平台?图书馆有你看着这么远吗?

2d游戏我不认为性能将一个问题,我建议去的东西会让你的结果在屏幕上在最短的时间量。如果你有很多的经验做蟒蛇然后查看是一个良好选择。

如果你打算做一些3d游戏的未来,我会建议考虑看看恶魔(http://www.ogre3d.org).这是一个交叉平台的3d图像引擎,抽象的图形Api。然而,对于2d项目就可能大材小用。

最常见的执行情况语言-列出游戏今天是C++、和一个很大的游戏嵌入一个脚本语言(例如蟒蛇或Lua)对于游戏的事件脚本。

你会用于编写一个游戏有很多事要做你的原因编写,并与您的要求。这不是不同于任何其他的编程项目,真的。如果它是一个边项目,而且你做你自己,然后才可以评估有多少次你有时间花在这和你的性能要求。

一般来说,今天的电脑是足够快的速度运行2D平台写的脚本语言。使用一个脚本语言,将允许你为原型的事情更快你就会有更多的时间来调整的游戏。再次,这是没有不同于与任何其他项目。

如果你去用C++、和你的原因没有更详细阐述于"因为我想,"我建议你看看SDL呈现和音频支持。这会使事情更好一点。

如果你想要学习基本技术(安装,或者你想要写优化blitters对于某些不正当的理由)然后通过的所有装置,使用C++。

有说所有的,我会注意你对早产的优化。2D游戏,你很可能会更好,会有Python和查看的第一个。我会惊讶如果这些工具将被证明是不充分的现代电脑。

为什么人们所说的关于C/C++/蟒蛇,我是一个游戏开发人员和我的公司鼓励C。不b/c++是坏的,但是是因为写得很差C++是毒药的游戏发展,由于它的困难读/调试相比,C。(C++提供的福利时,正确使用,但是,让一个小型的家伙做一些错误,与它和您的时间散是巨大的)

作为实际问题:如果你的目的是只是得到什么工作,使用一个图书馆。

否则,代码你自己为一个非常重要的原因: 实践
实践中操作数据结构。会有时你需要管理自己的数据。实践中,在调试用代码。

经常库做你想要什么,是巨大的,但有时 你的 具体使用情况处理的非常严重的lib,你将获得巨大的好处,从写你自己。这是尤其是在游戏机上比较电脑

(编辑)关于脚本和垃圾收集:它的 杀了你在控制台上,在最近的游戏我不得不重写大部分的垃圾收集关于虚幻的只是为了填补我们的需求 编辑 部分。甚至是更为必须在实际的游戏(不仅仅是通过我)(以是公平的,虽然我们推动超越虚幻的原始规格)

脚本经常好,但它不是一个"我赢了"按钮。在一般的收益消失,如果你正在推动对限制平台。我会使用"百分比的平台CPU,我有备用的"作为我评价功能在决定如何适当的脚本

一个考虑在有利于C/C++/obj-C是,你可以混合搭配各种图书馆的不同关切领域。换句话说,你都不会被执行的一个要素中的一个框架。

我用这个方法 我的游戏;使用 花栗鼠 2D物理、卢作为一个嵌入式脚本语言,以及一个载ES执行情况。我写信的胶水,以配合所有这些在一起的C语言。最终产品的能力定义的游戏对象,创造实例,并处理事件,因为他们互相交流在C功能暴露于Lua。这种方法的使用 许多高性能的游戏 要很大的成功。

如果你不知道C++,我肯定会推荐你走进一个脚本语言。做一个游戏,从开始到完成需要很大的动力,并迫使自己学习一门新的语言,同时是一个很好的方法来做的事情慢慢走,你失去了兴趣(尽管这是一个很好的方式学习的一门新的语言...).

最脚本语言,将编字节的代码,无论如何,所以他们的最大能打将是垃圾收集。我没有足够的经验,得到一个明确的描述,有多大一个打击垃圾收集会,但我将倾向于认为,它不应该是太糟糕了在一个小游戏。

此外,如果使用现有脚本语言库使你的游戏,大多数的性关键领域(如图)可用C++编写无论如何(可能通过游戏库)。因此,80%的CPU实际上可能花费在C++代码,无论如何,尽管事实上,大多数项目是编写,说蟒蛇。

我会说,问问自己你想要什么更多的:写一个游戏,从开始到结束和了解游戏的发展,或学习一门新的语言,(C++)。如果你想要写一个游戏,这样做在一个脚本语言。如果你想要学习一门新的语言,这样做在C++。

是啊除非你只是想要了解所有的细节的事情去做一个游戏,你肯定想要去与一个游戏机而只是重点放在建立你的游戏逻辑而不是详细的图表、音频、资源管理,等等。

我个人喜欢建议的矩游戏生成器(又名矩2D)从 GarageGames.但是你也许可以找到一些免费的游戏引擎那里会适合你的需求。

我很确定最现代化的游戏做在C++、不C。(每个游戏公司我曾经访问过C++的问题。)
为什么没有使用C++的和现有的库的物理碰撞、声音、图像引擎等。你还在写游戏,但平凡的东西。

有很多的不同的解决方案的问题抽象化和每一个涉及它在不同的方式。

我当前的项目使用,安装9,HLSL和SlimDX.每个这些提供一个精心校准的水平抽象概念。HLSL允许我真的读的着色代码我写和SlimDX/C#让我可以忽略的指针,圆形的依赖关系和处理非托管的代码。

这就是说,没有这些技术有任何影响上方便发展我AI、照明或物理学!我仍然必须打破了我的教科书中的一种方式,我不会用一个较高级别的框架。

即使使用了一个框架样署,如果最视频游戏的发展概念是,外来你还有很多仍然采取和学习。署将允许你整齐地回避万锁,但祸发生于那些不了解基本的阴影的概念。另一方面,类似的东西DarkBASIC不会解决你的万锁问题,但阴影主要是处理你。

这是个足够大的领域,你的第一台发动机将永远不会是一个你实际使用。如果你写出你自己,你不会把它写的不够好。如果使用第三方的库,有的肯定的方面,这将激怒你和你会想要替换。

作为一个想法,它可能值得考虑的各种图书馆/框架(肯定让部署一个停靠点,甚至如果你决定你不想使用它,这是一个伟大的基准),并试图建立各种原型。也许是风景(与水体)或空间物理学演示。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top