与Unity和其他工具相比,我更喜欢C / C ++:对于游戏开发人员来说,这真是太沮丧了吗?[关闭]


35

我们在学校有一个使用Unity的大型游戏项目。我们当中有12个人正在努力。我的老师似乎深信这是教学生的重要工具,因为它使学生从高层次到低层次看起来。

我能理解他的观点,我想知道:团结在游戏开发公司中是否如此重要?是否有很多公司因为无力使用其他东西而使用它?他的讲话就像Unity在游戏制作领域扮演重要角色一样,但我只看到它适合那些希望尽快制作游戏的小型独立游戏公司。

您认为Unity在行业中如此重要吗?它会危害C ++技能的价值吗?

这并不是说我不喜欢Unity,只是我什么都不学,我更喜欢使用Ogre或SFML来取得一些进步。

另外,我们也有C ++练习,但是这些只是理论上的练习,没什么。


9
C ++和OOP的重点是对象重用。Unity就是一个很好的例子,它具有跨平台的可移植性。他们提供了在XBox或iPhone或Wii上启动游戏所需的所有工具。您是否认真地告诉我,您想从头开始用C ++重写所有这些内容?
Stephen Furlani

2
绝对不是,那不是我想说的。我只是说我不喜欢它附带的垃圾收集语言,还有一个事实,因为它是专有的,所以您无法更改代码:您不能像对另一个现有引擎那样进行尽可能多的调整。您的观点是正确的,但是如果我跟随您,公司也可以重用以前的引擎,而不仅仅是切换到Unity。使用Unity,您可以坚持自己无法真正改变的东西,当我想到这样的工具时,这始终是我最大的挫败感:专有引擎不存在这个问题。
jokoon 2011年

2
好吧,您可以在获得源许可证的情况下更改Unity(这很昂贵,就像大多数其他专业源许可证一样)。它还经常更新,因此就功能集而言并不是真正静态的。
四分

这基本上是一个“使用什么技术”的问题。同样,它更以讨论/观点为导向。遗憾的是,我无法再次投票决定关闭
bummzack,2012年

Answers:


34

在这种情况下,Unity是一个非常有效的解决方案。想象一下,有12个人,其中大多数仍在学习C ++,并使用它编写大型复杂的游戏应用程序。仅花费调试时间,您就可能能够在Unity中编写另一个游戏。

我并不是说知道如何使用C ++并不重要-而是,尤其是如果您打算加入“主流”游戏行业。但是,在这种情况下,您的教练也许是正确的-将本项目作为学习经验来思考如何设计游戏并从中获得乐趣。在此过程中,尝试通过练习来磨练您的C ++技能,甚至可以同时使用SFML或其他一些基本框架来编写小型游戏。

完成后,您将学到很多东西,可能会成为一名更好的程序员,并且可以更加自信地用C ++处理您的下一个项目。


2
有趣的是,有些学校只讲C ++,希望学生尽管仍在学习C ++,但他们还是从头开始构建整个游戏引擎和游戏。当然,实际练习技能是您学习技能的方式(不是课堂讲课和小型家庭作业项目,而是大学期或长达一年的项目),这就是为什么学校会培养顶级程序员的原因。能够非常快速地使用Unity等工具或任何其他引擎的程序员。最好强迫学生学习困难的东西,因为以后容易的事情就不再是问题了。
肖恩·米德迪奇

并非所有游戏开发都在编程,并且使用Unity不一定是“避免困难的事情”。它只强调与从头实现不同的硬性内容。进行设计而不是编程。如果游戏是从头开始实现的,那么我期望的是更原始的“程序员艺术”,而且没有角色或情节。
wrosecrans

43

Unity在该行业中越来越受欢迎,大多数是在较小的公司中。但是,这是一个极好的教学环境。它是一种重要的教学工具,但在主流公司中并不普遍。您不喜欢它也可以。

不过,在这里让我注意一下,因为我经常看到编程学生之间的困惑。从长远来看,“ C ++技能”不是很有用。您应该寻找的是“编程技巧”和“设计技巧”。如果您了解编程语言的概念以及软件系统的组合方式,那么语言实际上就无关紧要。我不认为自己是一名出色的开发人员,但是我可以在一两天内选择一种新语言并生成有用的代码,因为我了解基本知识。

学习Unity将使您更好地使用C ++。


Gameforge和BigPoint是世界领先的公司,他们使用Unity :)
daemonfire300

1
+1是一个很好的答案。学习游戏引擎对于学校来说是非常重要的事情,因为您有99%的时间不会从头开始制作一个。能够深入研究现有引擎并识别其中的部分,辨别数据流,这些都是非常关键的事情。如上所述,尽管99%的时间都是C / C ++,但该语言并不重要,但是能够理解引擎,或更普遍地说,仅仅是别人的代码,对于任何编程领域来说都是无价的技能...尤其是时间紧迫的高压力单词,即视频游戏:)
James

