关于学习C++,要装备什么时候开65装备

有一定 C 语言基础,日后想从事游戏开发等工作,给自己一年时间,能在此期间精通 C++ 吗?
功利性太强的高票***!这是在把一个能成为业界top 1%的顶级游戏开发技术大师的黑马,往能傻乎乎地受你们压榨的IT民工的火坑里推,你造吗?这让我想起了乔帮主关于“卖糖水”的那句经典话语,而我们的版本是:你是愿意就这样学点皮毛混口饭吃随波逐流,还是成为真正的游戏开发业界顶尖技术大牛,推动业界的发展,去改变世界?关于上面这句话的两个抉择,我们来做个选择题。A.
如果你是想从事游戏行业当个二流的民工打打杂一辈子就这样过去,请去看兄有些对现实妥协之前排名第一的***。(不带人身攻击的,只是对事不对人而已呢)
这种太依赖IDE和游戏引擎所谓速成方式,到最后只能是二流的民工,打杂的,混饭吃的。知道其然,不知道其所以然。遇到真正的专业性问题就卡壳了,比如如何优化渲染质量之类的问题。或者开发的项目就是那种2D的小儿科,或者山寨跟风赶进度赶上市的快餐游戏,而不是画质精美,设计精良,堪称经典,为国产游戏长脸,推动全球游戏业界发展的革命性大作。B.
如果你是志向高远,想制作出改变世界的革命性游戏,或者推动游戏产业的发展,成为游戏开发业界top 1%的技术领军人物。请熟练C++,请修炼好内功。 兄
兄的***是极好的。且正如萌萌的V大
所言,就算你的志向是开发crysis这样的游戏,其实也只需要用到C++的一小部分就够了。C++各种范式是发明来解决所有问题的,游戏只是其中的冰山一角,你没必要精通,没必要学会C++的所有部分。我们这里所说的,是了解原理,学C++只是其中的一小部分,与其说去不断的学C++的更多高级特性,更好的学习方向是熟练利用C++配合DirectX或者OpenGL来制作Windows小游戏,对数据结构设计模式有一定的认识,且能够准确针对问题选择你的数据结构,研习计算机图形学blablabla的。(PS:不要轻易用“精通C++“这个狂妄的词眼,后文有一些关于这个梗的解释)正如我之前在自己博客里面所转载的文章《》中说的:“对所做的事情的理解越深,你就会做的越好。”既然题主都提到要走熟练C++,以后开发游戏这最正统的技术道路了,他内心渴望的应该是志向高远,做个强者,而不是去当IT民工打杂做技术含量不高的事情。即我是不能同意更多
兄的观点。”题主还是学生,别用压榨it民工的想法来教导!题主可以从cocos2dx和unity3d开始学游戏开发,但是,如果想一直做编程,请别忘了必须同时修炼c++, 因为它可以给你认识到真正的编程,让你懂得更多计算机编程思想,以后就算不写c++也可以迅速了解别的语言,别的工具的~而不会变成仅仅依靠IDE工具,随便抄抄别人代码,完成山寨程序的It民工。“也不能同意更多 兄的观点。 兄在评论区说:那些不懂原理只是挑一个工具熟练掌握使用或许在当前游戏市场火热的背景下也能混得不错,但是感觉很快会遇到职业瓶颈。这对自身而言就是一种风险。如果一项技能你学三个月就能耍通常意味着可以轻易找到一个人代替你。 兄说: 你学会这些可以让你比较容易找到一个工作,但是几年之后会碰到你的职业瓶颈,要么继续学底层,要么转行。否则公司会毫不犹豫地找人来替代你。其实有一句话我很赞同:“程序员如果不学好底层,将毫无作为。C++让你走向程序员这条路,编译原理和汇编语言等让你走得更好,数学英语让你走得更远。”大方向的话,就如 兄所言,如果你是图形程序员,那么最好的项目就是,自己做一个游戏引擎,如果你是Gameplay Programmer,那么最好的项目就是,自己做一个游戏项目。另外,
兄在评论区说到,“还是那个问题,是选择偏向游戏(文艺方向,独立开发),还是想做好技术(引擎开发,技术研究,打工,这个可能是大部分人的归路)。”是时候引出游戏开发领域的两大流派了,即
兄在回答中提出的气宗与剑宗。独立开发者和小团队因为时间和精力的限制,大多是以实现为目的,这也是情有可言,这就不难解释
兄所推崇的以快速实现为目的,依赖工具、引擎和不求甚解的剑宗流派有不少人的追捧。(文艺方向另谈)每个人切入这个行业的方法不尽相同,能选择最适合自己的入门方式就是最好。但是入门后如果想有更好和更长远的发展,必须开始崇尚气宗一派,了解内部技术细节,修炼好内功。不要流于形式,浮于表面,依赖工具,而是要深钻进去,了解得越深越透彻越好。最好是能自己了解游戏引擎的底层原理,甚至是写出自己的游戏引擎来,这样才是更高的境界(当然这只是极少部分的顶尖高手能达到的境界)。总之,剑宗一派适合入门,这样有趣,有成就感,能快速得到成果,但容易遇到职业瓶颈,后劲不足。气宗一派注重内功,了解原理,作为稀缺的高水平人才资源,能有更多选择的权力,有更长远的发展。而且不难理解游戏开发领域是先有了气宗才有了剑宗,且了解原理,内功深厚的气宗境界更高一筹。能找到自己的合适的方式就是最好。并不是否定从引擎出发入门这条便捷之路,其实我的建议,若决定走修炼技术为主的气宗一派,先学点C++,然后配合着C++学一些底层API(DirectX或OpenGL),能写一些比较炫酷的三维游戏场景,或者说自己实现一个小型的软引擎,再去真正地接触引擎,利用引擎做一点有趣的demo或者完整的游戏,阅读一些优秀开源引擎的源码(比如Ogre,irrilicht,Unreal Engine4 ,cryEngine),甚至自己实现引擎或者做游戏项目,这是重视技术的气宗流派比较科学的内功修习方式。我们都知道,气宗和剑宗的争执永远不会停歇,就像这个回答下的评论区,永远不是一边倒,而是气宗剑宗的支持者平分秋色,各有千秋。我很欣慰的是,这个***写出来之后,一天之内就已经超过了当时排名第一的、已经在***中被我@了无数次的kubisoft兄有些对现实妥协,倚老卖老(不带人身攻击呢,只是对事不对人)的***。这证明大家的眼睛是雪亮的,内心还是不甘心的,还是希望做个明白人,做个强者,知其然并知其所以然,并且希望自己有能力站在更高的山峰,去完成更大的事业。(PS:这段貌似才算是比较理性的分析,回答一开始写的有些小愤青了,但的确是肺腑之言。) ----------------------------------------------------------------------------------------------------------------------------------------既然提到了小愤青,就另外附一点我在写的一篇年代久远带些小愤青的拙作中的一些观点:“【事实如此,现在市面上所有画质精美的单机游戏作品(鬼泣5,上古卷轴5,刺客信条3,仙剑奇侠传5前传,古剑奇谭等等……),所有的大型网络游戏(Dota2,英雄联盟,魔兽世界,龙之谷,剑灵等等等……),所有高性能的三维游戏引擎(虚幻3,Unity3D,Cry Engine3等等……),以及一些高性能的2D游戏引擎(Cocos2d-x等等),都是用C++来开发的。其实游戏引擎并没有那么神秘,说白了也就是那么回事,用类封装好功能的C++代码而已。C++写出来的游戏引擎自然能跨平台。Unreal Engine3、Unity3D、Cocos2d-x等游戏引擎就是绝好的例子。学好C++,你可以亲手写出Unity3D,亲手写出 Cocos2d-X,让大家都叫你大神,大家都用你写的游戏引擎做游戏,等着你什么时候心情好了更新一下给引擎加更多功能;而不是只会盲目跟风,今天大家说Unity3D火,就都去学Unity3D,明天大家说Cocos2d-x热门,就来学学Cocos2d-x。你学游戏引擎,学的只是人家某引擎作者某C++大神按心情来定的函数调用方式,学的只是如何调用一些别人写好的一些类,一些API函数。这样在别人规定给你的一些rule中固步自封,大家觉得有技术含量么?我们是时候该该想一想了,为什么现在全球范围内优秀的三维引擎,就是没有我们国产引擎的影子。所以,无论是哪个平台,Windows也好,iOS也好,Android也罢,如果你真正想在游戏开发领域有所作为,混出个名堂,请学C++,请学计算机图形学,请了解计算机图形API(OpenGL或者DirectX),而不是在跟风某种“热门”的游戏引擎的大潮中随波逐流,在某种移动平台的游戏开发中迷信某某引擎,乐不思蜀,固步自封。咳,扯远了,而且有些小愤青了,我并没有歧视其他编程语言的意思。浅墨只是想表达,无论是哪个平台(Windows,Play Station,Xbox,Android,iOS, WindowsPhone, WUII),在三维或者高性能游戏开发领域,确实就是C++的天下。】“原文在这里:----------------------------------------------------------------------------------------------------------------------------------------更新部分。答评论区
兄的一段话。关于站在巨人肩膀上的一些思考。首先对于这部分, 在这篇回答的评论区,兄的文字是相当的深刻与一针见血,推荐大家读一读。 1.我们并不是说支持完全去从头造轮子,而是你理解的越深,就可以收放自如,做个有选择权的强者。当没有合适你的轮子的时候,当遇到技术瓶颈的时候,你自己完全可以制造个更好的,前所未有的轮子,而不是懵在那边,等待你所谓的巨人们心情好后的施舍,造一个合适的轮子给你用,或者因为长久以来的太依赖工具而丧失了本来的能力。我大家所希望的,是能做一个真正的明白人,心中有墨水,心中有底气,然后无所畏惧,遇到什么瓶颈都不虚。我们站在巨人的肩膀上的同时,不仅仅是靠业界巨人们写出来的库去实现自己的东西,而是可以理解与吸收巨人们的思维、技术和实现方法。当达到一定境界后,我们可以当下一个巨人,推动业界革命。这大概就是大牛与民工,强者与弱鸡,最外在的区别与表现形式。太依赖所谓的巨人们的肩膀,太依赖工具,如同井底之蛙,日复一日地调用让你崇拜的大神们写出来的类库,以为只要能做到这样就天下无敌了,以为就是软件行业的全部了----这大概就是目前,我们国内软件行业的误区所在吧----依赖工具,浮于表面。2.能理解内部实现细节肯定是推崇的,这个看个人,或迟或早,但是越早越好。我写这个***只是希望题主以及看到这个回答的朋友们能有更长远的眼界,立意更高远,能有更宽的视野,能知道更大的世界,而不是一辈子就这样炒炒现饭调用调用别人写的函数窝囊地就过去了。人的一生精力有限,作为一个聪明人,作为一个明白人,入门的时候什么方式越快越好,但是入门之后呢,如果希望自己有更好更大的发展,大方向千万不要错,不要过分依赖拘泥于工具,浮于表面,一定要跳出那个圈子,从井里爬出来。即,如果希望自己变得更强,不人云亦云随波逐流,最好的方式或许就是自己去理解细节,也并不是咬文嚼字地要自己真正花大工夫花精力去做一款引擎,这个量力而行。人的一生精力有限,没有哪条路哪种方法适用于所有人,但一个人只要能专注于自己认为值得事情,能自得其乐,那也是值得尊敬的。回答 IMAGICE兄的评论:3.直接用轮子,并真正做出非常赞的作品出来,那也是值得尊敬的。当今游戏引擎的发展,为我们提供了前所未有的便利,我们可以合理的利用他,但千万不能太迷信太依赖他。但如果已经在某个领域花了10年甚至更长的时间,还没能有所突破,那就得反省自己,是不是方法问题了,是不是方向问题了,是不是之前研习的时候,或进度太慢,还是走了很多弯路。我们都清楚,并不是每个人都能有很好的技术天赋与底子,当然也不是每个做游戏的人都要去理解和实现底层,要量力而行,要有所侧重,要找到自己最合适的角度。我们只是从长远来看提倡将知识挖深,让自己打开眼界,不做井底之蛙,不随波逐流,让自己因为站得高看得远,而有更多更广选择的权利。技术与创意,并不矛盾。人生在世,有所为,有所不为,游戏开发亦如此。 ----------------------------------------------------------------------------------------------------------------------------------------以下算是一些关于C++的附加思考。【关于“精通C++”这个字眼,请不要滥用】引用 兄的一段话。徐兄现在大三,从初一开始学习C++,对这些有一定的了解,也有一定的发言权。但是他从来不敢说他精通了C++。因为徐兄的主管, 15岁开始学习C语言,现在学习C++已经超过20年。但是他对于技术非常的谦逊,抱着学习的心态去学习技术,也没在我们面前提过他精通C++。即使他已经是国内行业的领军人物。引用
兄的一段话。“我也做了两年c++了,也不敢说精通,我们老大做了至少8年,也没敢说精通,我认识的很多大神,也都没敢说精通。事实上我认识的很多大神都很谦虚,我跟他们学到了很多,大家的简历上也都写着熟悉c++之类的字眼。”即对于博大精深的C++,业界的大牛们穷其一生去研习都不敢言能精通它。就算是天天去钻研C++,一年也只能学个皮毛而已。C++的精通细节与思考,可参看萌萌的V大
的这篇回答:至于快速入门,强烈推荐 ,其为C++业界入门必读《C++ Primer》的作者剥去繁杂,只讲C++核心的一本书。而后续的一些,可以参考这个豆列中的书单: ----------------------------------------------------------------------------------------------------------------------------------------在结束回答之前,感谢 兄在回答中的at,间接地邀请,让我知道有这个讨论存在:)总之,最后的最后,还是那个抉择:你是愿意就这样学点皮毛混口饭吃随波逐流,还是成为真正的游戏开发业界顶尖技术大牛,推动业界的发展,去改变世界? 在二十几岁这段人生可塑性最强的时光里,我们应该是满怀信心,志向高远,想让自己与这个急功近利、日渐扭曲世界有所不同的吧。(呃,这个问题已经被改得面目全非,为了注重真实性,此回答就这样保持原貌吧。日更新)(呃,这个问题已经被改得面目全非,为了注重真实性,此回答就这样保持原貌吧。日更新)
本人大约从20多年前开始学习及使用C++,但仍未达到我认为「精通」的阶段,甚至对于C++11的各种新特性也未掌握。然而因为我是在读书时自学C++的,也是游戏程序员(原问题中提到题主想从事游戏开发),觉得也许能提供一点意见供网友参考。&br&&br&首先引一下2010年8月号《程序员》刊登的拙文《&a href=&///?target=http%3A///miloyip/archive//behind_cplusplus.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&C++强大背后&i class=&icon-external&&&/i&&/a&》最后一段:&br&&blockquote&&b&C++学习建议&/b&&p&C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本K&R&a href=&///?target=http%3A///subject/1139336/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《C程序设计语言》&i class=&icon-external&&&/i&&/a&即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点学习心得。个人认为,学习C++可分为4个层次:&/p&&ul&&li&第一层次,C++基础:挑选一本入门书籍,如&a href=&///?target=http%3A///subject/4262575/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《C++ Primer》&i class=&icon-external&&&/i&&/a&、&a href=&///?target=http%3A///subject/2030264/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《C++大学教程》&i class=&icon-external&&&/i&&/a&、或Stroustrup撰写的经典&a href=&///?target=http%3A///subject/1099889/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《C++程序设计语言》&i class=&icon-external&&&/i&&/a&或他一年半前的新作&a href=&///?target=http%3A///subject/4875599/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《C++程序设计原理与实践》&i class=&icon-external&&&/i&&/a&,而一般C++课程也止于此,另外&a href=&///?target=http%3A///subject/1110941/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《C++ 标准程序库》&i class=&icon-external&&&/i&&/a&及&a href=&///?target=http%3A///subject/1868179/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《The C++ Standard Library Extensions》&i class=&icon-external&&&/i&&/a&可供参考;&/li&&li&第二层次,正确高效地使用C++:此层次开始必须自修,阅读过《(&a href=&///?target=http%3A///subject/1241385/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&More&i class=&icon-external&&&/i&&/a&)&a href=&///?target=http%3A///subject/1842426/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Effective C++&i class=&icon-external&&&/i&&/a&》、《(&a href=&///?target=http%3A///subject/1244943/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&More&i class=&icon-external&&&/i&&/a&)&a href=&///?target=http%3A///subject/1967356/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Exceptional C++&i class=&icon-external&&&/i&&/a&》、&a href=&///?target=http%3A///subject/1792179/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《Effective STL》&i class=&icon-external&&&/i&&/a&及&a href=&///?target=http%3A///subject/1480481/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《C++编程规范》&i class=&icon-external&&&/i&&/a&等,才适宜踏入专业C++开发之路;&/li&&li&第三层次,深入了解C++:关于全局问题可读&a href=&///?target=http%3A///subject/1091086/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《深入探索C++对象模型》&i class=&icon-external&&&/i&&/a&、&a href=&///?target=http%3A///subject/1470838/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《Imperfect C++》&i class=&icon-external&&&/i&&/a&、&a href=&///?target=http%3A///subject/2970056/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《C++沉思录》&i class=&icon-external&&&/i&&/a&、&a href=&///?target=http%3A///subject/1110934/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《STL源码剖析》&i class=&icon-external&&&/i&&/a&,要挑战智商,可看关于模版及模版元编程的书籍如&a href=&///?target=http%3A///subject/2378124/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《C++ Templates》&i class=&icon-external&&&/i&&/a&、&a href=&///?target=http%3A///subject/1119904/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《C++设计新思维》&i class=&icon-external&&&/i&&/a&、&a href=&///?target=http%3A///subject/4136223/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《C++模版元编程》&i class=&icon-external&&&/i&&/a&;&/li&&li&第四层次,研究C++:阅读&a href=&///?target=http%3A///subject/1096216/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《C++语言的设计和演化》&i class=&icon-external&&&/i&&/a&、&a href=&///?target=http%3A///subject/4722718/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《编程的本质》&i class=&icon-external&&&/i&&/a&(含STL设计背后的数学根基)、C++标准文件&a href=&///?target=http%3A///files/C%252B%252B%2520Standard%ANSI%2520ISO%2520IEC%202003.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《ISO/IEC 》&i class=&icon-external&&&/i&&/a&、&a href=&///?target=http%3A//www.open-std.org/JTC1/SC22/WG21/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&C++标准委员会&i class=&icon-external&&&/i&&/a&的提案书和报告书、关于C++的学术文献。&/li&&/ul&&p&由于我主要是应用C++,大约只停留于第二、三个层次。然而,C++只是软件开发的一环而已,单凭语言并不能应付业务和工程上的问题。建议读者不要强求几年内“彻底学会C++的知识”,到达第二层左右便从工作实战中汲取经验,有兴趣才慢慢继续学习更高层次的知识。虽然学习C++有难度,但也是相当有趣且有满足感的。&/p&&/blockquote&&br&如果题主认为的「精通」是指上述所指的第二层次,那么我估计一年全职时间也未足够「精通」。首先,阅读这些书籍本身也需要不少时间,而且对于一般人来说(指除了一些学习记忆能力超强的人),很可能需要阅读几遍才能记住一些细节。另外,阅读后必须要练习。除了入门的习题外,还需要做一些工程向的项目,才能了解各种语法、编程范式的使用方法及时机,理想地建议参与一些开源项目。然而,学习是需要不断思考并把结果沉淀,方法包括与朋友讨论、写博客、写知乎***等,这些都需要时间。&br&&br&如引文末段所指出,我建议不要把「精通C++」作为一个一年目标,应该要把学习语言作为一个持续的过程,同时要把语言运用在具体的应用场合中。&br&&br&---------------------------------------------------&br&再讨论C++与游戏开发。&br&&br&看到有不少***讨论到有关C++是否游戏开发者所必须的技术。我认为,这并不是完全必须的,但许多游戏开发项目需要到C++。以下列举一些过往曾流行的游戏平台/类型:&br&&ol&&li&PC单机游戏(Windows)&/li&&li&PC网络游戏(Windows、Linux)&/li&&li&移动平台游戏(J2ME、Symbian、Palm……)&/li&&li&家用游戏机游戏(PS1/2/3/4、XBox、Wii……)&/li&&li&掌上游戏机游戏(GB、GBA、NDS、PSP……)&/li&&li&网页游戏(HTML、Flash)&/li&&li&智能移动设备游戏(iOS、Android)&/li&&/ol&我们会发现,除了J2ME和网页游戏外,大多数的平台都支持(或只支持)原生编程。而原生编程最常用的就是C/C++和汇编。这种现象并不难解译,再次引用拙文:&br&&br&&blockquote&&b&应否选择C++&br&哪些程序适宜使用C++?&br&&/b&&br&&p&C++并非万能丹,我按经验举出一些C++的适用时机。&/p&&ul&&li&C++适合构造程序中需求较稳定的部分,需求变化较大的部分可使用脚本语言;&/li&&li&程序须尽量发挥硬件的最高性能,且性能瓶颈在于CPU和内存;&/li&&li&程序须频繁地与操作系统或硬件沟通;&/li&&li&程序必须使用C++框架/库,如大部分游戏引擎(如Unreal/Source)及中间件(如Havok/FMOD),虽然有些C++库提供其他语言的绑定,但通常原生的API性能最好、最新;&/li&&li&项目中某个目标平台只提供C++编译器的支持。&/li&&/ul&&p&按应用领域来说,C++适用于开发服务器软件、桌面应用、游戏、实时系统、高性能计算、嵌入式系统等。&/p&&/blockquote&&br&很大程度上,游戏──或说游戏引擎,都是C++非常适合的应用时机。&br&&br&一些人认为,游戏开发者使用现成的引擎,就不需要使用C++了。过往,业界有一个普遍常识,就是用C++开发游戏引擎,而游戏引擎提供脚本引擎供编写游戏逻辑代码。但这个观点被Unreal Engine 4的决策改变,UE4放弃了维护多年且被大量使用的UnrealScript脚本语言,而改用原生C++作为游戏逻辑编程的语言。此决策背后有多个原因,但这里只想举出这例子展示C++在游戏开发中的用途及潮流,具体原因分析就不详细展开了。&br&&br&除了自行研发游戏引擎需要使用C++,我们可以看到,大部分游戏引擎都提供了其C++原代码(Unity算是例外),这让我们可以&br&&ol&&li&方便调试游戏&/li&&li&深度剖析、优化游戏的性能&/li&&li&为引擎扩展新功能&/li&&li&修改现有引擎以适应项目所需&/li&&/ol&在专业的游戏开发中,这些都是很常见的工作任务。所以,即使并非自研引擎,并使用脚本语言开发游戏逻辑,也有很多机会需要使用C++。&br&&br&最后,「还需学习什么」是一个很难简单回答的问题,因为游戏开发涉及的知识面很广。建议可参考本人译作。
本人大约从20多年前开始学习及使用C++,但仍未达到我认为「精通」的阶段,甚至对于C++11的各种新特性也未掌握。然而因为我是在读书时自学C++的,也是游戏程序员(原问题中提到题主想从事游戏开发),觉得也许能提供一点意见供网友参考。 首先引一下2010年8…
&p&  我觉得可以过来再更新一次了。&/p&&p&/*****************************************以下内容可以跳过*****************************************/&/p&&p&  我说一下我做游戏的历程吧,二年级的时候(我出生于1991.11)我开始接触电脑,当时对电脑的画图工具很痴迷,为什么画图工具能够做出这么好看的东西。所以我对这些所见即所得的东西非常着迷,因为我觉得很容易就开发出来一个东西炫耀。&/p&&p&  后来四年级时候,我的父母有接触一个游戏叫《传奇》,我在他们没在家的时候偷偷创建了一个帐号,体验了十五分钟(没错小学生就是我),觉得游戏真的很吸引人,我是父母在我从小禁止玩游戏的,所以我没有接触过任何游戏,包括红白机,这应该也是很多人的童年。在那时候,我的梦想就是未来能够做游戏设计师,做一个全世界的人都喜欢的游戏。&/p&&p&  慢慢CCTV某一个频道有一个栏目是一个教授开始了解有一样东西叫做powerpoint 2000.我开始拉一些图片进来,做了一个小游戏,你没看错,是ppt做了一个小游戏,是类似大逃杀的游戏。点一下进一个地点,有了最原始的交互。&/p&&p&  从初一的时候,我知道了有一个东西叫做VB,我也尝试用VB写程序。同时开始学习一个编程语言叫C,那时候我果断抛弃了C,因为VB真的很容易做出一个窗口,然后写一个helloworld拿出去炫耀。&/p&&p&  兴趣是最好的老师,我爸妈说学好这些东西就可以做游戏了。我就开始认认真真学C语言,当时效率也很高,我现在一直觉得我在吃老本。。学C的基本概念,用控制台做一个打飞机游戏,做一个RPG游戏,类似于&a href=&///?target=http%3A///link%3Furl%3D0o--n-tcUEGrpgD6Jepw3JcgfYRdK4ZHmFUmklD1FK7F-ejZZ5XyKoV4tFm-Rc0FIOyeMZPnx2eZwUm75KK0fPp_wUyogeSeNff3NHN4hdi& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&colossal_cave_adventure&i class=&icon-external&&&/i&&/a&。&/p&&p&  再到了高中,开始用VC++6来开发一些win32小游戏,我觉得&b&把游戏做好是一种使命,&/b&那时候也知道了国内著名的工作室:西山居1995 完美时空 2004 琳琅天上2004.&/p&&p&  我的心愿就是加入他们,成为真正的游戏开发者。&/p&&p&  后来到大学,我学计算机图形学,数据结构,自学编译原理,汇编语言。才发现原本单纯的梦想发现是不可实现的,我不可能做出每个人都喜欢的游戏,就开始学习游戏引擎制作。&b&如果你希望能够从事引擎开发,我推荐叶劲峰 &/b&&b&@Milo Yip&/b&&b& 大神翻译的《游戏引擎架构》一书。&/b&&/p&&p&  直到现在,我如愿以偿,成为了居士,开发游戏引擎。这不是一年两年能决定的,如果你要做程序,真的要多积累了。&/p&&p&/*****************************************跳到这里就好*****************************************/&/p&&p&  从始至终,我是抱着一种使命来学习,来努力,来做游戏的。当时面试的时候,面试官问我,你为什么要做游戏,我说:“我一生就为了做游戏,生活能够过得去就行。”我现在也觉得,我如果不做游戏,我还能做什么(我现在很局限了,眼界很窄)。&/p&&br&&p&&b&我最近学校的课程是要用Objective-C开发游戏,我从来没有学过oc语言,但是我并不觉得他特别的难,相反,我觉得他很容易上手开发iOS应用,因为有C++的积累,我可能不知道具体的语法或者用法还有API,但是我可以通过C++来融会贯通。&/b&&/p&&br&&p&  C++是一种潜移默化的东西,当你了解他之后,你学什么都会容易,觉得简单。&/p&&br&&p&&b&所以,C++是重中之重!!!&/b&&/p&&br&&p&  吐槽完毕。。只有20个赞,第一次这么认真回答的说。 T_T&/p&&br&&p&/*****************************************这是之前的回答*****************************************/&/p&&br&&p&我不请自来了,因为我发现在这里面回答的人都在回答:“我想做游戏开发,难吗?”,而不是回答“我想从事游戏开发,一年内能精通C++吗?”。无视题主的提问,实在忍不住。&br&对于题主的提问,&b&我比较赞同 &a class=&member_mention& href=&///people/4253447dde7c702d08e6daa724f25062& data-editable=&true& data-tip=&p$t$4253447dde7c702d08e6daa724f25062& data-title=&@王选易& data-hash=&4253447dde7c702d08e6daa724f25062& data-hovercard=&p$b$4253447dde7c702d08e6daa724f25062&&@王选易&/a&
的*** &/b&,也许大家都是技术人员并且也在大学中学习游戏开发。&br&&br&首先我回答题主的问题,作为大二即将升大三的学生,由于你大一大二忙于社团活动。以致于你可能错过了大学中打基础的黄金时期,大三的一个学年里面,除去你的课程时间,能够继续深入学习C++的时间也许并不多。所以,一年内你说可以精通C++,我觉得不可能。&br&&br&&/p&&br&我现在大三,从初一开始学习C++,对这些有一定的了解,也有一定的发言权。但是我从来不敢说我精通了C++。因为我的朋友,他是15岁开始学习C语言,&b&现在学习C++已经超过20年。但是他对于技术非常的谦逊&/b&,抱着学习的心态去学习技术,也没在我们面前提过他精通C++。即使他已经是国内行业的领军人物。&br&&br&说一下精通C++这个吧,其实精通这个词真的很大争议,至少在许多的社区都有人对这两个字吵的不亦乐乎,那么我来和你说一下熟悉的概念吧:&br&&br&我觉得熟悉C++,至少要能够做到这些:&br&1、你完整阅读过&b&C++ Primer 第五版&/b&之后的书,这本书可谓是C++程序员入门必读的书。(为什么我推荐第五版之后,因为第五版之后包涵的内容是C++11标准的内容,你现在重拾编程语言,那么推荐你看新的书)&br&2、你能够对面向对象编程有明确的概念。因为现在许多程序员用着面向对象语言,却做着面向过程的事情。&br&3、能够利用C++配合DirectX或者OpenGL来制作Windows小游戏。&br&4、对数据结构有一定的认识,能够准确针对问题选择你的数据结构。&br&5、其他内容一下子没想到这么多,等以后更新。&br&&br&至于精通,精通C++不仅仅是C++的语法,还有编译的原理,那么又涉及到编译原理,还有计算机的组成原理。调试的时候,当你用release的调试,你又需要汇编语言的知识,又涉及到汇编语言。再后来你需要设计比较大型的程序,你要对数据结构,和设计模式有一定的认识。&br&&br&再回答下一个问题:你希望从事游戏开发工作,做游戏其实不仅仅是看着最近火热,而是你要从一开始就对有游戏有接近疯狂的热爱,把做好一款游戏当做你的使命,你才有动力继续学习。因为程序学习起来非常枯燥。&br&&br&至于你最后的问题:&br&你需要学习其他什么,我觉得其实你需要做游戏,不一定是C++,你可以选择另一个语言比如Objective-C开发iOS的游戏,或者学习C#,可以开发wp8或者xBox的游戏。&br&如果你单纯是做游戏,语言并不是问题,问题是你对其他知识的了解程度和对游戏行业的热爱,为了工作而工作可能并不会让你充满满足感与激情。&br&&br&其他的知识:&br&计算机图形学&br&数据结构&br&编译原理&br&汇编语言&br&英语&br&数学&br&&br&至于苦逼软件的作者的回答,我反对,并且我认为这不是合适的***。&br&&br&不是所有的人会为你“工作十几年游戏项目超过十年而买单。”&br&&br&&br&---------------------以下逐个写下来得罪人---------------------&br&“想做游戏开发根本不需要精通C++,根本就是南辕北辙。”&br&》游戏开发不需要精通C++,甚至说不需要会C++,但是你至少要熟悉任何一门开发语言,并且充分了解数据结构。这根本不是南辕北辙,而是取向问题。&br&&br&“挑一个引擎熟悉起来”&br&》这是我看到最不负责任的回答,这位同学问的是未来的路,现在让一个学生直接选一个引擎,没有错,这样可以让他更容易找到小公司,但是会使用,不懂一个引擎的原理,在日新月异的今天,公司换了一个引擎,要重新去学习,如果掌握最基础的东西,那么无论任何引擎,都可以迅速上手。&br&&br&“游戏开发就是耍剑,耍得好看才有饭吃”&br&》游戏开发实质就是程序员不仅要练剑,也要练气。&br&&br&&br&&b&ps:以上纯属个人观点。&/b&
我觉得可以过来再更新一次了。/*****************************************以下内容可以跳过*****************************************/ 我说一下我做游戏的历程吧,二年级的时候(我出生于1991.11)我开始接触电脑,当时对电脑的画图工具很痴迷,为什么画…
已有帐号?
无法登录?
社交帐号登录
《Windows游戏编程之从零开始》作者,微软VC++领域MVP,网络ID浅墨

参考资料

 

随机推荐