有关游戏引擎的 FAQ

有关游戏引擎的 FAQ_第1张图片

导读:这个 FAQ 的目的是提供足够的信息,让开发者能够做出明智的决定,决定哪些工具适合他们,或者至少提供足够的信息以让他们的开始搜索。

在 reddit 上(特指 gamedev 这个 subreddit),有抱负的游戏开发者最常问的问题之一就是“我应该使用什么游戏引擎”,这并不是一个容易回答的问题,即使对于那些在游戏开发中「玩了一段时间」的开发者来说也是如此。

什么是游戏引擎?

引擎是一个完整的包:一套帮助开发者从头开始构建游戏的全面的工具。 引擎通常包含某种级别或场景编辑器,用于导入和管理游戏资源(模型,纹理,声音等)的工具,动画系统以及编写游戏逻辑的脚本语言或 API 。仍然需要编写代码才能使用引擎,但只需要专注于游戏逻辑,系统级的已经由引擎完成了。

什么是游戏框架?

一个框架比引擎更轻,框架用来抽象出最底层的编程细节,并允许开发人员轻松地制作交互式图形程序。通常,框架处理创建游戏运行的操作系统级窗口(这是非常的复杂),提供一个直观的、平台无关的方式来绘制窗口中的东西(无论是 2D 还是适当的 OpenGL/DirectX 代码) 提供对各种输入设备(键盘,鼠标,操纵杆等)的状态的访问,并且提供用于处理声音的系统,还有需要编码的其他一切。框架远远小于引擎,但这意味着可以自由构建所需的任何架构,而不是在任何预设的引擎的约束下工作。

为什么我需要这些?

严格来说,你并不需要使用任何这些工具,但是游戏制作的道路漫长而且艰巨,问这个问题的许多开发人员自己很可能陷入被称为「引擎陷阱」的东西之中,也就是说,他们花费了所有的时间来重新创建这些第三方工具中已有的功能,而实际上并没有在开发他们一开始尝试制作的游戏。

如果你的最终目标是制作出一个游戏的话,那么在一些第三方工具的帮助下,这几乎总是一个更好的选择。

那么我需要一个框架呢,还是一个引擎?

这取决于你的背景和目标。一般来说,如果你的动机是「我要玩一个游戏」,你应该选择一个引擎,引擎把开发者从凌乱的架构解放出来,转而去关注艺术、设计和游戏。

但是,如果你的目标是「我想学习游戏编程」,那么可能框架更加适合你,因为你可以自己做出关于如何构建内容的决策,而你将会对游戏是如何真正建立的有更加深刻的认知。

另外,如果你想要现代的新潮的图形(如 Xbox 360 或更好),请使用引擎,你会完全疯狂地尝试重新实现所有这些东西,除非你知道你在做什么。

我应该使用哪个框架?

这是一个很有难度的问题,因为它的答案在很大程度上取决于你需要框架来完成什么。用于游戏开发的常用框架包括

  • Haxeflixel - Haxe based 2D framework supporting HTML5, iOS, Android, Desktop and more.
  • LibGDX - Java Framework / Engine
  • Love - 2D Lua based Game Framework
  • MonoGame is an open-source cross-platform reimplementation of XNA
  • PyGame - 2D Python Game Framework
  • SDL - Low-level library written in C. Supports Windows, Mac OS X, Linux, iOS, and Android
  • SFML - Slightly higher-level than SDL, written in C++. Supports Windows, Linux and Mac OS X
  • lgameframework - 3D game development framework for Lua
  • LWJGL - 3D Java OpenGL Access
  • Ogre - 3D -C/C++ Rendering Engine
  • OpenTK - OpenGL & OpenAL framework for .NET
  • Flixel - Flash-based framework written in AS3
  • XNA - (hard to get running on mac)

我应该使用哪种引擎?

这是另一个有难度的问题,因为存在相当之多的引擎,没有一套快速的规则来挑选最适合的。所以最终还是要自己来决定。

有关游戏引擎的 FAQ_第2张图片

原文:engine_faq - gamedev

延伸阅读:

  • 是不是很想制作游戏,但不知道从何下手?
  • 极光开源项目:「Aurora UI」,一个通用 IM 聊天 UI 组件,支持Android、iOS(swift/oc)、react。

你可能感兴趣的:(有关游戏引擎的 FAQ)