【微辩论】游戏开发——到底是先学游戏引擎还是先学游戏编程?

31回答

【微辩论】游戏开发——到底是先学游戏引擎还是先学游戏编程?

提问者 tectal 2015-08-25 1.11w浏览

    游戏引擎的目的在于迅速高效的完成游戏的搭建。而编程语言的目的在于律令计算机等电子设备完成我的目的。

    在小说中,牛逼剑客都有自己的剑。独孤求败的剑就是他自己,是我们的编程语言。他手里握的剑是自己外在表现形式,是游戏引擎,是为了完成击败对方突破自己而存在的。令狐冲也是。叶孤城,西门吹雪更是。我们的内功是编程,外功是引擎。气宗是编程,剑宗是引擎。等等,我们只不过是想制作游戏啊。有引擎这种神器不就够了吗?为何还有专门搞语言啊。而且,游戏在于体验,在于内容,为何还要搞语言啊。

    欢迎参加由腾讯游戏开发者平台·程序新手发起的“微辩论”,和程序员们一起来聊聊这些问题。你有什么疑惑,或者对这些问题有自己总结出来的经验,都可以来参与!


游戏开发

到底是先学游戏引擎还是先学游戏编程


               


活动要求:

1、所谈内容必须与话题相关,观点内容字数不宜过短。

2、同一ID不允许三连,禁止发布严禁贴、灌水贴、垃圾贴和广告贴活动连接等本版违规内容。

3、被采纳100Q币充值卡,随机抽选若干参与讨论30Q币充值卡

4、本活动截至2015年8月31日 23:59:59,获奖名单2015年9月1日在本帖公布。


感谢各位的踊跃参与,下面是本次微辩论获奖的小伙伴。请获奖的小伙伴私聊QQ:494630985。打造一个生态体系,让想象力自由绽放,GAD欢迎有梦想游戏人与我们一同碰撞思想,打造梦想!


QQ昵称奖励(Q币)
2839*5675S_Keyboard100
244*25844新刚30
30897*977Games30
2*55253634EDG30
104185*849普洱30
3595*3129何小成30
54*26322石啸天30
1577360*84OAOAAce30
1330*97089OMG30
6241525*6幸福可以那样美30
6*399664十·寸30

快来消灭0回答吧