1
我有点不同意这个答案。对我而言,脚本编写者和程序员之间存在差异。Unity的开发人员是程序员,Unity的用户是脚本编写者。他们制作游戏的结果是相同的,但从长远来看,使用Unity可能会成为问题。游戏行业非常丰富,现在允许使用Unity之类的工具,但对我而言,这是因为计算机速度更快。这样就可以抛出很多代码,并且可以正常工作:Unity显然是为了提高开发速度而设计的,这是市场由于美元而喜欢的东西,但是我认为这并不是真正的优势。
jokoon 2011年

14
jokoon:脚本和编程之间有什么区别?Unity的高级用户可以编写着色器,管理渲染顺序并编写AI代码。编译了Unity“脚本”,并且可以根据需要使用诚实到女神的低级编码对其进行扩展。良好的Unity编码遵循与良好的非Unity编码相同的原理。两种范例之间没有神奇的区别。
格雷戈里·艾弗里·威尔

9

是否有很多公司因为无力使用其他东西而使用它?

是的,但是“ afford”不仅仅是将美元价值直线上升。

是的,Unity Pro以您收取的费用为您提供的功能集是荒谬的,尤其是考虑到它是座位许可证而不是按权利许可的事实。

但最重要的是,它是一个非常易于使用的工具。您无需花费太多时间培训艺术家和设计师如何使用艺术作品。很容易说“只要拖曳您的纹理和模型,它们就很好了。

最重要的是,它实际上是让您在具有任何规律性的浏览器中执行3D的极少数工具之一。它们支持从固定功能到DX9 +以及Mac和Windows的几乎所有着色器平台。如果您想瞄准不断增长的“基于浏览器的游戏”市场,那么仅这项技术就具有无价之宝

从编程的角度来看,从Unity获得的东西是对组件设计的牢固掌握(与滚动自己的C ++引擎相比,后者通常在继承方面太繁琐),以及一个非常快速和可视化的环境来尝试游戏代码。希望您会通过使用Unity学习好的设计实践,从而可以接管将来的C ++引擎。

当然,优先选择一种语言而不是另一种语言。我个人比C ++更喜欢C#。但是,您所使用的语言实际上是由项目需求驱动的,而不是其他任何事情。由于您不想因为某种原因而不喜欢工具或语言,因此您不想将自己限制在市场之外,因此开发人员真的不能成为狂热者。

此外,一旦您真正学习了第二语言,您就会发现它基本上只是在学习新的语法和范例,通常在您的工具带中添加新工具并不难。是的,您应该学习和理解C ++,但是从更高层次上讲,您首先需要了解好的设计。


说明:与普通的旧Unity相比,您是说Unity Pro的许可证值得吗?您的评论对我有点不清楚。
凯尔C

7
我没有使用免费的许可证,只是说$ 1500 /座的许可证比其他商用发动机许可证便宜得多。
四分

目前使用免费版本没有问题,只有一些限制。
XandruCea 2015年

9

从我所看到的,核心问题不是C ++或Unity3D,而是您需要一个高级解决方案还是一个低级解决方案

一种低级解决方案是使您难以处理输入,管理内存或加载模型的过程。一个高级解决方案是您得到一个简洁的软件包,例如Unity3D。

对我而言,是否使用Unity3D(或任何其他游戏引擎)或C ++取决于游戏和项目的目标。

  • 如果开发时间必须很快和/或您的游戏性能不高或图形/计算性能不高,请使用Unity3D。如果您希望专注于游戏玩法,并且Unity3D提供的默认工具没问题,那么您不妨考虑使用Unity3D。

  • 使用C ++和其他库,如果您有较长的开发时间,则该游戏需要更多的计算/图形功能,或者使用Unity3D无法整合的某些技术。

