你怎么写一个3D游戏?

时间:2009-01-31 08:31:17

标签: 3d

我一直想知道,游戏程序员如何将外部3D建模软件(如maya或3d max)中完成的游戏角色与用最喜欢的编程语言(例如c或c ++)完成的实际游戏逻辑结合在一起。

如何将这两件事结合在一起,从建模角色到编程构建游戏的实际过程是什么?

令我惊讶的一些事情是,您是从代码还是从3D模型编写角色动作?

示例非常好看。

13 个答案:

答案 0 :(得分:14)

大多数信息,如字符移动,实际上都存储在代码之外。实际上这是一个非常简单的过程:

  1. 艺术家在Maya或其他任何地方制作3D模型,然后将其保存在文件中。让我们说他们称之为'Gollum.3D'。
  2. 现在'Gollum.3D'包含大量代表模型点,纹理和其他所有数字的数字。
  3. 然后程序代码读取文件'Gollum.3D' - 它的所有模型点,纹理和所有内容,然后做很多数学运算来计算3D场景的样子,给出代表所有数字的数字模型。
  4. 事实证明,游戏中的所有内容最终都与代码分开存储,代码只是读取它并在游戏运行时将它们组合在一起。当我说出一切 - 我的意思是一切!所有文本,生命点和武器伤害量的统计数据,菜单屏幕图像,甚至人工智能都与脚本中的程序代码分开存储。程序代码最终做得很少。

    你可能听说过人们为游戏制作mods。修改者是编辑位于程序代码之外的数据的人,这反过来又将游戏改变为适合他们的方式。他们只是利用了这样一个事实,即游戏的基本内容(除少数核心内容之外)都没有写入程序的代码中。

答案 1 :(得分:6)

与最喜欢的答案不同,我会冒昧地说,如果你指的是一个带有动画的角色,这实际上是一项非常重要的任务。

最终结果是通过脚本和配置文件(换句话说 - 数据驱动)实现大多数功能,但构建这样一个系统的过程并不简单。

通常,您从外部建模器开始,执行以下操作: 1.构建皮肤模型。 2.根据重量等构建骨架并贴在皮肤上。 3.根据需要应用所有纹理和材质。 4.导出到您的引擎。

现在,您可以开始为此角色骨架或任何类似角色建立动画库,如果您将其与多个角色骨架相关联(通常情况下,如果骨架足够接近或模块化)。 一些动画将仅包含部分层次结构(仅能够混合动画的一部分 - 例如,下半身正在运行,而上半身可以使用不同的动画或反向运动 - 在跑步期间向敌人射击是很好的例子)。

现在终于到了代码部分了。 您需要构建一个系统,将动画与骨架相关联并正确渲染它。 该系统还需要能够在动画和IK之间进行混合(例如 - 在站立到跑步之间切换),并能够组合多个动画和部分动画 - 例如,步行(全身动画),看着某人(IK)对于上身),同时挥动手(具有部分动画的IK)和呼吸(部分动画)将组合4种不同的部分或完全混合。

我没有提到你需要构建导入器的事实,动作和动作的动画之间也存在差异。动作可以组合或随机选取几个动画 - 它们将通过数据映射文件关联。

我建议看看XNA - 它有很多例子,导入器等等,并且在库中包含很多基本内容,所以你不必从头开始。 正如人们也提到的 - Blender3D对于编辑器+来说是一个不错的选择,所以Torque可能仅仅是为了体验游戏引擎。

最后一句话 - 如果你要尝试一下,它不会是在公园散步,但是嘿 - 非常有趣,结果会让你为自己感到骄傲。

答案 2 :(得分:5)

查看Blender Game Engine Tutorials以及他们的Project Apricot,这是一个用Blender Game Engine创建3D游戏的开放项目。

答案 3 :(得分:5)

3D角色创建和3D游戏编程是两个截然不同的过程。

通常您在3D建模器(Blender,Maya,3D studio Max等)中雕刻3D角色,将此角色导出到文件(.obj,.md2等)并将代码写入3D游戏,以便处理引擎中角色的导入。

虽然这听起来很困难,3D game engines确实支持所有这些内容而无需编写数百万行代码并重新发明轮子。

