如何使用游戏引擎制作游戏?

我是一个完整的游戏编程初学者。 我决定试试UDK游戏引擎。 我有一些简单的疑问。 我search了Google的答案,但无法解决我的疑惑。

这就是我所了解的游戏引擎:它们被用来通过做游戏中常见的工作来减less我们的工作量。 他们抽象复杂的层次,给我们一个更容易的层次。 所以当使用游戏引擎时,我们可以专注于我们的游戏逻辑,而引擎会执行那些复杂但常见的任务。 我明白游戏引擎是建立在像OpenGL这样的API之上的。

现在疑惑来了: 我们如何从游戏引擎做出我们的游戏? 每个游戏引擎是否都提供了一个API,通过这个API我们可以与它进行交互,并从中获取我们的游戏?

我想到了比喻。 这可能不是一个真正的比喻。 假设我们正在建房子。 发动机提供了一个房子的骨架,在这个房子里,所有房屋都有共同的基础和墙壁, 现在我们要把我们select的一个窗口放到房子的骨架上。 我们通过API进行交互,find可以把我们的窗口放在外面的位置或者孔。 这个比喻有道理吗? UnrealScript是用来使用UDK提供的API的语言,以便我们的“窗口”可以插入到“House”中?

Solutions Collecting From Web of "如何使用游戏引擎制作游戏?"

极限tl;博士

您作为游戏开发者的目标是提供资产和描述游戏特定机制的脚本,以便引擎能够以适当的方式预制游戏逻辑并呈现游戏资产(呈现graphics和播放声音)。 为此,网上有教程,例子和书籍。 关于如何正确应用像Unreal这样的引擎来达到共同的devise目标,有数百篇有用的文章。 对于非常具体的问题,请提出具体的问题。

把引擎想象成“不受干扰”的事情,并且承担一些你不想处理的责任; 比如重新粉刷你的房子,打扫卫生间,做晚餐,在冰箱里清洗霉菌,修理破损的管道,缴税,在汽油用完之前用汽油填满车内的油箱,在这个世界上,所以我们并不是全部冻死,而且那场雨在冬天浇灌我们的军队。 发动机照顾所有通用的必需品,如果显然不是真正的所有游戏。

我忘了提到引擎通常带有文档,并没有明确的要求,但是暗示着一个好的可靠引擎带有教程和例子。

tl; dr总结

所以基本上一个引擎是一个巨大的负载难以实施的服务,有时需要无数的女性和男性的生产时间。

  • 它从磁盘加载资产。
  • 它处理来自用户的input。
  • 它经常了解设备,并提供一些现有的跨平台支持和本地function。
  • 它播放音乐和声音。
  • 它将游戏实体渲染到视图中。
  • 它经常处理物理。
  • 它可以处理networking,与服务器和同行的连接。
  • 它甚至可以提供简单,简化的方式来创建像关卡一样的内容。
  • 它通常伴随着现有的资产,有时是免费的,水平,模型,animation,纹理等可以用作占位符或至less在alpha阶段填写一些艺术。
  • 有据可查,并得到很好的解释,受欢迎的引擎通常经常在网上书籍,YouTubevideo,博客和其他资源。

换句话说,它可以完成基础工作所需要的一切 ,不会决定游戏的规则,以及外观和声音的方式,但它可以让你显示这些东西,把这些规则写成一个人类可读和编程友好的脚本,那些声音和音乐。 它会帮助你执行一些常见的规则,如物理和碰撞检测。

长版(“这边有龙”):


让我们澄清(推广)什么引擎为你做什么,你自己做什么。

有一些服务,每个“家”在你的比喻或游戏,如果我们深入到它,需要。 这些可以是电力,水,煤气和更高水平的服务,如清洁,维护(油漆和管道)和电缆。

游戏需要什么?

  1. 它需要在屏幕上显示一个引人注目的图像! 存在一个或两个黑屏的游戏,但这是最常见的一种。
    1. 图像经常变化,所以需要显示运动中的东西。 (墙壁可能不动,但摄像机因此处于运动状态 ,不一定会移动 )。 现在,如果我们概括它取决于游戏是2D还是3D。
      1. 2D – 我们需要在屏幕上放置精灵,这通常被称为“Blitting”,它基本上是将2D图像数据从精灵帧复制到屏幕上。 也有更多的现代化方式比使用硬件加速的“Blitting”,基本上把精灵作为纹理放在扁平的矩形平面物体上,并使用GPU来渲染它。
        1. 一些2D游戏需要(inbe)补间,这是一种说明animation是如何为游戏实体起步的方式。
      2. 3D – 我们需要与3d api(如OpenGl或Direct3D)交谈,并实时渲染模型(3维可见实体的数据表示)(这不容易)。
        1. 如果它是3D的,它包括animation帧之间的照明,折射和插值等等。

