3D游戏引擎推荐
我正在开发一个3D射击游戏,想让它能在电脑、手机和平板上运行,希望能得到一些关于选择游戏引擎的帮助。
- 我希望能一次性写好这个应用,然后轻松地移植到Android、iOS、Windows和Mac上。
- 我想让这个应用可以通过互联网进行流媒体播放。
- 这个引擎需要有一些物理效果,比如碰撞检测,还有3D渲染的能力。
- 我更喜欢使用像JavaScript或Python这样的脚本语言,而不是Java或C++(不过如果这是最好的选择,我也愿意去学习这些语言)。
-我希望使用一个基于代码的引擎,而不是图形界面的引擎。我想要的是一个更像库的引擎,可以导入到我的Python文件中,而不是一个让我依赖图形界面来导入资源和建立它们之间关系的应用。
我有这样的想法是因为我最近使用Unity3D和Blender的经历。我设计的代码需要我写很多杂乱无章的脚本来控制不同的对象。我不禁想,如果我用一系列Python文件来写我的程序,肯定能做得更整洁、更快。
我会很感激任何建议。最接近我想要的引擎是Panda3D,但我在处理纹理时遇到了困难,而且我不太确定我的应用能否轻松地提供给手机用户。如果你想到其他类似的选项,我会非常感激你的推荐。
3 个回答
我看到你已经查过Unity3D了,但我想不出还有其他可以在电脑、手机和通过网络流媒体运行的支持3D的引擎(如果是2D的话,可以看看EXEN或者其他的)。
我也很确定你可以用代码来使用Unity,而且它支持几种不同的编程语言。不过,要让Unity正常工作,你不能仅仅把unity.dll(比如说)导入到你的代码里,不行的,你得把你的代码放到Unity里,这样Unity才能让它在这些不同的平台上运行。
你提到了iOS,这基本上就限制了你的选择,只能用原生开发或者网页技术。因为你不想用原生开发(因为这样在不同平台上会有不同的表现),所以你可以选择JavaScript。最理想的选择是WebGL,但目前支持还在实验阶段,手机系统上还不能用。不过,你仍然可以使用一些基于2D <canvas>
的JavaScript库。不过要注意,这样的性能可能不会很好。你可以在这里找到一些例子:http://www.javascriptgaming.com/
根据你的需求,Unity3D可能是最合适的选择。正如Roy所说,目前没有其他3D引擎能支持这么多平台。你为什么认为完全使用代码的方式能让你避免创建各种不同职责的类呢?
其实,编写代码的工作量和代码、类的数量是不会改变的。唯一不同的是你与所开发系统的互动方式。对于任何大型系统来说,你很快就会遇到成百上千个文件。我最近在完成一个小型的Unity项目,花了3到4个月的时间,包括学习Unity,代码量大约有1万行,加上外部库的8000行,还有超过100个类。但这些数量并不是因为Unity的工作方式,而是项目的需求所决定的。在这个过程中,我学到了很多关于Unity运行的知识,以及它需要什么样的设计模式,这样我下一个项目时能找到更好的解决方案。回顾一下你做过的事情,想想如何能更好地组织它。我觉得可以肯定的是,使用其他系统时,你也需要大致相同数量的代码才能达到类似的效果。
Unity的优势在于它有很好的多平台支持和出色的资源管理系统。导入和使用艺术资源,包括2D、3D和音频,对我来说是这类开发中最繁琐的任务之一,而Unity在这方面的支持非常好。