5

我想开发一个包含 3D 世界的游戏,其中简单的 3D 形状相互交互,其中涉及“真实”的物理。

我没有视频游戏编程的经验,我愿意学习,所以我想问一下你会使用哪种编程语言和/或库来制作一个由相互交互的 3D 形状组成的游戏,并且像物理一样“真实” ?

我知道这个问题有多个答案,但我想了解目前最常用的技术是什么。

4

16 回答 16

7

看看子弹

Bullet 3D 游戏多物理库提供最先进的碰撞检测、软体和刚体动力学。

  • 许多游戏公司在 Playstation 3、XBox 360、Nintendo Wii 和 PC 上的 AAA 游戏中使用
  • 模块化可扩展 C++ 设计,可热插拔大多数组件
  • 为 Playstation 3 Cell SPU 和其他平台提供多线程支持的优化后端
  • 离散和连续碰撞检测 (CCD)
  • 扫描碰撞查询
  • 带有自定义碰撞过滤的光线投射
  • 通用凸支持(使用 GJK)、胶囊、圆柱、圆锥、球、盒子和非凸三角形网格。
  • 刚体动力学,包括约束求解器、通用约束、布娃娃、铰链、球窝
  • 支持约束限制和电机
  • 柔软的身体支撑,包括布料、绳索和可变形
  • Bullet 已集成到 Blender 3D 中并提供 Maya 插件
  • 支持导入和导出为 COLLADA 1.4 物理格式
  • 通过改装加速结构,支持非凸三角形网格的动态变形

该库在 ZLib 许可下可免费用于商业用途和开源。

于 2008-10-08T12:07:43.940 回答
5

您应该查看 SDL 库 ( http://www.libsdl.org ),因为它支持多个平台并具有多种编程语言的绑定。它还支持 OpenGL。

祝你好运!

于 2008-10-08T12:09:04.280 回答
3

用 C# 编写的 XNA 游戏工作室。它比 C++ 和 DirectX/OpenGL 更容易(主观)学习。 http://creators.xna.com/

这里有另一个关于它的线程。当我找到它时会链接。

于 2008-10-08T12:09:09.447 回答
2

我建议您从使用 Flash 开始。这是一个创建简单游戏的好环境,但当您希望获得更多花哨时,它有很好的 3D 和物理引擎可用(例如Papervision3DFisix )。

于 2008-10-08T12:07:52.070 回答
1

仅供参考,有一个非常有趣的开源 BSD 许可项目,名为OpenSim ,它包括在C# 和 Mono中重新创建服务器端SecondLife基础设施。

它似乎与您的朋友和您想做的事情相对应。虽然仍处于 Alpha 阶段,但它相当稳定,绝对值得一试。

于 2008-10-08T12:16:23.003 回答
0

简单而强大的东西(至少根据我的口味:))是Apocalyx

完全开源,大量demo,大量教程,可直接处理多种常用格式(如MD2、Cal3D或BSP),让您可以使用高级工具来创建自己的世界。

用 C++ 编写,可在 Lua 中编写脚本(有专门的脚本编辑器)。

于 2008-10-08T12:30:01.120 回答
0

在 C++ 中,我使用过SDLGLFW;在 Python 中,我使用了PyGamePyglet

就语言而言,如果您使用 C++,那么我肯定会建议您考虑使用Squirrel、Lua 或 Python 之类的东西来编写脚本,尽管用 Python 之类的东西编写整个游戏也很好(并且性能应该开始成为一个问题稍后,您可以只编写在 C++ 中导致问题的模块 - 当然是在分析之后)。

于 2008-10-08T13:10:22.847 回答
0

我使用 David Brackeen 的“Developing Games in Java”一书为 Windows 开发了几个 Java 平台游戏。它确实涵盖了 3D 的东西,但我还没有到那一步。

于 2008-10-08T12:07:17.000 回答
0

我建议研究微软的 XNA 框架。这将涵盖它的“游戏”方面。至于物理,我建议看看子弹引擎,虽然有很多可供选择。

于 2008-10-08T12:07:27.593 回答
0

用于性能的 C/C++ 和用于脚本的Lua 。

Lua 简介 http://www.gamedev.net/reference/programming/features/lua/

于 2008-10-08T12:09:02.143 回答
0

Blitz 非常擅长快速启动和运行。

http://www.blitzbasic.com/

Blitz3D 支持 3d 卡片等等。 http://shareit1.element5.com/product.html?productid=147747

它也足够强大,可以让“真实”游戏由它驱动

例如 http://www.zee-3.com/nakedwar/index.php

于 2008-10-08T12:09:12.580 回答
0

SDL 是事实上的游戏起点,无论如何在某些平台上也是如此。它会让你快速启动并运行(它可以在 linux 上运行)。

在那里,您可以在 sourceforge 中搜索一些:例如,PLIB、Ogre、CrystalSpace。他们都很好,虽然我不知道他们在过去几年里进展如何。

于 2008-10-08T12:11:19.160 回答
0

如果您想运行具有良好物理性能的纯实时 3D,我建议使用 C++ 与例如 OpenGL。

我建议您在http://nehe.gamedev.net/下查看有关 OpenGL 的教程。您还可以在http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=30找到碰撞检测系统的示例

如果您实际上不擅长实时的东西,您可能可以使用 C++ 并使用“更简单”的编码语言。

于 2008-10-08T12:12:24.727 回答
0

很多引擎可供您使用。您需要开始研究哪一个适合您的游戏设计。

大多数商业游戏都是用 C++ 编写的,并带有一些其他语言来完全绑定它。其他语言提供不同的特性,例如 Java 对移动电话的可移植性。

于 2008-10-08T12:13:23.260 回答
0

如果您完全没有编程经验并且希望获得真正快速的视觉效果,那么您应该查看诸如 DarkBasic 或 Blitz3D 之类的语言。

也就是说,这些语言有相当大的限制,如果你也在考虑学习编程,你可能会想要使用 Java 或 C# 的不同用户创建的 API,例如 JOpenGl、Jogre、XNA、SDL.Net 或 Irrlicht.Net . 它们将允许您在创建游戏时学习对象编程的基础知识。

以下是不同的链接:

DarkBasic 主页

闪电战3d

爪哇:

JopenGL

乔格雷

C# :

XNA

SDL.net

Irrlicht.net

于 2008-10-08T12:20:08.550 回答
0

如果您熟悉 Delphi,请尝试使用 GlScene。

于 2009-01-20T11:54:49.003 回答