以Ogre3D为例,这是一款3D开源游戏引擎。你不必是一个编程大师,以便有一个简单的例子和​​&在几分钟内运行。我建议你看看他们的wikitheir tutorials

例如this is一个简单的教程,用于从3D Studio Max创建和导出简单模型并将其导入Ogre 3D

答案 4 :(得分:3)

我自己没有很多游戏编程经验,但我发现XNA框架和资源非常有启发性。您可以在http://creators.xna.com/en-US/

找到大量的示例以及如何使用和非常有用的论坛

答案 5 :(得分:1)

动画可以在3D建模软件中完成,然后直到基于游戏逻辑“运行”不同动画的代码。模型通过常见格式从建模软件进入游戏。例如,XNA框架可以原生地读取一些最常见的模型格式。

答案 6 :(得分:1)

您应该使用3D渲染引擎。其中很多都是免费的(Ogre3D是一个很好的)并且通常它们可以导入几乎任何类型的网格,这些网格是从通用建模软件中创建的。

答案 7 :(得分:1)

访问Unity3d.com,您将立即制作游戏。动画在建模软件Maya等中完成,但有些是在引擎中完成的。 Unity使物理变得简单,您或多或少地创建了您的世界并链接了对象如何交互。

示例 - 您有一台相机 - >您可以从UI设置摄像机以跟随主角和摄像机放置位置的XYZ变换。它也可以直观地完成。

检查一下,它会带来很多乐趣,而且你会想象的代码更少。从那里你可以编写自己的代码来做你自己独特的游戏。它很容易解释为编写脚本并将其拖到您希望脚本运行的对象上。

这就像我能得到的外行一样。欢呼声。

答案 8 :(得分:1)

由于这个话题正在寻找新的生活,我认为我会做出贡献。我一直在使用Autodesk 3Ds Max生产3D产品超过12年,并更多地关注动画方面,但确实知道Autodesk提供了丰富的类库,其中包含内置的高级脚本模块和功能,其中包含编写3D的所有工具这个程序中的游戏。当然,你必须学习" Max Script"以及如何使用诸如" Biped","粒子流"," Havoc"等名称与这些内置包进行交互。现实模拟引擎等,更不用说渲染引擎(通常是默认扫描线,Mental Ray,VRay),它需要很多参数。

如果您没有预算或进入开源,请查看Blender!这个开源3D软件和社区提供的内容真是太棒了。他们甚至拥有一个游戏引擎"也可以挂钩:http://www.blender.org/features/他们有资源帮助你入门。

我想补充一点,也提到Unreal看起来非常有前途,因为他们发布了#34; free"如果您的游戏实际起飞,请阅读约5%版税的精美图片! https://www.unrealengine.com/what-is-unreal-engine-4

答案 9 :(得分:1)

我发现有很多链接可以学习特定工具。如果我要学习游戏开发,我想要一个普通的论坛/网站来达到这个目的。例如GameDev.net

PS:这是一个补充的答案,而不是一个完整的答案。

答案 10 :(得分:0)

想一想你是如何在2D中完成这一切的,它与3D几乎相同,算法只是不同而且需要注意不同的方面。

你问的其余部分是一个设计问题,依赖于游戏和程序员。人们可以编写一个复杂的模拟来移动他们的角色,而其他人可能只依赖于骨骼动画。有人可能会在3d模型中存储游戏逻辑而其他人则不会。

实施例?也许quake source code是一个很好的资源来源。

答案 11 :(得分:0)

编写游戏引擎是一项复杂的任务,我的建议是使用现有引擎之一(从列表中选择:http://www.devmaster.net/engines/)。

选择引擎时,您需要考虑以下因素:

  • 许可证(您想发布,有预算,是开源)
  • 编程语言/脚本(您最熟悉哪种语言)
  • 目标平台(Windows / Linux / Mac /控制台/电话)
  • 管道(是3D建模工具的导出器和导入器中的导入器)

你的问题与最后一项有关,你应该选择一个引擎,可以将你在3DS,Maya中生成的资产以一种你不必担心文件格式的方式导入引擎,因为这会使因为你只专注于游戏,所以你的效率更高。

答案 12 :(得分:0)

我没有注意到对于究竟要找什么有太多的回应。近年来发布了更多有关如何做到这一点的信息,这些信息有点简单,但仍然相当复杂。

免费

付费