所以引擎可能会提供渲染或Blit实体的服务,以创建一个引人注目的游戏发生的事件。 如果你只是想做一个游戏,你不会想写一个实时渲染或“Blitting”服务。

你会想说, creature.position = (x, y) // display creature at (x, y)它看起来像这个图像或者那个模型。

  1. 将资产加载到内存中。 就像我们所说的,这个生物看起来像一个图像,一个animation精灵或者一个3danimation形状。 它通常是一件艺术品,是由艺术家用适合于此目的的工具创造的一种资产。 这个数据需要来自哪里? 它通常来自一个devise工具,比如模型的Blender / 3D Studio Max或者animation精灵的Paint.net(太多2d工具列表)。 然后以某种文件格式保存在磁盘上。 有人需要将该资产加载到内存中,以便将其交给渲染服务。
    1. 2D – 您需要加载图像并理解图像格式。
    2. 3D – 您需要加载3D纹理animation模型。 通常与骨骼animation。

所以引擎需要了解如何读取文件; 你不想写一个文件parsing器。 这些文件以某种格式存放在磁盘上,你只是想说Load 'fileName.ext' ,引擎需要把这些数据转换成可以被渲染服务渲染的有用的东西。 渲染服务需要parsing(parsing)数据,并以理解它的方式进行解释。 如果文件改变了,你不需要replace整个渲染服务,对吗?

  1. 常见的物理 – 通常是时间引擎可以提供物理模拟。 这是很难实现你自己的。 碰撞也很难在三维空间或像素完美的方式中检测到,而且不会影响性能,最重要的是让它无缺陷,除非有人做得好,坐下来投入时间才能find正确的方向。

  2. 跨平台支持和联网任何人? 所以你用一些低级语言编写你的游戏。 它是否支持其他平台,你有稳定的,无bug的多人游戏? 可能不会。 除非你使用了像SDL / SMFL这样的库。

  3. 常常被忽视,常规(强调configuration(这对于大型团队来说是重要的,对于时间紧迫的个人来说也是如此)),解决自行车棚问题。

  4. 支持多种input设备,如键盘,鼠标,XBOX控制器等。

  5. 一些引擎具有优秀的工具来创建游戏中的资产。 它甚至可能有一个大的资产数据库出售资产或免费下载。

我承认可能错过了一些东西或掩盖了一些主题,但这涵盖了大部分引擎为你做的。

那么开发人员还剩下什么呢?

  • 写下你的游戏的故事。 什么是游戏不仅在叙述方式; 以游戏体验的方式,玩家经历了什么样的旅程,她在胜利,困惑,怪物和厄运之路上面临着怎样的挑战?
  • 在游戏中写出规则和机制,玩家是否可以在空中跳跃,或者穿过坚实的墙壁? 当游戏人物在脸上踢一个Hobgoblin会发生什么?
  • 为您的游戏录制声音和音乐。
  • 创造真正符合游戏主题和氛围的有吸引力的艺术资产。
  • 微调控制到完美。

要在实践中应用,您需要了解与引擎一起使用的脚本语言,并构建一个描述游戏规则和预期function的代码库。 就像我之前提到的,有很多教程和例子可以帮助你入门。

引擎是游戏代码所在的底层平台。 引擎的目的是将原始驱动程序/ dx / opengl API从我们这里抽象出来,使其更易于使用。

它只是作为我们构建游戏的“工具箱”。 语言(如未提供的)只是该工具包的一部分,使我们能够做我们所需要的。

好吧,你的许多问题…

我们如何从一个游戏引擎做我们的游戏?

我们在引擎API的基础上构建自己的逻辑,完成我们“独特的”游戏相关的东西。

每个游戏引擎是否都提供了一个API,通过它我们可以与之交互并从中获得游戏?

是的,提供API本质上是游戏引擎核心目的的一部分。

这个比喻有道理吗?

但是引擎比这个水平高得多……它说:“使用这个函数,你可以绘制东西,定义你称之为墙的东西,在这个东西中,你也可以定义一些东西,你可以调用一个窗口,把它放在你的壁”。

引擎并不担心现实世界中的东西,比如“墙”,它们将墙的定义转换成API调用directX或OpenGL的形状和材质信息。

UnrealScript是用来使用UDK提供的API的语言,以便我们的“窗口”可以插入到“House”中?

在虚幻引擎的情况下…是的,在某种意义上,“unrealscript”是引擎提供的“工具箱”独有的一种语言,使开发者可以将游戏放在一起。

希望能解决你的困惑?