摘要:
我可以用C编写一个"胖客户端"游戏,而不需要重新发明轮子,或者我应该只是咬紧牙关并使用一些库或SDK?我是一个温和的C程序员,并且不怕使用指针,数据结构,内存位置等,如果它能给我控制,我需要制作一个伟大的"胖客户端"游戏.但是,我正在考虑为了权力和控制而不是 易用性而避开高级语言和框架.
我有兴趣在某个时候修改2D格斗/平台游戏作为副项目.我主要是一名Linux服务器端程序员,具有Python,Ruby和PHP方面的经验.我知道其中一些语言有很好的框架,比如PyGame.我也意识到人们对Air和.NET这样的东西所取得的成功......但我有一些顾虑:
性能:脚本语言非常慢.如果我正在进行实时游戏,我希望它尽可能快速.
巨大的二进制文件:使用像.NET这样的框架或像Ruby这样的脚本语言通常会产生你不需要的大型CLR或库.我想制作的游戏小而简单 - 我不希望它的CLR比游戏本身更大!
额外的东西:老实说,我只是不喜欢继承一些大型游戏库的包袱,如果我可以更好地包围我自己的代码.
我问这个问题,因为我知道我很容易因为没有发明这种综合症.我一直想自己编程,我确信它浪费了很多时间.然而,这对我来说非常常见 - 例如,我没有使用Rails(一个非常大的Web项目框架,其中包含ORM和GUI工具包),我使用了一系列较小的Ruby工具,如机架和续集,它们组合在一起精美.
所以,我转向你,SO专家.我天真吗?这是我的看法:
使用C.
缺点
可能会让我讨厌编程
重新发明车轮的高风险
它花费很长时间以至于我失去了兴趣的高风险
优点
尝试和真实 - 大多数A-list游戏都是用C语言完成的(今天仍然如此吗?)
对内存管理,速度,资产管理等的高度控制,我相信自己要学会处理
没有残酷
使用框架或SDK
缺点
超大交付风险
取决于原始图书馆作者对游戏开发的各个方面 - 如果没有我想要的功能怎么办?我将不得不自己编程,这不错,但部分地破坏了首先使用高级框架的目的
性能问题的高风险
优点
开发时间更快
可能更容易维护
没有浪费时间重塑共同的范式
还有什么可以添加到此列表中?这是一个纯粹的判断电话,还是有人可以为我封印这笔交易?欢迎预订建议.
我相信你是在谬误下工作.
有几个专门用于游戏编程的框架 - 由具有丰富游戏设计复杂性经验的人编写,几乎可以肯定.
换句话说,如果您不使用框架,则会出现"性能问题的高风险".
我目前的想法是:
如果您想学习编程,请从基本元素向上开始制作游戏引擎(甚至实现基本数据结构 - 列表,地图等).我曾经做过一次,虽然这是一次学习经历,但我犯了很多错误,我不会再这样做了.然而,为了学习如何编程以及制作一些很酷的东西并看到结果我会高度评价.
如果你想制作一个合适的游戏,可以使用你想要的任何库,并自己设计所有的游戏基础设施.这就是我现在正在做的事情,我正在使用所有的好东西,如STL,ATL/WTL,Boost,SQLite,DirectX等.到目前为止,我已经学到了很多关于中间/游戏逻辑方面的知识.代码和设计.
如果你只想与艺术家和其他人合作制作成品的游戏,使用现有的引擎之一(OGRE,Irrlicht,Nebula,Torque等),只需添加你的游戏逻辑和艺术.
我所学到的最后一点智慧就是不要担心Not Invented Here综合症.正如我已经意识到其他库(例如STL,Boost,DirectX等)在其中具有一个数量级(或三个)的开发时间,远远超过我在该部分上花费的时间.游戏/引擎 因此,自己实现这些事情的唯一原因是如果你想了解它们.
我建议你尝试pyglet.
它具有良好的性能,因为它使用opengl
它是一个紧凑的一体化库
它除了python之外没有额外的依赖
做一些测试,看看你是否可以让它足够快.只有当你向自己证明它没有移动到较低的水平时.虽然,我相信python + pyglet可以处理它...在最坏的情况下你将不得不写几个C扩展.