您什么时候应该推出自己的游戏引擎?[关闭]


20

我已经有5年的软件开发人员了,我想进入iOS游戏开发领域。我已经使用iOS SDK玩了大约2年,参加了可可活动会议,我觉得我对Objective-C,可可甚至C和C ++有很好的掌握。

我有一个游戏主意,并且知道我将使用Box2D,但是我想知道是否应该使用cocos2D。主要原因是:

  1. 我可能想做一些图形方面的事,这些事在cocos2d中不可用。
  2. 如果我推出自己的游戏引擎,我将拥有更多控制权。

当然,使用已经存在的游戏引擎的主要原因是节省了时间,并且使硬东西变得更容易。但是对于那些拥有技术印章的人来说,这有意义吗?


7
如果您说“ C / C ++”,则很可能您对其中至少一个(可能两者)都不太了解。
DeadMG

10
我知道有人将两者混淆了,我可能应该说C / C ++ / Objective-C来迭代我了解您可以在iOS平台上编程的主要语言。我不想说C / C ++会自动使我将两者混为一谈。
乔伊·格林

我喜欢这个问题,因为它与通常的“我如何制造自己的引擎”相比有了可喜的变化。问题。先生,为您+1。
雷德(Ray Dey)

1
@DeadMG我会说“ C / C ++”,并且对两者都有很好的掌握。
西亚兰

我会说这是即使是做到了
bobobobo

Answers:


38

其他大多数文章都是“制作游戏而不是引擎”,但我将假设您要制作一个特定的游戏,并想知道何时从其他人​​的代码开始是个好主意。基本或从头开始。

除非您知道自己需要推出自己的技术,否则不应该推出自己的技术。听起来可能有些轻率,但这实际上是唯一正确的答案。与大多数决定一样,也要权衡取舍。只有您可以为自己的特定情况确定成本/收益分析。

您应该对以下内容有所了解(此列表几乎不包含所有内容)。

  • 可以使用哪些中间件(“引擎”或其他)
  • 中间件带来的好处是明智的。
  • 中间件的成熟程度/成熟度,尤其是在您关心多平台支持的情况下
  • 中间件提供或不提供什么样的工具来帮助加快开发速度(不要用自己的技术打折工具)
  • 中间件有什么局限性(举一个简单的例子,Unity 3.x并没有在iOS上动态阴影中进行实时阴影处理)
  • 您的特定游戏有哪些特定功能 必须具备
  • 您的截止日期是什么,以及您需要花费多少时间才能达到中间件将为您带来的收益以及中间件的成本。
  • 中间件的可扩展性(例如,您可以通过使用blob阴影来解决iOS中Unity上的阴影问题。或者可以使用投影阴影。)

(请注意,我没有特别在其中放置“更多控制权”。这是一个加载的短语,范围从“我不喜欢我不写的代码”到“我需要能够看到,理解和调整物理引擎中的所有变量以达到特定的效果。“第一个并不是真正的考虑,但第二个是。)

就个人而言,我发现为低预算游戏开发自己的技术几乎是不值得的。这些天来,您获得廉价发动机的功率实在可笑。您现在还没有决定要获得数百万美元的Triple A发动机许可证的地步。您将无法击败Unity提供的$ 3k优惠。或Cocos2d收取任何费用(不是免费吗?)。

现在,如果您的游戏主要集中在其他引擎无法提供或无法以合理帧速率提供的某种技术上,那么可能值得研究一下您可以做什么。但是,这并不意味着您会完全淘汰其他中间件。仅仅因为您需要自己的渲染器,并不意味着您不能将其他中间件用于物理或声音或UI或已有的东西。


7
同意 如tldr所示:如果您必须提出问题,那么最好使用现有的引擎。
克里斯·苏巴乔

您的黑体字总结了我的经验。
工程师

1
社区也很重要。诸如XNA之类的强大社区可以使解决特定问题变得容易得多,因为有人可以这样做或可以为您提供指导。
ashes999

14

不要滚动自己的引擎。推出自己的游戏。如果您碰巧同时编写一个引擎,那么对您有好处,如果不是,那么您总是可以重构您可能想重用的任何部分,以使其更像“引擎”。

人们经常高估编写游戏“引擎”部分所需的时间。如果您只做所需的事情,那么就不需要那么长时间。困难的部分是不要卡在编写基础结构上,而只写解决问题所必需的内容。

在以下情况下,我将使用现有引擎:

  • 我的期限很紧
  • 我有一个已知的固定功能集,因此可以为此选择一个引擎

3

我认为您应该只编写游戏,也许以后您会得到一个引擎。从零开始只使用OpenGL就可以编写图形引擎(听起来就像您在说的那样),这只会浪费您的时间。这是一个相对较好解决的问题,因此通常您只需要更改API的形状,而无需相对于现有的任何其他可用的第三方解决方案增加很多重要的新功能。

如果Cocos2D或其他图形层现在满足您的要求,请使用它。如果您的需求在开发过程中发生变化,则可以相对轻松地交换渲染后端-如果您真正相信自己拥有创建引擎的经验和能力,那么您当然应该具备构建游戏所需的一切,以便交换出来渲染后端是一个相对琐碎的操作。

构建您的游戏,允许其特定需求来驱动您编写的代码的功能集,并在编写代码时要牢记可重用性和良好的体系结构。在完成一些这样的项目之后,您自然会得到一个“引擎”,并且您将更快地完成那些项目,因为您将无法陷入框架级功能蠕变的困境。


如果他的目标是学习,那不是浪费时间。
Ciaran

3

非常简单 您的主要目标是:学习或上市时间?

如果您的主要目标是学习实现库所解决的概念的经验,请避免使用库。每当我开发游戏(兼职)时,我的目标就是纯粹学习。我不在乎要花多长时间,这就是为什么我要从头开始!现在,您决定。


0

当您知道需要时,应使用自己的游戏引擎。

举例来说,假设您没有钱花在Unity上。或者,您宁愿将其花费在新硬件上。或者,可用的免费引擎存在性能问题,或者您需要在较低级别上进行更多控制。

如果您喜欢为了编写软件而编写软件,那么您将喜欢编写游戏引擎。入门游戏程序员的一个常见陷阱被赶上编写引擎作为某种永续项目。老实说,我相信所有这些开源游戏引擎都是这样产生的-那些实际上没有

然后,在这种情况下,编写您自己的引擎。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.