我正在开发一款我希望在计算机/手机/平板电脑上运行的3D射击游戏,并希望能够选择使用哪种引擎。
- 我的愿望是使用基于代码而不是基于GUI的引擎,这个引擎更像是一个可以导入到我的Python文件中的库(例如),而不是强制我依赖的应用程序在其GUI上导入资产并建立它们之间的关系。
这种愿望源于我最近使用Unity3d和Blender的经历。我设计代码的方式要求我编写几十个无组织的脚本来控制各种对象。我不禁想到,如果我用一系列python文件编写我的程序,我就能做一个更整洁,更快的工作。
我很感激任何建议。最接近我想要的是Panda3d,但是我在使用纹理时遇到了困难,而且我不相信我的应用程序可以轻松地用于移动电话/设备用户。如果您有类似的选择可以考虑,我会很感激。
答案 0 :(得分:2)
对于你有Unity3d的要求可能是你最好的赌注之一。正如罗伊所说,那里没有任何其他3D引擎可以跨越那么广泛的平台。为什么你认为进入一个完全基于代码的系统可以避免创建各种各样的责任类?
编码工作量以及代码和类的数量将保持不变。唯一可以改变的是您与正在生成的系统交互的方式。使用任何大型系统,您将很快遇到数百个文件。我刚刚完成了一个较小规模的团结项目3-4个月的编码,包括学习统一,它运行在10k行代码加上另外8k来自外部库和100多个类。但这个数量并不是由项目的要求驱动的统一工作方式所驱动的。在编写代码的过程中,我学到了很多关于统一运行以及它需要什么样的模式的知识,并且能够为下一个项目提供更好的解决方案。回顾一下你做了什么,并考虑如何更好地组织它。我认为这是一个保存的赌注,说你将需要与任何其他系统相同数量的代码来实现类似的结果。
团结所具有的优势是良好的多平台支持和优秀的资产管道。导入和利用艺术资产,2D,3D和音频对我来说是这种开发中最繁重的任务之一,它在统一性方面得到了极好的支持。
答案 1 :(得分:1)
您已经提到过iOS - 这几乎限制了您使用原生网或使用网络堆栈。由于原生不是你想要的(因为你提到的每个平台都不同),你可以使用JavaScript。理想的是WebGL,但支持仍然是实验性的,在电话系统中不可用。您仍然可以使用基于2D <canvas>
构建的JS库之一。不过,你不能期待那种出色的表现。您可以在此处找到示例:http://www.javascriptgaming.com/
答案 2 :(得分:0)
好吧,我看到你已经检查过Unity3D,但我想不出任何其他引擎可以在PC,电话和流媒体互联网上运行3D(用于2D检查EXEN或其他任何内容)。
我也很确定你可以使用基于Unity的代码,并且它支持几种不同的语言,但是为了让Unity工作,你不能只将unity.dll(例如)导入你的代码,不你必须将你的代码整合到一起,以便统一可以使它在所有这些不同的平台上运行。