关于Unity3D的好处是,它仍然使用脚本语言来反映现实世界的开发(C#或JavaScript)。您学习的OOP和软件工程概念(单例,立面,状态机,装饰器,构图)可以在Unity3D中应用。它有助于处理诸如资源管理,场景图,模型加载,渲染,场景保存等的切块程序。更好的是,如果有Unity3D不提供的功能,您可以做DLL编码。

C ++会留在哪里?C ++是一种语言,在C ++中您可以在Unity3D中完成许多编程概念,没有内存管理或模板(例如,使用Unity 3.2,语言规范已进行了改进,以涵盖闭包)。

因此,正如我已经说过的,它并不是真正的C ++与Unity3D。与Unity3D相比,它更多的是“ C ++加库/ SDK或滚动您自己的引擎”。这取决于您的目标。对于高端游戏或需要控制渲染管线或输入的游戏,您可能需要使用C ++以及允许您在后台混乱的引擎。如果没有,我将Unity3D作为3D游戏的默认选择。

但是,Unity3d的知识并不是真正的经验,而是一个开始学习游戏开发总体过程的好地方。例如,您可能需要一个学期的学习才能编写渲染器并在OpenGL中加载模型,以及基本的场景图和输入。您可以在不到一天的时间内在Unity3D中完成该任务。


或与Ogre3d合作!
jokoon 2011年

我上一次使用Ogre3D的时间是很久以前的事。我认为,要想开发一款游戏,需要花费比Unity3D更多的工作,并且可以很好地了解引擎盖下的东西是如何工作的。
Extrakun 2011年

+1。您本身不能喜欢C / C ++和Unity,因为这是苹果和橘子的事。但是,您更喜欢使用C / C ++提供的较低级别的开发或Unit允许的较高级别的开发的想法。
蒂姆·霍尔特

8

不,Unity3D绝不会危害C ++技能。实际上,对于游戏程序员来说,了解C ++更为重要。

Unity3D是一款非常出色的游戏开发工具。我本人真的很喜欢它,并且会推荐给几乎所有游戏,尤其是小团队。但是Unity3D本身是用C ++编写的。而且您必须了解C ++(以及其他一些底层的知识)才能真正理解它的工作原理。

即使您使用Unity3D,也只有C ++技能和对所涉及原理和算法的低级理解才能使您充分利用它。顺便说一下,这也适用于其他游戏引擎。

为了做一个真正好的工作,从您选择的平台中挤出所有最后的性能,并尽可能多地填充最先进的效果和算法,您只能使用C / C ++。可能有一些汇编程序。


这是我一直在等待+1的答案:]
Notabene 2011年

3

据我所知,这取决于您的目标平台,AAA游戏和主机游戏(XBOX,Wii等)通常使用C ++以获得最佳性能,但是,如果您编写的是基于浏览器的游戏,Unity也经常出现用过的。

但是,关于您的问题,我认为这仅仅是与Unity等工具相关的,它可以为您提供一个大型的标准化框架供您使用,在半年的项目中,它可以使半熟的原型与精美的游戏有所不同。


3

我去了宾夕法尼亚大学的计算机图形学和游戏技术硕士学位课程,在那里我们以最低级别完成了所有项目,包括C ++,OpenGL,CUDA等项目。我们的项目包括基于物理的动画,架构角色动画和IK,代表各种形式的Bezier曲线...,您知道的,实际上是基准线,它们利用了编程,线性代数和微积分的专业知识。

然后,我下载了Unity,发现我努力工作的所有内容都装在这个免费套件中,任何人都可以使用。

我很生气吗?坦率地说,但是我发现,当我使用Unity之类的工具时,对学校的了解使我变得更加危险。我目前在游戏行业工作,在不到一年的时间内就将游戏从概念推向市场,并且在“数学方面”方面我仍然是首选。我对你的建议是通过议案。当您进入该行业时,您将绝对无价。


从理论上讲,您可以从中获得徽章。:)
独眼巨人

这里没有坏处,因为问题不会像在论坛中那样陈旧和“消亡”。:)迟来的答案总是可以的。
doppelgreener 2012年

0

我可能会迟到答复,但这会帮助有些人产生这种困惑。

最初,我是一名c ++程序员,曾经讨厌使用第三方引擎(例如unity),因为我觉得低级编程没有太多的学习过程。

在尝试统一之后,我遇到了游戏开发人员必须满足的以下要求。在这里,我并不是专门列出统一性,而是列出了使用HIGH LEVEL Perspective的优势。

  1. 理解如何进行高级设计比打扰低级优化更为重要。
  2. 具有实体体系结构(基于组件的体系结构)的引擎将有助于了解该体系结构将如何发挥作用。
  3. 您将了解最新技术(至少是术语),并且与业界有关Graphics的最新信息。-这是我选择尝试统一的主要原因!
  4. 节省时间在不同的资源导入器工具上花费。(当然,我仍然喜欢用C ++编写自己的3d导入器,因为在空闲时间会更有趣)

以上是选择高级引擎的一些原因。但是同时,您不应该停止学习C ++,因为它是完美Game开发的最必需和最有用的语言。

首先了解高级可视化,并使用Unity进行一些快速原型设计,并利用该经验设计c ++优秀游戏。

很快我将回到c ++,因为我在更高层次上获得了统一的良好经验:)

祝好运!


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.