作为制作游戏的选择,Unity3D的优点/缺点是什么?[关闭]


64

我们正在使用Unity3d进行学校项目,因为他们去年使用了Shiva(这对我来说似乎很可怕),我想知道您对此工具的看法。

优点:

  • 多平台,我什至听说Google会在Chrome中实现它
  • 您需要的一切都在这里
  • 脚本语言使其成为非编程大师的好选择

缺点:

  • 多人游戏?
  • 专有的,您完全依赖统一性及其限制,无法扩展
  • 少了“从头开始制作游戏”
  • C ++会很酷

我确实认为这种工具很有趣,但是值得在学校中使用一个涉及3个以上编程人员的项目吗?通过使用这种工具,我们在编程方面真正学到了什么(我对python和js没问题,但我讨厌C#)?即使我们从一月开始学习直接x,我们也可以改用Ogre ...


另一个骗局是您需要熟悉3D建模/设计,但从另一个角度来看,情况似乎并非如此。.由于2D游戏是可能的
Johnny Quest

1
@Johnny Quest并不是真的意味着它可能使它难以使用。
惊悚片,

7
“ C ++真是一件很酷的事情” –认真地讲,什么?用C ++编写现在很酷吗?我个人讨厌这种语言(所有类型的输入,Python一直都是:p),但是它无疑是一种很棒的语言功能,也是明智的。
共产主义鸭子

1
Unity是一个了不起的引擎,但是...有几点需要注意的缺点:1)Unity有点像是在消耗内存。它占用的内存比您想象的要多;可能是由于缓存了纹理之类的东西。这可能会导致调试问题,甚至在移动设备上引发OOM错误。2)由于您正在处理黑匣子(无源代码),因此很难找到,解决和修复性能问题。仔细检查着色器,并观察如何管理场景。
milkplus 2012年

2
@milkplus:这就是为什么我认为团结不是学生应该学习的原因。示例:我可以教学生编程的知识,首先教他们python的知识,但是在某一点或另一点上,你必须教他们水平的东西是如何工作的,甚至是基础知识。人们在知道该工具的所有功能后应使用该工具。如果没有,那将是一场灾难。您不能总是用统一之类的复杂事物来证明Knuth的报价。
jokoon 2012年

Answers:


66

Uinty3D的主要“优点”在于它非常快。我不是在这里谈论性能,而是在谈论开发速度。你有:

  • 统一资产管道。完全不需要花时间在资源子系统上,也不需要编写或修复错误的导入例程:只需将文件拖放到文件夹中即可。
  • 集成的关卡编辑器。无需花时间在关卡工具上:直接从事业务。
  • 强大的调整和调试支持:您可以在玩游戏时立即显示所有游戏变量,也可以随时更改-而所有这些都无需编写任何代码。随时暂停游戏,或一次执行一个代码。
  • 现成组件的相当全面的库。渲染,声音,物理,控件-已经编写了许多“样板”代码。
  • Mono作为脚本宿主。尽管人们可以争论C#作为一种语言的优点,但Mono的基类库提供了许多功能。集合,I / O,多线程和疯狂表达的LINQ都大大加快了开发速度。

而且,Unity3d在多个平台上都非常出色。当然,您不能创建一个Windows .exe游戏,然后神奇地在iPhone上使其“正常工作”。但是Unity可以做到这一点。需要的是“调整”多于“移植”。

当然,在某些情况下,Unity3D并不理想。对于某些LAN对等游戏,Unity中集成的网络多人游戏是可以的,但是任何需要中央服务器的事情都需要您从头开始编写所有网络代码。Unity的GUI系统非常古怪且缓慢,因此制作复杂的游戏内GUI很麻烦。但是,我见过的所有其他游戏GUI系统也很痛苦,因此Unity的整体感觉还不错。

而且,当然,Unity3D的灵活性要比仅提供库/源代码的OGRE之类的“游戏引擎”灵活一些。它的性能并不完全一流,并且由于您只有脚本沙箱,因此无法使用一些聪明的低级黑客来对其进行改进。例如,如果Unity的内置树渲染器由于某种原因无法满足您的需求,则您将无法编写自己的树渲染器(可以,但是它会通过脚本工作,并且很可能太慢且太麻烦了)。不过,只要您不介意失去一点性能,就可以使用Unity进行几乎任何事情。

但是,Unity3D最大的“缺点”是源代码控制。如前所述,Unity自己的Asset Server花费不菲。而且确实非常难。它甚至没有分支。虽然Unity3D理论上支持第三方SCM系统,但使用它们也会带来危险。我已经看到导入设置在SVN提交后“神奇地”改变了,或者在使用Perforce之后所有对象的参数都消失了。所有这些都可以解决,但是无论如何,Unity3D +源代码管理=痛苦。

因此,要实际回答您的问题。我相信Unity3D是最好的之一,如果不是最好的,游戏引擎的选择。一“小”的游戏。特别是在原型阶段。