{{ dataList.answer_count | view-format }}回答
  • S_Keyboard 2015-08-26 10:02
    关于这个话题,我想还是得先明确关键点在哪里才行。

    首先咱们的话题是 

    到底是先学游戏引擎还是先学游戏编程?

    关于这个我想大多数的程序猿都会说当然是先学游戏编程啦,路都不会走还想跑不成?
    当然!
    但是,游戏编程学到什么地步,或者学多久再开始学习引擎合适呢。 

    (首先我们的讨论基础是都具备有编程基础,编程都不会那讨论游戏引擎和游戏编程是没有意义的)
    我们把游戏编程比喻成基本招式,而游戏引擎则是前辈高人在这些基本招式的基础上创建的一本完整的套路心法秘籍,每个门派的风格都不一样。武当,峨眉,少林等等(cocos,unity,libgdx等)。

    这样来看的话,我们发现其实一开始直接进行引擎学习是完全没问题的,小说里很多高手就是被丢在少林寺门口的弃婴,所以我觉得三岁入少林也是OK没有问题的,若干时间后成为少林高僧是肯定没问题的。但是如果半途被赶出了少林要入武当派的话,麻烦就会来了,因为你满骨子的和尚思想,会无法适应,或者适应时间很痛苦,很漫长,这是纯引擎流的分析!
    然后再看纯游戏编程流,我们来看三个人,少林达摩,武当张三丰,峨眉那个啥,他们三就是这个流系的。
    也就是说当游戏引擎还没出来的时候,基本上所有人都是在研究游戏编程的,然而这样的结果我们也看到了,有人开山立派,有人销声匿迹。所以我觉得这条路也是OK没有问题的,只要你够牛,XX引擎指不定还能超过各位前辈高人。

    前面两段分别扯了两种纯粹流派,然并卵,毕竟由于生活所迫,如此纯粹之人还是很少见的,我们继续。
    混搭流:(混搭方式太多,各有千秋,不一一讲,这里只讲一下个人推荐的方式)
    第一步,从游戏编程入手,先学几招基本招式。(到达程度:打两个一般人,干不过练家子)
    第二,入手游戏引擎,找家宗派入门。 (到达程度:有点屌,算得上是高手)
    第三步,考察另一个游戏引擎,对比分析宗派心法。(到达程度:基本能根据实际场景选择合适的引擎)
    第四步,...
    0评论
  • 新刚 2015-08-25 21:24
    游戏开发本身就隶属于IT行业,在这样的日新月异的一个行业中,如果只是在井中望月的话,那么即使你狠精通一门游戏引擎,那么第二门呢?只有在你自己理解了游戏引擎的一个设计架构,设计原理,你才能在后续开发引擎中立于不败之地,这是一个循序渐进的过程,如果只是对游戏引擎钟意,那么充其量你仍然只是某个游戏引擎的使用高手,在后续的发展中,你将会被淘汰,大家很多人在做塞班时代的时候,谁会想到安卓时代的到来呢?只有不断的提高,才能将自己得到升华。游戏开发就是一生的学问,无论从策划还是程序出发,被局限住了你就需要比别人落后更多,又需要花更多的时间来去学习。倒不如打好基础,再面对各种的引擎都可以游刃自如,而且你还可以针对各种引擎做优化。
    1评论
  • Games 2015-08-25 23:49
    支持先学习游戏编程,学习游戏编程是基础。游戏引擎说白了就是对特定功能的封装,固然游戏引擎让一些常用的功能实现更加简便快捷,但要想理解其实现的机理和在,还需要游戏编程的基础。
    举个例子:cocos2d-x引擎是使用c++语言封装的。
    1. 如果从游戏引擎开始学,很快可以学会精灵移动和各种动画,但设计到高级编程如内存优化等游戏开发深层次的东西,是只学习引擎不能够掌握的。只有了解深层c++实现机理才行。
    2. 如果从c++开始学,虽然学习c++的过程是漫长的,但从c++转为cocos2d-x游戏引擎的时间确实非常快的,也能够明白其底层实现,对这个引擎的了解掌握程度也更好。
    从时间和遇到的问题角度分析
    1. 先学游戏编程
    遇到的问题
    在最困难阶段:问题从未接触过,通过用c/c++的底层理论解决引擎中的高级问题,以前学过理论X,用理论X来解决现实问题Y
    2 .从先学习引擎开始
    在最困难阶段:问题从未接触 过,完全无从下手,只好从c++底层实现重新学起。现在遇到实际问题Y,不知道该学习理论来解决,即使知道也到先学会理论X后才行

    结论:所以先学习引擎似乎是一种本末倒置,一般短期培训公司会这样,只教会你鱼,而不教渔

    高等院校的教育一般都是先渔,然后自己探索从而得到自己的鱼。

    先从游戏编程,从底层语言开始学习,一步一个脚印才会都得更加扎实。

    以后无论遇到什么样的引擎,知道底层语言扎实一起都OK!


    0评论
  • OAOAAce 2015-08-27 22:38
    看完辩题,我果断站在B方的立场,来给大家讲述我自己的刚开始学游戏时体会。

    引擎,对于我这种初学者来说,实在是太高深了,我刚开始接触cocos2d的时候,就是仗着会一点点C++,然后觉得应该站在更高的层面上来学习cocos2d。接着就是狂啃引擎源代码,导演、场景、层、精灵、Node,我在引擎源码找了一个遍,算是统统看过一遍了。但理解得特别浅,没有任何的实践,仅仅是稍稍懂了一些运行流程。但要我说个引擎的所以然来,我还是不理解,说不上来。

    过了快一个半个月了。我觉得可以开始琢磨写个游戏来跑跑了,我一打开Cocos Code IDE,整个人的呆了,我连基础的cocos2d代码都不知道从哪开始写起,敢情看了那一点点的引擎源码对我的游戏开发能力作用是这么小,我草草的把场景的生命周期几个函数列了出来,就关掉引擎源码的界面。

    开始了我游戏编程的实战经历。

    我跟着Cocos2d中的提供的教程一步步的去跟、去写、遇到不懂的问题查api,整个过程中,我没有一次是用到引擎源码的知识的。目前为止我已写了无数多个小的demo,跑在我的手机中,被我欢快的玩耍中。

    终于开始要根据自己的思路去搭建一个自己想做的游戏了,编码的过程中,遇到了一些比较难搞的问题,这时我去翻看了引擎的源码,我发现,在有了我前面写了这么多杂七杂八的demo中学到的函数的使用,以及各个函数的调用时机等等的一些小知识,我在看引擎源码的时候,理解得比之前快多了,虽然我还是没有改源码的能力,但我至少知道为何必须要这样去使用这些已经封装好的api。

    在这样的体会中,我坚定的认为对多数人来说,先学游戏编程才是重中之重,只有你在理解的游戏编程中各个函数的意义,知道游戏的开发流程之后,再去学习引擎,提高你自己对引擎的理解,这样你以后在遇到api层面上理解和解决不了的问题时,有了引擎的知识一定会助你一臂之力的。

    总结:学习引擎是提高的游戏编程的关键,但要先学习游戏编程,一步步打牢基础,有了一定的实践知识,再去学习深层次的知识和理论。

    我依然新手,还在学习各种游戏编程的小知识,但我觉得游戏编程带来快乐会比引擎多,所以我仍旧新手,仍旧学习ing...

    0评论
  • EDG 2015-08-31 10:32
    为了打好做大神的基础,请在玩弄引擎的同时也要学习引擎是怎么回事,引擎是如何帮助我们制作游戏的。
    C++基础很重要
    如果对引擎感兴趣,可以先熟悉熟悉dx的渲染流程
    如果想了解shader,推荐安装个render monkey,然后看看里面的例子如何实现
    会学到很多东西
    0评论
  • 普洱 2015-08-25 22:20
     支持首先学习游戏编程,在游戏开发过程中,我们必然会用到各种各样的游戏引擎,无论是unity,cocos2D-X还是unreal,As3或者其它引擎,但无论是用哪一种引擎,其实它们的基础理论是相同或者说类似的,它们只是游戏编程的一个成熟的框架而已,而这些框架也是程序员通过编程实现整合而成的,所以只要懂得游戏编程的原理,懂得理论知识如:复杂的算法,数据结构,计算机原理等等,小团队创造一个引擎也不是什么难事儿,总的来说,引擎只是一个快速实现游戏开发的平台,但它并不能解决所有游戏开发中的问题,打个比方,游戏通信,游戏UI适配,接SDK,这些问题还是要通过编程来实现的,所以对于新手来说,引擎是次要的,编程才是正道。
    0评论
  • 何小成 2015-08-25 22:50
    我来发表下个人观点啊,首先,我是一名在职游戏开发人员,我明白写游戏的过程中内功底子有多么重要,所以我的观点偏向于游戏编程。说到底,引擎也是由编程所构成的,引擎不过是踩在巨人的肩膀上进行游戏开发而已。最早游戏引擎的产生不过是为了不要做重复造轮子这种事情,但是如果抛弃造轮子,光有个空架子,开发工作也是进行不下去的,当引擎的作用不能满足满足当前需求的时候,没有编程的内功,又如何重构新的框架呢。总而言之, 引擎只是前人搭建好的的一个框架,是前人指引的一条道路,让你可以更方便的往前走,可是真正走多远,还是要看你编程的内力有多深厚,又或者,你才是大牛,可以走出另一条路,写出另一个游戏引擎!
    1评论
  • 石啸天 2015-08-25 22:52
    1.编程思想,抽象化思维才是正道。
    2.应该先学引擎,接受更多关于游戏编程的小技巧,不必去重复制造轮子。
    3.很多时候,走之前要先run起来(来自钢铁侠1的台词,一语多意吧,写程序大多也是这样,先run)。

    很多时候,我们写出来一个小工具,但是没用多久,就会发现,有人做出来比你更好的。原因很简单,这些路都是别人走过一遍的,你只要看过一遍,就不需要自己再走。正所谓站在巨人的肩膀上得到得更多。据我所知,所有的引擎,抽象出来的接口,大同小异,只是底层实现细节不一样。例如物理引擎,例如渲染引擎,这些东西当然你也可以自己实现,只是,路途要坎坷得太多。况且,大多数游戏得开发,并不是游戏程序设计的有多棒,而是游戏的内容设计的有多精彩。

    换个角度去看,就好像用剑的剑客一样,只有用多了之后,才会知道自己需要什么样的剑,才会去自己打造一把剑。而你从一开始就研究如何造剑,那你将不是一个剑客,而是一个锻造师。。。。

    从编写游戏的角度出发,其实并不能肯定的说,有好的引擎就能设计出好的游戏。就好比你练剑成了剑圣,树枝也可以打出剑气。但是练到这样的化境,已经是入行多久多久多久以后的事情了。

    我的观点,用剑->御剑->人剑合一

    0评论
  • OMG 2015-08-31 10:35
    先学语言,至少精通一门编程语言,算法、数据结构也先学,再学不同的引擎

    如果做手机游戏多为2D游戏,建议先了解一下cocos2d游戏引擎(Android或iOS,如果是WinPhone手机,顺便建议你了解一下XNA)。
    0评论
  • 十·寸 2015-08-26 16:59
    游戏开发,先学游戏引擎

    原因1:先学引擎,掌握游戏开发思路,我们是想做好一款游戏,而不是做一个程序高手。

    游戏开发新手,重在实战中获得知识增长技术能力。胸有万壑,乃成方圆。游戏引擎的好处在于,已经将编程语言具象化为制作游戏的工具。开发者不需要考虑底层实现,只需要实现业务逻辑,不需要考虑设计模式,只需要考虑如何实现想要的功能,不用考虑内存地址,析构函数,只需要考虑何时需要什么资源,不需要考虑贴图顶点坐标,反锯齿如何实现,只需要考虑模型怎么换贴图,什么时候播放什么动作。

    归纳:游戏引擎使游戏制作不用考虑太多底层面的事情,节省开发时间,降低开发门槛,学习从简入深循序渐进

    2.学习编程也应该知道学哪些方向,先学引擎可以帮助学习编程定位方向

    众所周知,现在各行各业充斥着各种程序员编写的程序,网页,浏览器,操作系统乃至于我们生活中的GPS,红绿灯,电梯,楼宇广告。程序的应用面这么广,如何才能从浩瀚的程序中学会自己想要的那一部分,先学会引擎,对于这一认知有着巨大的帮助。在Unity里,你会懂得如何把一个脚本拖拽到摄像机上,然后在脚本中用一个对象来控制场景里的盒子,然后知道怎么用脚本代码来使用键盘控制盒子移动。经过这一系列的熟悉,就算是一个从没有学过编程的新手,也会理解脚本中的obj代表的就是盒子,也知道obj.后面的点是用来调用盒子上的脚本方法。这比一般从变成的初级教学入门学面向对象来的更加直观。游戏引擎,是一条直路,遇到问题,分析问题,解决问题,是学习力的良性三大要素。

    归纳:实战检验实力,学会技能,在实战中进行验证,从而达成进步

    3.引擎本身就是一个老师,在学会怎么使用引擎的同时,引擎也在教会你学什么样的编程

    再强大的引擎,也不能归纳所有的功能,一方面是开发引擎有其局限性,一方面是引擎还是可能有考虑不全的地方。那么如何让引擎工作得更如开发者的意,本身引擎就有各种脚本语言,c++,ActionScript,c#,javascript,lua,一个新手游戏开发者面临这么多编程的语言,该学什么,该学到什么程度才能编出自己想要的游戏,用户其实是很难选择的。当你看到市面上有一款游戏,你知道那个游戏是你想做的类型,他是用XX引擎做的,我的建议,你直接就去学那个引擎就好了,别人能用那个引擎做出来你想要的游戏,你也可以。

    归纳:先选好一个引擎,然后再决定学什么编程语言,至于学到什么程度可以做出你想做的游戏,不妨直接开始做,遇到不知道该怎么才能实现的东西,也有目的的去询问别人,这样成长得才快。

    0评论
  • 何必太丶認真 2015-08-27 16:59
    有了编程基础,学什么引擎都快。引擎会随着市场不断的迭代,编程基础确实永远的。
    0评论
  • 木头 2015-08-27 17:01
    这也分人的吧,编程语言熟练的自然不必太纠结于编程方面的事了,多熟悉游戏引擎才是正道;
    如果是编程新手,肯定要掌握基础编程,再考虑引擎的掌握了,你连个物体移动的脚本都写不了,还玩什么引擎,熟悉引擎的过程中进一步加强编程的熟练度
    0评论
  • 幸福可以那样美 2015-08-31 10:39
    学unity不需要什么3d基础,直接上手即可,需要的时候找资料学习即可,系统学习不是必须的。
    引擎开发先看高数和线代,这些没必要去看数学教科书,推荐3d数学基础图形与游戏开发。搞引擎特别是动画图形,说到底是数学与物理学的战斗,数学不可能一蹴而就,只能先学最基础的,遇到什么补什么,思维方式才是最重要的。
    然后可看看3d游戏编程大师,但非必须。
    然后找本dx11的书跟着做就行了,推荐龙书dx11版,不推荐看opengl,谁看谁蛋疼。现目前实时渲染那一套思想基本相通的,一般自娱自乐做引擎从pc windows做起才不会蛋疼,否则浪费的时间都是大把大把的。引擎不仅仅限制于渲染,还有其他一大堆东西,参考游戏引擎架构。楼主只有做遍了这些东西才能有个底,不明白的还可以参考cocos等东西,资源一大把。
    另外,渲染可看realtime rendering,pbrt等书
    综合可读,游戏引擎架构 3d游戏(英国人写那本) 等书

    0评论
  • 2015-08-26 11:57
    应该先学编程语言,在学游戏引擎,了解引擎,再进行游戏编程。
    0评论
  • 鲁鲁猫 2015-08-26 17:06
    这取决于你对自己的定位是游戏开发者还是程序员
    1评论
  • 2015-08-26 17:24
    这年头业界都用引擎,所以要两手抓.一起抓.
    1评论
  • Sep 2015-08-26 17:59
    我结合实际说一下吧,现在团队里的程序都熟知代码,但是不可能每一个功能他们都能很快写出来,而我编程已经忘得差不多了,但是我引擎熟啊,镜头效果用哪种脚本、选哪个shader、遮光、寻路、触发、碰撞、wheel collide、粒子怎么表现效果更棒等等等等,全部靠程序去写的话估计大家都要吐血了

    个人认为,负责程序的部分,你就去专精编程
    游戏策划给我滚去钻研引擎!
    0评论
  • Smile 2015-08-26 17:59
    立场在游戏编程。游戏引擎不过是满足了游戏制作的基本条件,但真正想做好自己的一款游戏,自己可能会写更多自己的内容,也可能修改引擎的底层逻辑,所以我认为先学好编程。
    0评论
  • 清淡 2015-08-27 16:40
    前提:只针对游戏编程学习和引擎学习,以快捷、高效为目标,在不考虑其他因素的情况下。有一定游戏编程基础的,先学习引擎比较好,像那个练武学招式,“花样”好学;有一定游戏引擎经验的,再去深修“内功(游戏编程)”。这个问题感觉像是一个“先有鸡还是先有蛋的问题”,游戏编程是引擎的基础,引擎又能指导游戏编程的学习。
    0评论
  • 木易 2015-08-27 16:44
    学是一回事,但是你得首先养活自己. 大部分小公司都是取决你能干多少事情,这个任务这个功能你多久能完成。你代码里面用了什么技术老板永远不关心。所以,你快速入门一个游戏引擎的使用这是你的饭碗,一个很基础的饭碗。当你有了这个基础的饭碗,那么你就开始学习,进一步学习。把自己的饭碗变大变结识。
    0评论
  • {{ answer.user.NickName }} {{ answer.profession }} {{ answer.created_at | time-format }}
    专家回答
    {{{ answer.answer }}}
    {{ answer.answer_count | view-format }}评论
加载中... 查看更多回答