就是说,如果我们正在谈论一个教育项目,我建议不要这样做。要了解游戏的工作方式,最好以尽可能低的水平编写游戏。游戏引擎是一个很好的工具。但是要使用它来获得最大收益,有必要了解它们的工作原理以及为什么会这样工作。最好的学习方法是编写自己的游戏引擎-即使最终结果很糟糕。


3
我将引用“统一的资产管道。根本不需要花时间在资源子系统上,也不需要编写和修复错误的导入例程:只需将文件放到文件夹中就可以了。”
nkint 2011年

7
而“ Unity3D最大的缺点”是源代码控制。”
nkint 2011年

2
并且“也就是说,如果我们正在谈论一个教育项目,我建议不要这样做。”
nkint 2011年

关于您的“树根”问题。我认为尤其是在C#中,您可以编写C ++树gen,将其放入.dll中并将其视为托管c ++。因此,您可以从理论上将您自己的“引擎修补程序”组合在一起。
daemonfire300 2011年

我承认,Unity GUI 2.0系统除了“用文本渲染矩形”系统外别无其他,但它非常容易扩展。看一下@AffinityUI或其他重量轻,开源且使UI系统有价值的Unity UI项目。
daemonfire300 2011年

28

我将从评论您的列表开始:

  • 脚本编写不仅对非程序员有好处。成为一名(优秀的)程序员不仅仅是了解一种语言,而且还知道如何解构问题并以特定的方式思考。脚本语言可以允许程序员利用那些高阶批判性思维技能,以在比所需的时间更少的时间内产生更强大,更有趣的结果,而不必担心某些语言的底层细节(C ++)想起)强制进入图片。

  • 如果您的项目需要,多人支持(或缺乏多人支持)只是一个问题。

  • 我看不出“专有”是一个骗局。如果这是一个学校项目,则您可能不想花时间在使用的框架或其他任何东西上花费时间。此外,DirectX也是专有的。

  • 使用更高级别的框架或工具(如Unity)绝对没有错。“从头开始制作游戏”是没有成就的-您究竟认为“从头开始”是什么?您仍将使用其他人的图形API。别人的运行时(甚至C都需要一个运行时库)。“制作游戏”是赢得尊重的东西,而不是“不使用任何有用工具进行游戏”。

  • C ++是“很酷”的东西有点主观。该语言在行业中经常被专业人员使用,但可能不是出于您想的原因。作为一种语言,它开始显示其年代,并且与更现代的选择相比可能非常繁琐。无论如何,语言只是工具,一个好的程序员应该能够相对容易地选择新的语言。

在您的学校项目中使用Unity的最大好处是,它是一个高级框架,已经为您准备了很多基础设施工作-这将使您可以专注于游戏而不是建立基础。据推测,您制作该游戏的窗口相对有限,因此您可以利用现有工具的时间越多,您就必须花费更多的时间来制作特定于游戏的逻辑或资产,并使游戏的外观和感觉更好更完整-Unity有一个学习曲线,但最终您可以更快地得到更多的配置。

缺点是,你可能下沉一次进入学习特定的工具,它涉及到知识可能无法转让,特别是如果你决定,统一的工作流程和环境,只是不适合你,你永远不要想再次使用它。而且,Unity没有最明显的2D工作流程-它非常专注于3D游戏,而美术资产中的所有开销往往都涉及到。但是我认为,对于您所描述的学校项目,Unity是一个不错的选择。


13
我将引用“制作游戏”来赢得尊重,而不是“不使用任何有用的工具来制作游戏”。
nkint 2011年

2
“使用更高级别的框架或工具(例如Unity)绝对没有错。“从头开始制作游戏”是没有成就的-您究竟认为“从头开始”是什么呢?介意谁创造新技术,人们会为低电平尽可能例如神秘海域2甚至在房子修改图形API使用。
concept3d

1
任何想要站在计算机图形学的绝对前沿的开发人员都需要专注于最低水平,并在游戏中打造自己的引擎。但这似乎占所有游戏开发商的1%。如果一家公司正在开发《神秘海域1》等高级游戏,那么在《神秘海域3》问世之时,他们可能会使用某些现有框架(不一定是Unity)。问题是:您是否正在创建《神秘海域4》?
Katana314 2013年

9

Unity的一个主要问题是源代码控制。如果您不在团队中工作,这并没有那么重要(可以争论),但是事实并非如此。

您可以使用Unity Asset Server,但需要1)Unity Pro($ 1500),和2)每席位Asset Server许可证($ 500)。我假设您可以获得某种教育折扣,但这不是免费的。

或者,您可以将SVN之类的东西与Unity一起使用。要正确支持它,您仍然需要Unity Pro。

您真的不能只将Unity的非专业版签入SVN并期望它可以正常工作。他们将GUID绑定到资产等的机制并不完全是SCM安全的。


多人游戏功能相当不错,尽管老实说我还没有附带游戏。理论上,您只需将网络视图附加到事物上,然后告诉它要序列化什么以正确设置复制。从那里开始,需要一些UI工作来连接到其他对等方并进行设置。不过,大多数情况下都是点对点的。您可能可以在无头模式下统一运行客户端/服务器编程,但我对此并不感到困惑。但是,仅使人A在人B的屏幕上四处奔跑是非常容易且快速的。

就我而言,C#也是积极的。LINQ具有超强的表现力。它具有适当的异常处理和垃圾收集。它具有比C ++更现代的范例,例如委托,lambda,接口和更好的通用支持。(编辑:这显然是有争议的。我的观点是C#并不是一门糟糕的语言。我不想就该语言与C ++的优缺点进行长时间的辩论。)

但是,使用Unity的最大好处可能是艺术流程。您可以在文件夹中获取一个PSD或Max文件(假设您已安装3ds max),并将其导入。


3
@DeadMG,是的,实际上很好。是的,我了解Boost,模板元编程等。但是我发现C#是一种更现代的语言。
四分

3
@DeadMG我认为关键是C#对于C ++仍然有许多不足之处的许多用例来说,都是极其流畅的。并不是说C ++不能做那些事情。
Nate

3
我唯一不同意的是“比C ++更好的通用支持”。
Kylotan

1
@Kylotan“ for(vector <vector <int >> :: iterator迭代器= scores.begin();迭代器!= scores.end();迭代器++){” VS“ foreach(分数中的可变得分集)”。 .yup,我在使用C#。
Katana314 2013年

3
@ Katana314当然在C ++ 11中:for ( auto x : xs )
埃里克

6

更新:Unity现在提供了所有这些功能,甚至是免费版本,因此请忽略下面的答案。


值得注意的是-如果您使用的是Unity3D的免费版本,则将无法使用多种效果,包括后期处理着色器(如Bloom),更重要的是动态阴影。这些显然不会对项目的工作流程产生太大影响,但是它们确实限制了引擎免费提供的功能。


1
这不再准确,应该更新或删除。
MichaelHouse

@ Byte56谢谢。将来,您应该可以自己更新旧帖子,而无需发表评论。
Michael Younkin

我正在响应删除此答案的标记,但我不建议您对其进行更新以表示它不再准确。我建议您将其更新为准确或删除。目前,此答案无法回答Unity 3D的优缺点。我相信您可以找到一种保存它的方法。(您可以对其进行更新,以包括Unity现在提供的所有功能以及它们免费提供的功能)。
MichaelHouse

3

Nevermind的答案涵盖了所有内容,但是只是涉足源代码管理方面,一旦您学会了寻找一些陷阱,它实际上并不那么糟糕:

  • 首先,是的,Asset Server非常昂贵,除了基本用途外,其他所有用途都非常恐怖。它的主要好处是被集成到Unity中,尽管这对于易用性很有价值,并且在简单项目中值得,但是对于任何较大的项目(通常是AS预算项目),它都不够灵活。
  • 继续进行外部版本控制时,重要的是要意识到必须将Meta Files像其他资产一样对待,并始终在版本控制中添加/更新。如果不这样做,则可能会在Nevermind的设置消失的情况下发生。
  • 最后,与Unity中的任何版本控制系统(包括Asset Server)一起使用,在使用二进制资产时,团队之间的交流变得至关重要,以避免踩踏彼此的工作。

如果您想在这些方面获得更多详细信息,我根据我在一些相当大的Unity项目上的经验,在不久前发布了关于将git与Unity结合使用的信息:http : //goo.gl/ivJVR


好吧,哇,对不起,坏死了。我只是注意到这是在2011年提出的(并回答了)!我添加它是因为本周它在stackexchange gamedev新闻中突然出现。
FlintZA

SE上没有“坏死”之类的东西。例如,我的评论。:P
Cypher

2

其实。支持多人游戏。只需选择要运行游戏的服务器即可。

现在市场上最热门的是“ SmartFox Server”,它们提供了一些不同的软件包,所有软件包都是免费的(在一定程度上)。它仅在您计划拥有一定数量的玩家时才是免费的,因为每个程序包都允许一定数量的玩家“免费”使用。

如果您选择升级,那么对于独立开发商而言,价格是相当高的。所以...从长远来看,如果您的服务器上有很多玩家,则您需要为游戏付费,而不是将其作为免费的完整游戏上载到Download.com等网站。对于某些人来说,这可能不是问题,但我们大多数人买不起服务器的2,500美元。

例如-SmartFox pro免费提供20位玩家。如果要升级,将花费您500欧元,在美国大约要贵600到700欧元,并且可以连接100个连接。

下一个升级是针对500个玩家的最大数量,它是1000欧元,但是...您不必支付1000,您只需支付差额。

因此,您只需支付500欧元,而不是全部1000欧元。最后一次升级支持无限量的连接,费用为2,000欧元。差不多是$ 3,000美元。

因此,如果您从500个连接升级,则需支付1000欧元,如果从100个连接升级,则需支付15000欧元,当然,免费升级需要2000欧元。

另外,使用Unity可以很容易地设置该服务器,并且有许多教程视频介绍了如何在Youtube上精确地进行操作。


自2005年以来,我就与SmartFox Server进行了广泛的合作,并且确实取得了丰硕的成果。非常稳定和成熟。
PippoApps.com '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.