游戏程序员应当设立独立董事如何学习美术想自己做小独立游戏

游戏开发之路(30)
如何成为一名独立游戏开发者
有人通过邮件问我是有关于独立游戏开发者的一些问题,我尽最大努力给与了回复,但我仍不是十分清楚他们究竟想了解什么,我觉得有必要写篇文章,希望能给大家一些有用的建议。
我们是谁?
Mode7是英国牛津的一个开发工作室,我们正式成立于2005年,2007年发布了一款并不是很成功的多人模式的格斗游戏Determinance。随后,我们在2011年发布了多人对战游戏Frozen Synapse(后来发布了iPad版本)。我和Ian Hardingham(首席设计师和程序员)是公司的联合董事总经理和共同所有人,另外公司还有4个全职员工,有时候还会有一些自由职业者。
我是Paul Taylor:我负责商业开发、营销、音效、音乐、美术指导以及UI设计,甚至还有单人模式的游戏设计...其他一些事情...
为了尽量缩小问题的范围,我假设你想知道的是“如何成为一名独立游戏开发者”:
“我想放弃现在的工作去做一名独立游戏开发者。”
如果你只是想有一段作为一名独立游戏开发者的经历或者说仅仅是觉得好玩,那我还是请你绕道而行吧。
游戏开发基本要素:
美术和动画
音效和音乐
商业因素(法律、市场营销、PR以及其他)
这些很重要但也很有挑战性,一般很少有人精通多项技能,面面俱到。另外,你需要找到志同道合的人,同时付钱给那些为你工作的人,个人认为你需要掏钱去找一些专业的人帮你打点你不擅长的事情。
对于你的搭档,你要确保他有跟你一样长远的目标。一些热心的肯帮助你的人不见得可以跟你坚持到最后,尤其在遇到困难的情况下,有时候他们也不好意思说自己已经放弃了,无形中又耽误了你的时间,所以最好有些约束性的东西。
游戏设计是最具有创造性的部门,需要你有很高的思维分析能力。我见过很多游戏设计师多少是有点“精神错乱”的,需要有很好的叙事能力,但是他们的主要目的是设计现实中的游戏,但很多人并不知道这一点。
个人觉得以下三种方法可供新手学习游戏设计(重要性递减)
1) 做一款游戏,关注人们怎么玩
2) 带着分析的角度玩别人的游戏
3) 进行理论性的游戏设计学习
你的人生本身就是一个设计,如果你编码能力很高,那么你的人生会变得容易。你所看到的优秀的游戏设计师是不需要写代码的,因为他所在的团队有不少编码高手。除非你非常富有敢于冒风险,不然你会在最初就这么做。一个独立的游戏设计师不编码也行,但你要用人际关系来弥补,得有人帮你。
如果你使用游戏开发软件,你会降低硬核编码的数量,你从一开始就要学会是为了设计而开始,但要清楚到到了具体细节方面你的设计就会被限制。设计是重要的,但不是全部。这也就是说设计并不是件普通的事,用户最初可能会因为你对游戏的描述或者游戏的概念而来,而要想留住用户就要靠设计了。
个人认为设计师应该多做以下三件事:
1)试着让玩家感兴趣,让玩家快速做决断。
2)试着降低玩家在游戏中一些无聊的操作
3)至少有一个创新元素,哪怕它并不是一个伟大的创新。
另外,游戏设计得让玩家相信他们能够做到,即便他们以前从未做过。我不知道游戏的质量怎么样,但不要让游戏看起来容易,玩起来十分困难。最后有关于设计的一点是“你必须找到自己的方式,表达自己的个性,明确自己的目标”。
游戏概念是影响人们是否购买它的重要因素,除了有美学和游戏机制外,更有一些情感性因素在里边。如果你游戏的概念很普通,那你就需要在其他方面进行补充。游戏概念方面,一是寻找大街小巷里的流行类型,比如有关音乐的、有关动物的或者是一切来源于现实生活的可能性。二是做你热衷的、喜欢的游戏,这样你才更有做下去的动力。
我认为做一款能在商业上获得成功的游戏,能让你维持生计继续开发更为重要。如果你忽然有个奇怪的想法,你要清楚你需要更多付出来开发,找出受众,因此在你开发前要想好这个问题。
上边说了游戏设计和概念,但只有设计和概念,没有编码,这个游戏也只能想想而已。互联网上有很多关于“我如何学会编程”的文章和资源,但了解基础性的东西比较繁琐,加上学习编码需要时间和高度集中的注意力,对已经有其他工作内容的人来说并不容易。
不管你以前写没写过代码,但有一个编码环境很重要,如果忽然给你5000行的代码,你可能会不知道如何下手了,一点点开始吧。看书和实际联系是不可少点的,但有一点,不管是编码还是设计,你不要带着个人态度进入问题,比如“我不知道怎么做”,“我不知道有没有可能”,因为任何事在你采取行动之前永远没有可能实现。
游戏策划和关卡策划需要不同的技能。游戏策划是策划整体的游戏系统,关卡策划则是要想出方法来表现出游戏系统,同时给予玩家奖励汇报。关卡策划通常难度较高,通常都是迭***发,花的时间周期较长。独立开发者需要掌握这项技能,或者去找一个专业人员来做这件事。
我非常尊重那些自己能够画原画的独立开发者。但是如果你的美术功底不是太强的话,你可以做一些简单风格的美术设计,或者可以直接选择将美术部分外包出去。关于外包,我建议选择那些有过完整项目经历的美术人员。挑选外包美术的时候需要货比三家,不要怕在招人的时候耽误时间金钱。最后你会发现收入和支付能够最后达到某种平衡。
在确定Frozen Synapse(凝神)的美术风格上,我觉得有几点帮助较大:
当时我们基本没有美术的预算,所以我们觉得把以前复杂的2D风格改成了比较抽象的自上而下的设计风格。简单的美术实际非常适合对复杂的PC策略游戏。最后的成品很像AI War(人工智能战争)。
把握住方向
概念艺术在给你一个目标上确实挺有用,但是不要走的太远。作为独立开发者,你需要利用有限的资源来创造最大的成果。
奖励的艺术展示是重点
玩家被杀死的时候,需要有一段非常漂亮的死亡动画以及喷溅而出的鲜血的动画。我们投入了很多时间和资金在类似的内容上,一定要有感染力的艺术表现。
界面菜单非常关键
很多游戏的弹出框和菜单界面非常难看。我实在是搞不懂为什么,他们只是些静态图像啊。就好像是一家有着漂亮商品的商店,但是商店大门和窗户的设计看上去是让4岁小孩随手设计的。目录的动画可能看上去是小事,但这能够提高很大的提高玩家的体验。
修改,修改,反复修改
你必须要注意每一个小细节,为玩家创造出游戏的氛围。苹果是这种事情的大师,你可以看看他们的产品和UI设计。做到这些小细节,才创造出了如此好的用户体验。
音乐和音效
相比而言,音效在独立游戏中的重要性没有那么大,很多成功的游戏却有着很糟的声音和音乐。虽然我负责公司游戏的音效,但这是个事实。
但是如果你打算迈进高端品质游戏的行列,想让游戏更有竞争力,那你最好把音乐和音效做的好一点,我建议外包这一块的内容,除非你很擅长。对我来说,我更喜欢Ableton Live(ABLETON公司出品的专业音序器),它可以帮你免费合成音乐或者音效。
如果你有不错的预算或者音乐方面的技能,你还可以出售原声音乐,这也是让用户发现游戏的一个方法。对于一般开发者而言,音效这块如果确实比较困难,那你必须把其他方面做的更有吸引力一些。
游戏文案的水平还是有很大差异的,而在游戏中添加个性化的文案可以让游戏更为生动,也是有别于其他游戏的一个方法。如果你没有任何很好的游戏文案写作经验的话,建议你雇佣自由作家。或者让别人给你一些建议,以确保你在做一件有意义的事情。
在我的经历中,我发现玩家不需要太多文本的东西,但你要确保你的文字能让他们快速理解他们在做什么。
商业因素(法律、市场营销、PR以及其他)未完待续...
转载地址:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:159392次
积分:2591
积分:2591
排名:第10178名
原创:18篇
转载:496篇
译文:10篇
(24)(4)(11)(11)(1)(4)(3)(8)(11)(8)(26)(20)(15)(14)(11)(31)(7)(7)(29)(22)(18)(7)(41)(52)(24)(10)(13)(14)(33)(35)(10)我是一个游戏程序员,想自己学点游戏美术,我应该怎么去做,有没有一些基础关于的书或教程。_百度知道认识的人中想碰运气找了一个愿意做的,真答应去做了,一口一个好什么功能都能够完成,结果在于其时间内完成度很低。。。在外包网站上找的人信任不起来,还问过几家说的价钱我都想笑的。用unity做。想找外包,但是外包形式呆板,不适合开发中的反复测试修改的过程。愁死了,如何找程序员小伙伴...
同样作为美术+业余策划,目前也在用业余时间开发独立游戏。并且找到了不错的程序合作,还是难度最大的异地合作,我在北京,程序在东京。所以我觉得在回答这个问题上自己还是有些经验的。我不懂程序,仅从个人角度出发,来说说我认为能找到&b&强力程序&/b&的几个切入点吧。&br&&br&&b&第一是目标一致&/b&,都做你们希望做的游戏。如果他想做山寨换皮,你想做独立创新,那么就算了,道不同,不可能玩到一起去。除非你发工资给人家。以换皮为目的的独立游戏应该不多吧。&br&&br&&b&第二是熟悉游戏制作流程&/b&。思维清晰,对自己的专业范围工作流程了如指掌。我相信一个强力的程序是不愿意和一个半调子美术合作开发游戏的。如果美术自己不了解相应的开发流程,而是只会画画的话,哪怕画得再好,在双方的合作中也会带来很多的磨合成本,因为美术和程序的思维方式是完全不一样的。如果是用松散网络合作形式,那么沟通起来会更加困难。&br&&br&举个简单的例子,如果你想做一个攻击技能,在你想把这个招数做到有多华丽之前,你要先制定好技能释放时间,动作帧数,动作是否包含位移,如果需要位移,距离是多少。位移效果是由程序判断还是播放预先做好的预制动画。以及能否被打断等等一系列制作规范。&br&如果只是简单说对人家说,我想了一个牛逼招数,效果已经画好了,你去把功能做好吧。这样程序是没法和你合作的。&br&&br&就目前国内环境而言,能够制定出一套合理的制作规范的开发人员非常少,这也是很多独立游戏做不下去的原因。&br&&br&&b&第三制定合理的工作内容和开发流程。&/b&不要设定超出你们能力范围和精力范围的工作目标。经常看到网络上很多满怀热情的开发者,信心满满的想制作出媲美3A大作的独立游戏。树立崇高的目标固然能激励团队成员和吸引高手加盟,但是制作内容超过能力和时间能承受的范围,热情耗尽后,结果也往往不了了之。目标定太高,发工资给人家也没用的。同样,开发流程混乱的话,制作的先后次序搞不清楚,或者一天一个想法反复修改,也会招致开发人员反感。在工作中因为是拿钱办事,这么做无所谓,只要公司愿意支付修改成本就行,大部分国内公司做项目都是这个德性。但是如果是合作开发,大家地位平等,这么做就很容易出问题。&br&&br&&br&&b&第四是主动承担大量工作。&/b&如果你是项目的发起者和主要制作人,那么项目中需要的美术资源规划和制作,策划文档撰写,相关参考提供,开发工具选择,都必须你来亲力亲为。不要等别人找你要东西。以我目前制作中的项目为例,因为是IOS平台的游戏,在程序加入项目初期就提供了ipad作为开发测试用,并且购买了开发者账号。在开发中遇到困难,要主动寻求解决方案。这些都是团队发起人应该做的基础工作。&br&&br&&b&第五还是要证实自身强大。&/b&如果你能做出战地4的画面效果,并且能在项目中证明这一点。相信是个程序员都愿意和你合作的。&br&&br&&b&第六是合理外包工作量。&/b&很多低技术含量的重复劳动,能外包就外包吧,尽量减少主力成员工作量,不要用这些无聊工作磨灭团队热情,把精力放在有技术含量的地方。&br&&br&做到了这些,就靠运气和耐心吧。多在程序员出没的论坛和Q群转悠,适时表现自己,假以时日,总能找到志同道合的好基友。&br&&br&最后以我们做的项目为例来介绍我们的开发模式吧,以供参考。&br&这是我们游戏实机效果截图,运行硬件平台为ipad4.目前开发进度40%&br&&img src=&/e445b187ba2d_b.jpg& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&/e445b187ba2d_r.jpg&&&br&&img src=&/ea34d3d832c295366cedd1ffc8c7cfdc_b.jpg& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&/ea34d3d832c295366cedd1ffc8c7cfdc_r.jpg&&&br&&img src=&/dd3d818ee8450_b.jpg& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&/dd3d818ee8450_r.jpg&&&br&&img src=&/0aa947b6f218f60e4143_b.jpg& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&/0aa947b6f218f60e4143_r.jpg&&&br&我们的角色细节&br&&img src=&/fef4c72ffefa28d4c2d46c_b.jpg& data-rawwidth=&982& data-rawheight=&1200& class=&origin_image zh-lightbox-thumb& width=&982& data-original=&/fef4c72ffefa28d4c2d46c_r.jpg&&&br&我相信这样的效果,让人很难相信这是移动平台上的游戏。&br&很难相信这是国产游戏。&br&很难相信这是几个人在素未蒙面的情况下用业余时间开发的游戏。&br&在这款游戏中,作为发起人,本人负责了游戏的玩法设计和美术资源制作。为了在移动平台实现尽量丰富的细节,我制定了一切和和美术相关的技术和艺术规范,比如同屏模型面数规范,贴图数量与重用率的规范,drawcall限制,贴图和模型内存使用限制,动态关卡的大小和加载距离,同屏物体的显示裁剪距离,lightmap的大小和分辨率,预乘可见性的范围大小....以及达成这样效果需要的贴图制作流程,模型制作流程,材质制作流程等等。这样让程序的精力能够集中在游戏的功能内容开发上。&br&&br&在开发流程上,我们用快速迭代的方式迅速过滤掉不成熟的想法。我们先假定设想的一切功能都是不合理的,在没有得到验证前,不做产品级的效果,这样大大缩短了开发时间。用很短的时间做出功能原型后,立刻测试,早发现问题早排除。确认没有大问题后,再开始细节的开发工作。避免重复劳动。&br&&br&在游戏内容制作上,我们将玩法切分成一个一个功能细节,我做出符合规范的美术资源(&b&注意只要符合规范就可以,不一定是成品&/b&!),交给程序负责功能实现,然后程序做出功能再交给我添加到关卡中组合成游戏内容,然后我再打包运行游戏进行测试,确定可行后进行产品级效果的制作。形成一个流水般的循环。&br&&br&一个合理的流程能够数倍提高开发效率。这里要吐槽一下很多国内游戏公司,包括那些所谓的大公司,在游戏制作的项目管理上都是没入门的水平。&br&&br&你会发现,通过这种方式,能够尽快,平稳度过磨合期,之后你会越做越好。而当你越做越好,团队凝聚力也会越来越强。从而吸引更多高手加盟,形成良性循环。
同样作为美术+业余策划,目前也在用业余时间开发独立游戏。并且找到了不错的程序合作,还是难度最大的异地合作,我在北京,程序在东京。所以我觉得在回答这个问题上自己还是有些经验的。我不懂程序,仅从个人角度出发,来说说我认为能找到强力程序的几个切…
我臆断一下,很可能你之前找到的程序员,是被你的“反复测试修改”给弄得灰心丧气的。&br&如果时间无限多的话,不少程序员是可以做到“什么功能都能完成”。&br&问题是,时间往往是不够的。于是,之前吹过的牛逼无法兑现,这位程序员只好请辞了。&br&&br&做项目,目标要明确,投入要充分。对游戏的制作难度,团队成员要有一个清晰的认识。要给出足够的时间,并且划分好里程碑。人员上,除非有强大的气场能忽悠住人,最好不要让人白干。不要把伙伴当超人,不要在没有混熟的前提下,对别人有太多的心理依赖。团队是要磨合的,一开始要给出足够的忍耐。千万不要抱着找到一个靠谱的人,就万事大吉了的心态。很多时候,对方靠不靠谱,也与自己靠不靠谱有关系。能大包大揽,并且活很漂亮,又经得起修修补补的折腾,还真正不在乎钱又有闲的人,实在太少了,凭什么就能随便遇上呢?&br&&br&目前是没有专门的平台提供牵线搭桥的业务的,原因很简单,大部分通过网络认识并组建的团队都没有取得好的成果。这种方式总是不成功,所以没有去建立平台的价值。制作游戏,最好走商业化路线,用钱驱动。要理想不要钱的方式,往往行不通。你看罗永浩、王自如这些散发理性主义气息的家伙,真做起事情来,哪个绕开了钱。理想换不来面包,有足够的面包饿不死,应该会有很多人去优先追求理想,并且最后还不差钱。但我们没达到那种层次。
我臆断一下,很可能你之前找到的程序员,是被你的“反复测试修改”给弄得灰心丧气的。 如果时间无限多的话,不少程序员是可以做到“什么功能都能完成”。 问题是,时间往往是不够的。于是,之前吹过的牛逼无法兑现,这位程序员只好请辞了。 做项目,目标要…
已有帐号?
无法登录?
社交帐号登录
前端设计小头目当前位置:&>& > 游戏策划该如何提升自己?未来转型方向在哪?
游戏策划该如何提升自己?未来转型方向在哪?
摘要:文 / 王朝阳&喷者孙氏&李荀很多时候,不知道自己该朝哪些方向努力。工作很忙没有什么时间,但一直很认真地试图提升自己,却一直效果寥寥。作为游戏策划,到底要怎么提升自己
文 / 王朝阳&喷者孙氏&李荀很多时候,不知道自己该朝哪些方向努力。工作很忙没有什么时间,但一直很认真地试图提升自己,却一直效果寥寥。作为游戏策划,到底要怎么提升自己,未来又有哪些转型之路呢?以下是几位网友的观点:王朝阳:说说自己的经历吧,首先我混的并不好,没有经过高流水的验证,以下只是我自己的浅见:一开始做数值策划,我迷信于软件,因为是fps游戏,确实有用,通过一些脚本模拟,让自己对工作的把控能力更强了。但随着时间的发展,我愈发觉得软件只是一个工具,数值最关键的还是体验,可能我算出来是这样,但实际体验可能会很差,基本上一半的时间都用在这里。比如现在我接手一个rpg的数值,我们游戏里的怪物,防御力基本就是0,开始我很难理解,后来想了很久才明白,这样玩家打怪时,更容易衡量出自己的攻击力的效用,虽然防御小,但给怪多加点血就回来了。再比如消费系统,第一级消费50元,第一感觉就是第一笔钱,不要这么贵吧,但实际上加上活动赠送,首日产出,只需要五块钱,感受一下好了很多,消费率会有不小的提升。所以我觉得我需要提升的,是对游戏的理解,是如何提升体验,没事去竞品游戏看看,同样的体统,他们为什么做了这样的微创新,有什么理由,如何为己所用。数值其实是为运营数据服务的,上面说的感受,直接或间接地都是拉数据的,只是多少的问题。毕竟你做出的产品,数据够好才有人接盘。喷者孙氏纯法师:学习各类软件公式数据结构-&熟练的数值策划-&踩坑-&踩过坑的数值策划-&学习各类游戏的战斗公式经济系统架构平衡性调整方法技能设计技巧-&牛逼的数值策划。兼职吟游诗人:打游戏-&打游戏很多的数值策划-&打游戏-&打游戏特别多的数值策划-&打游戏-&什么游戏都打的数值策划。进阶大法师:学习本职技能-&熟练的数值策划-&关注体验学习系统设计熟悉主流游戏设计明白竞品的成功原因-&主策划-&熟悉游戏制作流程工作安排人员分配积累威望-&制作人。兼职战牧盗:学习程序-&会写程序的数值策划-&去写游戏-&小游戏作者-&继续写游戏-&独立游戏制作人;学习美术-&会画画的数值策划-&找个程序员写游戏-&小游戏的合作者-&继续写游戏-&独立游戏合作制作人;学习程序-&会写程序的数值策划-&学习美术-&什么都会的游戏人-&转行-&伊尔明斯特。进阶烛堡学者:成为牛逼的数值策划-&看已有的游戏设计书籍讨论游戏发展趋势-&会高谈阔论的游戏策划-&学习心理学名词-&会装逼的游戏策划-&写书-&写过书的游戏策划。李荀数值策划是游戏策划里面一个最慢出成绩的岗位,所以,你既然选择了这个,那就不要着急。系统策划(这里定义是专门写功能文档,活动文档什么的),程序员就帮你检测了,实现不了的,他会告诉你,你就可以当作经验积累起来。剧情策划(这里定义是写世界观啊什么的剧情包装的),你写的东西好不好,说实话,只有一部分玩家会看,所以,重要的在于自己的文学修养和能否说得通。打杂策划,恩,什么都会,什么都去做,那就是什么都在积累,属于高端策划,一般人干不来(这都已经达到快反部队的标准了,怎么能算是一般兵?)值策划如何打怪升级?1、PVE,你去每个游戏体验,反推公式,但注意,不是说反推出公式就可以了,这里面你需要了解的是每一个阀值在哪里,每一个参数怎么用,最终呈现跟数值变化的关系在哪里。不需要怎么去选择游戏,也不需要超大量去积累什么,就瞄准当前某个红的发紫的游戏,啃一下就是了。2、PVP,你当前已经在做了,就是要跟其他策划PK,先说的他们五体投地,再算的他们眼花缭乱,然后再让你的方案上线,交给玩家去检验(然后不是被玩家骂狗屎,就是被玩家骂傻逼,然后他们有的充钱有的不充钱,最后支持你的和反对你的达成一团,你在后面继续算公式和效率)数值策划有没有快速提升途径?天下有没有速成高手?有,那就是天赋,你看见数字就烦,一直都不喜欢理科,我觉得你今生跟数值策划的缘分就止于此了,来生再见!什么是天赋?那就是你看一眼就知道这个数值绝对有问题,瞄一下就知道这个公示不用改了就这么用,扫一下就清楚这个技能的使用才是整个出手套路的核心。这东西有个词可以定义,叫做“数值感觉”。如果你不幸真的没有天赋,那就请勤能补拙了。数值策划只是游戏制作环节的一个岗位而已,你可以将她发挥到极致,但一定要记住,再牛的数值策划,也不可能一个人做出一款游戏。数值策划的未来,跟其他游戏岗位一样,都是越做越熟练,最终指向制作人这个终极岗位,或者运营总监这个终极岗位,因为他就是一个title,而已。
推荐文章
友情链接
游戏开发者
Copyright ?
All rights reserved. 千军游戏
湘ICP备号-3 个人如何成为一个优秀的独立游戏开发者?
个人在具有编码实现的能力以及一定游戏设计的情况下,如何低成本的解决游戏开发过程需要的美术音乐资源的问题?个人的开发者如何竞争过公司,成为优秀的游戏开发者?
谢谢邀请。周末在忙着参加Ludum Dare,没来得及回答,见谅。关于第一个问题,如何在只懂编程的基础下开发游戏,必须得提到美感。在我看来,对美的理解和品位是决定一切的关键。拥有较好的美感并不能直接让你做出很好的游戏,但它能引导你去改进游戏图像音乐方面的不足之处(对于编程也有一定积极作用)。它就像是短板效应中最短的那块木板,任凭技艺再高超也无法超出它所限制的高度。还有一点需要注意的是,美感并不代表追求照片般的精细程度,讲的比较透彻。(额外加分是我知道的唯一讲述游戏开发的视频Podcast,强力推荐,每周都会有一个话题,翻译成中文的不多可以在这里找到,Youtube上有专门的频道可以订阅。)好了,进入正题,只懂编程,如何找到图像,声音资源开发游戏。选择一种自己擅长的美术风格。上面讲了优秀的游戏画面并不是一味地追求高画质,而是要能够反映作者的美感,游戏内容都应为这个目的服务,整体风格和谐统一是最基本的要求。所以即使画技不好(我认为每个人都会画画,只是水平高低不同而已),也有许多选择:几何图型:代表作。涂鸦:火柴棍人,各类涂鸦画风的游戏等。复古像素风:最近比较流行这种风格,个人认为类似于十字绣,舍得画时间最后都能得到还算不错的图片,代表当然是了。文字或ASCII游戏:虽然这种风格的黄金时期已经过去了,但还是拥有一批坚定的拥护者,代表是。简单的3D模型:代表是物理布娃娃(Ragdoll)类的游戏。照片:不一定直接使用照片,可以进行一些后期处理,是这方面的先驱。把控制权交给自己的想象力,只要能做到风格同一,任何形式都是可以的。
使用现成的资源。网络上有太多现成的资源,打包销售的,免费分享的,如果是做着玩,还可以使用商业游戏剥离出来的资源包。在使用过程中需要尊重别人的版权和相关协议,CC、GPL等。下面是一些常用的网站。 登陆了Steam的就是用的这个tileset。在Google中搜索free game assets。关于第二个问题,个人开发者如何与大公司竞争,我的看法是不用竞争,因为大家做的不是一件事。游戏公司做游戏首要目标是赚钱,而独立开发者是做出一个自己喜欢的优秀游戏。并不是说独立开发者做游戏不为钱,如果以此为生,获取利润绝对是很重要的,但独立开发者的立足根本是对游戏独到的理解,敢去尝试大公司不敢或者不愿尝试的领域,这也是玩家愿意为其买单,独立游戏越来越流行的原因。至于如何成为一个优秀的独立游戏开发者,我不能提供什么信息,因为我也在为达到这一目标努力着,期待那些优秀的开发者能够分享他们宝贵的经验。但有一点我相信他们肯定会提及,那就是不断地去做游戏。P.S. 很多优秀的独立游戏都是一个或者两个人做出来的,人多并不一定就会增加做出优秀游戏的可能性,当然如果以赚钱为目的,优势还是很明显的。 更新关于游戏设计的书不少,好的其实也就那几本,下面是我认为几本不错的及使用方法。A Theory of Fun for Game Design适合新手一开始阅读,甚至不从事游戏设计工作的人也可以读下,了解游戏是如何作用在人类大脑上的本质原理。The Art of Game Design这是一本工具书,用The Art of来冠名有点太过了,但的确是一本好书。适合有一定游戏开发经验后阅读和在游戏开发中进行查阅。优点是全面,缺点是不够深入,大部分内容都描述的现象,而不是解释其后的原因。Designing Games适合开发过游戏,也设计过游戏有经验的设计师阅读。这本书不谈具体的方法,而为设计提供指导思想,在游戏设计这个领域这本书是我看过的最好的,缺点是内容对新手会有点深,单词用得也高级些 :-)Rules of Play学院派出的,所以文风和内容都偏学术,不适合新手阅读,我第一本就看的它,都是泪 :-( ,适合在上面这些书都看过理解后作为知识体系的补充来阅读。Homo Ludens这本书的用途是用来提升从业者自信心,如果有谁瞧不起游戏,就直接告诉他“游戏是先于人类存在的,游戏塑造了人类社会。”如果他还不死心,问你怎么得到这个结论的,就告诉他Johan Huizinga说的,如果他还不死心,问这人是谁,你可以摆出一副怜悯文盲的样子,让他去多读点书。
降低成本的最好方式就是让自己变得靠谱,有吸引力。术业有专攻,如果你的想法靠谱,会吸引很多愿意与您共同完成梦想的人。中国很多牛逼游戏人人都在忙着骂别人傻逼,总喜欢单挑和pvp,鄙视团队和pve,变态心理。做好自己擅长的事,向你的队友诚意相邀,你会成功的。
简单的来说就这5点1.玩过很多游戏,知道市场的概况2.有能力设计出完整的策划,善于从生活中找灵感,善于转化灵感为完整的游戏策划3. 善于笼络人才,这年头一个人想做个像样的独立游戏是不可能的4. 要么有钱要么能融到钱5. 英语要过硬,中国没有市场,只有国外可以拼
独立开发者面临太多的挑战和不确定性如果是抛下一切做这个风险很大不如,在休息时间用UE4试试看,很多现成的案例,直接改就可以了,效果还不错。有了好DEMO,心里才能定,再决定是不是全身心投入。
可能有点儿偏题,但首先强烈推荐去看看《独立游戏大电影Indie Game: The Movie》这部记录片。独立游戏大电影的剧情简介 :
  Indie Game: The Movie 独立游戏大电影 是一部关于独立游戏的纪录片,讲述独立游戏过往的精彩故事。
  关于该电影: 随着二十一世纪的到来,新的一类独立艺术家诞生了:独立游戏开发者。他们有独立的构思,特别的设计以及个性鲜明的游戏。当然,他们也希望获得成功。 影片中,设计师 Edmund McMillen 和程序员 Tommy
Refenes 经过两年的努力,等待着他们第一款XBOX的游戏 Super Meat Boy “超级肉食男孩”
的发布。游戏讲述的是一个绷带男孩寻找女友的故事。 而在一个名为 PAX 的视频游戏展中,开发者 Phil Fish 则推出了众人翘首以盼的画了四年制作的游戏 FEZ “费兹”。 Jonathan Blow 则在考虑继 Braid “时空幻境” 之后的新游戏。而时空幻境曾一度是历史上平均最高的游戏之一。 Lisanne Pajot 和 James Swirsky 第一次共同制作了这部电影,他们精心捕捉独立游戏艺术家们奋斗历程的点点滴滴,以及其艺术表现过程中的情感历程。
  四个开发者,三款游戏,一个终极目标 ---- 通过这部纪录片共同表达了出来。作为一位普通的游戏制作参与者,在纪录片当中得去了非常大的触动。对于现在很多游戏的核心目标只是为了赚钱,再也没有了当初只是一心要做一款优秀的游戏那种单纯的纯粹的向往。或许不要将立足点放到游戏"开发“者,因为独立,几乎是独立地完成游戏,因为独立,拥有感会更加的强烈。独立游戏是私人的,表达个人情感的,是真心地想做一款自己喜欢的游戏,区别于很多公司所开发的游戏,所使用的平台、资源等规模都是不一样的。多些了解他们的一些信息,从他们身上提取你认为可用的点,如工具、资源管理等等对于自身开发独立游戏来说也是有用的。游戏本身是体验交互,终极的艺术形态。声音、画面、玩法等等都是为了游戏体验而生的,让玩家沉浸于游戏的世界当中。各个方方面面也是成为优秀独立游戏的组成因素。如果自身有想法,可以提高自己在美学的能力,自己尝试创作音乐,自己尝试设计美术,并不是说不可能的事情,只要有心,很多时候还轮不到拼天赋。自己动手更加深刻地了解你与游戏(与玩家)之间的到底还需要些什么,怎么样做更合适。结交一些志同道合的其他领域的朋友,可以共同开发自己喜欢的独立游戏也是非常好的选择。至于独立游戏开发者的生存问题、开发周期、资源成本、甚至家庭问题,情感问题也是独立游戏开发者考虑的重要的Point。以上纯属个人的思考,仅限于交流。
To be, or not to be, that is the question.其实我感兴趣的是反方向看的同一件事。一个没有编程能力的独立开发者,想要怎样的工具?我弄过一个网页mmo的开放工具,开发都是在web上进行的,专注游戏内容而不用操心底层,有台能上网的XP电脑基本就可以搭服务器,游戏资源可以用RPGMaker适配的,必须的脚本片断提供了填空式脚本帮助。还搭了一个社区以供交流…………可是由几个朋友试用后,就无限期冻结了。这过程中思索几个问题,未解决。[仅指中大型游戏]1,如何让制作游戏的过程充满乐趣与激励?商业游戏靠工资,而我提供的是个没有明确收获预期的工具。2,难度真的只是没有美术资源吗?游戏的复杂度往往超出预期很多很多。没有经历过的一个完整过程的人并不清楚自己面对的是什么。3,会做并不一定愿意做,重复的工作往往是令人丧气的。比如任务这种,量很大又没什么意思,最适合消磨开发者的斗志。4,自己想自己制作容易精神分裂。空想总是充满欢乐,开发却不能一日前里。开发过程中,想法随时可能变,大量工作面临重做。一半是不安分的设想者,一半是疲累的实现者。我自用的过程中经常遇到分裂的情况,大把时间就丧失在纠结中。如今我还会想象业余时间去做个乐闻乐见的工具,但是从以前把用户当作一个游戏制作者来考虑,转而当作游戏玩家来考虑。额~随便码了个两头不搭的回答~题主包涵。我不是独立游戏开发者,只是向往过与旁观。无法解答这个问题,那就来添乱吧~
非常感谢矩阵的回答,和我的看法十分相似,所谓“美”的提升决定了这个游戏的人文气息。而独立游戏在优秀的游戏性之上,人文气息可以说是最关键的因素。在此给楼主一点实际性可操作较强的建议,一些是我做同人创作时得到的经验,应该绝对能够满足低成本的要求。首先是绘师,在微博或者pixiv,da上有很多活跃的业余插画师,可能也有一部分的专业职人,与他们广交朋友,当有人对你的企划有兴趣时,就有希望能够帮助你完成创作。有相当一部分非常厉害的插画师对报酬并不敏感,你需要做的时提起他们的兴趣以及用你的诚意告诉他们你确实要打造“美”。用同样的方法可以招募写手,其中有很多是参与过文字冒险类游戏的剧本的。当然,用接近同人创作的方式招募创作成员有风险也需要土地基础。这里只是谈谈我个人的小经验,至少在同人创作中这种集众人智慧的方式能高效低成本地完成你的目标。总之…只靠自己是不行的,除非你是像zun那种能够轻易地描绘出一个完全不可复制的迷人世界的家伙。
找一个美术女朋友,这个真心不是和你开玩笑的。
对这个问题有很大的兴趣,原因在于自己也在寻找***。我对这个问题有一些理解,在最初自己刚学会制作游戏的时候,曾经写过两款2D游戏(也许应该称作demo,可玩性低的离谱),过程分享一下:制作之前想着所有的图片资源都去网上找,制作完了才发现网上的资源都不能直接用,要自己花大量的时间去改(在这之前我不会用PS,其实现在也不太会用,自己拼动画的每一帧,用剪切的方块一块一块挪动调整的,结果可想而知,画面很烂,但过程很好玩,就是浪费时间)。制作之前想着尽量写成插件式可扩展的框架,制作完了才发现把第一款游戏的框架用到下一框游戏还是不行,要改好多东西,没达到想要的效果。制作之前想着要结合以前玩过的FC游戏设计一些有意思的关卡,制作完了才发现后边越做越心急,关卡根本就没有。。。。。。其实这俩2D游戏都没有写完,还可以继续写,现在我更多的时间都用到3D上边了,也许哪天心血来潮会继续写。我认为独立游戏开发的人一定要是一个全才,短板一定会有,但是可以想办法提高。提高到什么程度由你的兴趣决定。在国内直接去独立开发游戏代价太大,尤其是面对生活有压力的人而言更危险(你总的先活下去吧或者你总得让对你有依赖的家人有饭吃吧)。我更喜欢用其他的时间去做,包括年假、春节、平时夜深人静的时候等等。这样带来的后果就是写出一款真正能玩的游戏会需要非常非常长的时间,基本上卖钱不太可能,况且国内的环境非常不适合独立开发者(包括推广、宣传平台等等)。但自己去做导演导一部给自己看的片,又何尝不可。玩呗!
一个好的游戏是从一个好的玩法开始~
已有帐号?
无法登录?
社交帐号登录游戏程序员的基本要求_百度知道想从事游戏开发,1 年内能精通 C++ 吗,还需要学习什么?
【MiloYip的回答(383票)】:
本人大约从20多年前开始学习及使用C++,但仍未达到我认为「精通」的阶段,甚至对于C++11的各种新特性也未掌握。然而因为我是在读书时自学C++的,也是游戏程序员(原问题中提到题主想从事),觉得也许能提供一点意见供网友参考。
首先引一下2010年8月号《程序员》刊登的拙文《》最后一段:
C++学习建议
C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本K&R即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点学习心得。个人认为,学习C++可分为4个层次:第一层次,C++基础:挑选一本入门书籍,如、、或Stroustrup撰写的经典或他一年半前的新作,而一般C++课程也止于此,另外及可供参考;第二层次,正确高效地使用C++:此层次开始必须自修,阅读过《()》、《()》、及等,才适宜踏入专业C++开发之路;第三层次,深入了解C++:关于全局问题可读、、、,要挑战智商,可看关于模版及模版元编程的书籍如、、;第四层次,研究C++:阅读、(含STL设计背后的数学根基)、C++标准文件、的提案书和报告书、关于C++的学术文献。
由于我主要是应用C++,大约只停留于第二、三个层次。然而,C++只是软件开发的一环而已,单凭语言并不能应付业务和工程上的问题。建议读者不要强求几年内“彻底学会C++的知识”,到达第二层左右便从工作实战中汲取经验,有兴趣才慢慢继续学习更高层次的知识。虽然学习C++有难度,但也是相当有趣且有满足感的。
如果题主认为的「精通」是指上述所指的第二层次,那么我估计一年全职时间也未足够「精通」。首先,阅读这些书籍本身也需要不少时间,而且对于一般人来说(指除了一些学习记忆能力超强的人),很可能需要阅读几遍才能记住一些细节。另外,阅读后必须要练习。除了入门的习题外,还需要做一些工程向的项目,才能了解各种语法、编程范式的使用方法及时机,理想地建议参与一些开源项目。然而,学习是需要不断思考并把结果沉淀,方法包括与朋友讨论、写博客、写知乎***等,这些都需要时间。
如引文末段所指出,我建议不要把「精通C++」作为一个一年目标,应该要把学习语言作为一个持续的过程,同时要把语言运用在具体的应用场合中。
---------------------------------------------------
再讨论C++与游戏开发。
看到有不少***讨论到有关C++是否游戏开发者所必须的技术。我认为,这并不是完全必须的,但许多游戏开发项目需要到C++。以下列举一些过往曾流行的游戏平台/类型:
PC单机游戏(Windows)PC网络游戏(Windows、Linux)移动平台游戏(J2ME、Symbian、Palm……)家用游戏机游戏(PS1/2/3/4、XBox、Wii……)掌上游戏机游戏(GB、GBA、NDS、PSP……)网页游戏(HTML、Flash)智能移动设备游戏(iOS、Android)我们会发现,除了J2ME和网页游戏外,大多数的平台都支持(或只支持)原生编程。而原生编程最常用的就是C/C++和汇编。这种现象并不难解译,再次引用拙文:
应否选择C++
哪些程序适宜使用C++?
C++并非万能丹,我按经验举出一些C++的适用时机。C++适合构造程序中需求较稳定的部分,需求变化较大的部分可使用脚本语言;程序须尽量发挥硬件的最高性能,且性能瓶颈在于CPU和内存;程序须频繁地与操作系统或硬件沟通;程序必须使用C++框架/库,如大部分游戏引擎(如Unreal/Source)及中间件(如Havok/FMOD),虽然有些C++库提供其他语言的绑定,但通常原生的API性能最好、最新;项目中某个目标平台只提供C++编译器的支持。
按应用领域来说,C++适用于开发服务器软件、桌面应用、游戏、实时系统、高性能计算、嵌入式系统等。
很大程度上,游戏──或说游戏引擎,都是C++非常适合的应用时机。
一些人认为,游戏开发者使用现成的引擎,就不需要使用C++了。过往,业界有一个普遍常识,就是用C++开发游戏引擎,而游戏引擎提供脚本引擎供编写游戏逻辑代码。但这个观点被Unreal Engine 4的决策改变,UE4放弃了维护多年且被大量使用的UnrealScript脚本语言,而改用原生C++作为游戏逻辑编程的语言。此决策背后有多个原因,但这里只想举出这例子展示C++在游戏开发中的用途及潮流,具体原因分析就不详细展开了。
除了自行研发游戏引擎需要使用C++,我们可以看到,大部分游戏引擎都提供了其C++原代码(Unity算是例外),这让我们可以
方便调试游戏深度剖析、优化游戏的性能为引擎扩展新功能修改现有引擎以适应项目所需在专业的游戏开发中,这些都是很常见的工作任务。所以,即使并非自研引擎,并使用脚本语言开发游戏逻辑,也有很多机会需要使用C++。
最后,「还需学习什么」是一个很难简单回答的问题,因为游戏开发涉及的知识面很广。建议可参考本人译作。
【毛星云的回答(248票)】:
功利性太强的高票***!
这是在把一个能成为业界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,间接地邀请,让我知道有这个讨论存在:)
总之,最后的最后,还是那个抉择:
你是愿意就这样学点皮毛混口饭吃随波逐流,还是成为真正的游戏开发业界顶尖技术大牛,推动业界的发展,去改变世界?
在二十几岁这段人生可塑性最强的时光里,我们应该是满怀信心,志向高远,想让自己与这个急功近利、日渐扭曲世界有所不同的吧。
【kubisoft的回答(135票)】:
题主本来问得很糊涂,不知道到底是问游戏开发呢,还是如何学习c++。再说一遍结论吧,游戏开发和c++的学习是两个方向,做游戏开发现在基本上不需要学习c++。以前做游戏开发不得不用c++但是现在已经越来越少,以后还会更少,所以花大力气去学c++对以后做游戏开发没有多大帮助。
有人提到了java, 其实java又不是用来做游戏的,也从来不算脚本语言。
在此将c++和c#、javascript之类的脚本语言做一些简单的对比吧,我的c++水平很低,遗漏之处难免,欢迎指正。
内存管理: c++的代码容易产生隐藏的野指针等不容易发觉的内存管理问题,而且不一定会爆,调试有点困难。有人觉得这是水平不高的表现,心想,只要成对申请/释放内存就可以了嘛!其实,我以前也是这么想的,后来发现不是这样...... 实际项目会非常复杂,很多时候到底谁应该拥有这个对象、谁应该负责申请谁应该负责释放很难界定,而使用c++就必须做出这样的界定,导致有的算法必须绕弯子,写不少冗余代码专门管理内存。
回调的时候用的闭包:这一点,用objective c就比c++方便很多了,回调的代码可以跟调用的代码紧挨在一起书写,而用c++的时候不得不在类里面另开方法,写起来很蛋疼,名字难起还在其次,参数传输完全要靠成员变量或者void*, 然后强制类型转换。这样也能写,但是可读性就差了很多,维护困难。
unity给c#提供了协程,用起来跟线程差不多但是不用考虑加锁解锁等问题,真心方便。
几个脚本语言大多有map, filter等等函数式编程的特性,考虑问题更加整体,代码量会小很多,也更难出错。
--------------------------
呵呵居然冒出一个高票长***,吓我一跳啊。不喜欢跟别人辩论,说下去没完没了啦,只是看到“倚老卖老”之类的人身攻击的字样还是很不开心吧。这也就算了,居然我被说成“压榨IT民工”,这个真让人伤心啊。我忍住,无视。后面写的东西,还是给旁观者看的吧,希望能多帮到一些人。
游戏不仅是技术,要发现更大的世界的话要开阔视野的话就不要沉迷于c++的技术细节啊。要做出有创意的与众不同的游戏,也是要靠快速实现游戏逻辑然后快速迭代,多跟策划沟通啊。如何快呢?就要在能够避开c++的地方尽量避开啊。
c++还是很有用的,比如cocos2d-x目前还是很依赖c++;效率不够的地方也必须用c++来改写,以进行优化。不过以后随着硬件性能的提升,c++的应用范围会萎缩很多,只专注c++的程序员很容易被孤立的,空间会越来越小。
----------
关于批评我c++水平的部分不予答复。关于后面一部分,工程越大越体现出脚本的优势,c++的代码结构太容易混乱了。
c++更面向机器,更考虑运行效率,为了运行效率不得不牺牲可读性,大部分脚本在这方面就强得多,牺牲了运行效率换取了可读性。
至于java, java的开发效率同样是被人骂得要死的,而且很少有人打算用java做游戏吧,哪个引擎支持?
-------------------------以下是原***--------------------
想做游戏开发根本就不需要精通c++,根本就是南辕北辙。
你应该挑一个引擎熟悉起来,3d就用unity,2d就用cocos2d。unity支持c#和javascript,这两门语言你可以任意学,只要能做出自己想要的游戏;cocos2d也是支持javascript和lua,能避开c++就避开,c++的运行效率高而开发效率极低,学起来很累用起来更累,你要是专心学好了c++,作为老板我还真不敢要呢,精通c++可能意味着过于重视运行效率而开发效率低,视野窄,业务沟通困难,工资要的很高很高也喜欢埋头钻研,但我要的东西就是很久出不来!
别听他们的,我是工作十几年做游戏带项目也都超过十年的人了,c++ objective c java javascript flash c# unreal unity cocos2d ruby on rails都用过,他们自己也只是学生,答题时还是自己想象的成分居多!
---------------
题主想好了是要学好c++还是学做游戏,还是要做游戏引擎。
做游戏引擎可以参考另一个问题,手机党不方便引用了,大体上是“游戏公司开发自研引擎还有意义么?”
以前做游戏是只能用c++的,以前基本上不管做什么都必须精通c/c++。现在不是,现在大部分领域都有更合适的语言可以选择,做起来效率更高。
脚本不只是做gameplay,所有部分都可以用脚本去做,包括各种画面特效。特效其实大部分是美工的活,程序员去认真考虑如何集成进来,如何在合适的地方调用,而不是写代码去取代美工。粒子特效,模型,贴图,你不用脚本你用c++,除了多写不少代码、多去自己管理内存调试野指针之外又能得到什么呢?渲染,那是shader,也不是c++。那么AI,是否只能用c++了呢?当然不是,否则epic搞那个unrealscript干嘛?
【王选易的回答(58票)】:
本来都不想更新了,但是其他人回答的都太不靠谱了,其他人都是在说怎么当以个游戏逻辑开发人员,但是你作为一个游戏引擎开发人员,你不会C++能行吗?
游戏开发不止有一个开发游戏这一领域的。
为什么不认真读题!!
-----------------Update-----------------
先回答你的第一个问题,一年是不能精通C++的,但是能熟悉C++的,并且用C++做出一些Demo甚至一些游戏。但其实题主不是想问多长时间能学会游戏开发中的C++吧?楼主想问的是如何进入游戏开发这个圈子,所以我要反对一下
的短***了。
不管怎么说,还是要欢迎你来到的世界,游戏编程是编程中最小众的领域。你身边的同学可能有许多的人都会各种前台开发,后台开发或者ACM算法,但是做过游戏的人可以说用一个手掌就能数过来了。
但是很巧合的是,我是个大三的学生,而且我现在做游戏开发,那么我的经验对你来说有些价值。
然后我再尝试着回答第二个问题。游戏开发还需要学些什么?
首先,题主要做的是学好C++,为什么这么说呢?因为不管是现在的图形引擎(如OpenGL)还是游戏制作引擎(如Cocos2d-x)都是把C++作为主力语言的。
那么,我就先推荐几本C++的入门书籍吧:
楼主可以按照顺序依次看下来,由于都是我看过的书,我可以完全保证这些书的质量!
接下来,楼主可以去 , 这些网站刷一些算法题,毕竟光说不练肯定是不行的 =_=。
接着,摆在题主面前的是两条不同的发展路线
Gameplay Programmer(游戏型程序员)Graphics Programmer(图形程序员) Gameplay程序员适合游戏策划紧密合作的一种程序员,他们会编写游戏中的主要逻辑,为策划提供关卡编辑工具,第一时间测试并玩到最新的游戏。
由于Gameplay主要集中于游戏逻辑的编写,在这一块,我的经验是最好从使用一个游戏引擎开始,考虑到你的C++和程序员背景,推荐你使用Cocos2d-x这个游戏引擎,下面是这个引擎的网址。
游戏逻辑部分,你需要理解游戏中的场景管理,资源管理,状态机,AI和网络这些模块的编写。具体的操作可以查看我的这个***:
另一种是Graphics Programmer,或者说是Engine Programmer,他们是给程序员写程序的程序员(有点绕口啊=O=)。这部分你需要学习的是OpenGL和ORGE等等
首先,你要学习的是OpenGL,首先我们要看的当然是这个红宝书了!
然后,就是读一些OGRE的源码了,国内的许多“自研引擎”就是通过ORGE做出来的,所以,作为一个Graphics Programmer读这个引擎的源码是非常必要的
最后呢?我们不管是当那种程序员,我们最终都是要做出项目的。
如果你是图形程序员,那么最好的项目就是,自己做一个游戏引擎
如果你是Gameplay Programmer,那么最好的项目j就是,自己做一个游戏项目
比如说我最近做个一个Demo类型的游戏项目:
那么,题主你准备好加入游戏程序员的行列了吗?=w=
【伍一峰的回答(30票)】:
谢谢邀请:)
前辈都答得很好。
这个问题有点像剑宗和气宗。
游戏开发就是耍剑,耍剑耍得好看了,观众就会赏钱。
学习气宗,虽然能让你握剑更加有力,耍上一天一夜也不喘气,还能夹带一些紫气,但对于耍剑来说,无关好不好看。精通了C++,然后呢?和游戏一点关系都没有。因为耍剑不单讲气,最重要是讲艺。
因此,自然是剑宗更加有效更加贴切。游戏开发里面有很多field specific的知识和技能,虽相似,但和软件开发仍然不能一概而论。更别以为学好游戏开发的知识容易,其实路途同样艰难,只是难的地方不一样。
那么游戏开发来说,剑宗和气宗是不是就一定不兼容呢?也不是。有时候,你需要一些特别的机制或者特别的效果,前人可能没有实现过,又无法从美术方面下手或者修改设计,就需要你有扎实的编程基础来实现它。像游戏引擎就是这样,想要更漂亮的画面、更好的运行效率、更方便的工作流程,才会推动引擎发展。但游戏都没做过,又怎知道现有技术不能支撑你所想所要呢?精通C++又解决了什么问题呢?
举个例子,今年IGF学生组的最佳游戏,The Risk of Rain,我一看,那么精致的画面、出色的手感、完善的机制,绝对是不简单啊,一看开发者,竟是华盛顿大学机械专业和商学专业的两位年轻人开发的,用的还是GameMaker。
从此我豁然开朗,游戏开发就是耍剑,耍得好看才有饭吃,哪怕你华山掌门人。
------------------Update 1------------------
这个问题能引起那么多不同意见,很有意思。
重新浏览了一遍大家的***,主要有两种见解。
一方是正好是我说的剑宗,主张一开始就以游戏开发相关知识为主要学习方向;
另一方是气宗,主张一开始以计算机底层知识为主要学习方向。
而C++则是这一题目里两方主张的矛盾的外在表现。
正如我***的主体部分,我个人比较偏向剑宗。
一个原因是我没有进过AAA的大公司,以往两次实习都是在独立游戏公司,他们的氛围都是以快速实现为主要目的。
所以我也耳濡目染,将实现视为游戏开发当中最重要的东西。
因此我较为主张初学游戏开发的话,也以实现为目的,比方说,选一款引擎,不断地制作游戏。在这一个过程当中,我们会不断地接触到新的知识:
一开始,我们在Update里面写代码,我们接触到了Game Loop,
我们创建角色图像,接触到Sprite的概念,
我们想用键盘控制角色移动,我们接触到了Input System,
我们想让角色跳跃,接触到了Physics Engine的概念,等等等等...
现在我们对Game Loop有了了解,对Physics Engine有了了解,知道它们在游戏中的作用,那么对我们学习这些领域,是有莫大好处的。
正如最近关于很火的“设计模式”问答,现在的观点主要是“你得遇到问题了,才真正懂得某一个模式的好处”。我觉得关于游戏开发的学习,也是这样的。
当然,我不会说哪位在座哪位老师的意见是错的,因为游戏开发本身就是一个新生学科,甚至连学科也称不上,自然没有对的和错的路。
【徐奕成的回答(22票)】:
我觉得可以过来再更新一次了。
/*****************************************以下内容可以跳过*****************************************/
我说一下我做游戏的历程吧,二年级的时候(我出生于1991.11)我开始接触电脑,当时对电脑的画图工具很痴迷,为什么画图工具能够做出这么好看的东西。所以我对这些所见即所得的东西非常着迷,因为我觉得很容易就开发出来一个东西炫耀。
后来四年级时候,我的父母有接触一个游戏叫《传奇》,我在他们没在家的时候偷偷创建了一个帐号,体验了十五分钟(没错小学生就是我),觉得游戏真的很吸引人,我是父母在我从小禁止玩游戏的,所以我没有接触过任何游戏,包括红白机,这应该也是很多人的童年。在那时候,我的梦想就是未来能够做游戏设计师,做一个全世界的人都喜欢的游戏。
慢慢CCTV某一个频道有一个栏目是一个教授开始了解有一样东西叫做powerpoint 2000.我开始拉一些图片进来,做了一个小游戏,你没看错,是ppt做了一个小游戏,是类似大逃杀的游戏。点一下进一个地点,有了最原始的交互。
从初一的时候,我知道了有一个东西叫做VB,我也尝试用VB写程序。同时开始学习一个编程语言叫C,那时候我果断抛弃了C,因为VB真的很容易做出一个窗口,然后写一个helloworld拿出去炫耀。
兴趣是最好的老师,我爸妈说学好这些东西就可以做游戏了。我就开始认认真真学C语言,当时效率也很高,我现在一直觉得我在吃老本。。学C的基本概念,用控制台做一个打飞机游戏,做一个RPG游戏,类似于。
再到了高中,开始用VC++6来开发一些win32小游戏,我觉得把游戏做好是一种使命,那时候也知道了国内著名的工作室:西山居1995 完美时空 2004 琳琅天上2004.
我的心愿就是加入他们,成为真正的游戏开发者。
后来到大学,我学计算机图形学,数据结构,自学编译原理,汇编语言。才发现原本单纯的梦想发现是不可实现的,我不可能做出每个人都喜欢的游戏,就开始学习游戏引擎制作。如果你希望能够从事引擎开发,我推荐叶劲峰 @Milo Yip 大神的《游戏引擎架构》一书。
直到现在,我如愿以偿,成为了居士,开发游戏引擎。这不是一年两年能决定的,如果你要做程序,真的要多积累了。
/*****************************************以下内容可以跳过*****************************************/
从始至终,我是抱着一种使命来学习,来努力,来做游戏的。当时面试的时候,面试官问我,你为什么要做游戏,我说:“我一生就为了做游戏,生活能够过得去就行。”我现在也觉得,我如果不做游戏,我还能做什么(我现在很局限了,眼界很窄)。
我最近学校的课程是要用Objective-C开发游戏,我从来没有学过oc语言,但是我并不觉得他特别的难,相反,我觉得他很容易上手开发iOS应用,因为有C++的积累,我可能不知道具体的语法或者用法还有API,但是我可以通过C++来融会贯通。
C++是一种潜移默化的东西,当你了解他之后,你学什么都会容易,觉得简单。
所以,C++是重中之重!!!
吐槽完毕。。只有20个赞,第一次这么认真回答的说。 T_T
/*****************************************这是之前的回答*****************************************/
我不请自来了,因为我发现在这里面回答的人都在回答:“我想做游戏开发,难吗?”,而不是回答“我想从事游戏开发,一年内能精通C++吗?”。无视题主的提问,实在忍不住。
对于题主的提问,我比较赞同
的*** ,也许大家都是技术人员并且也在大学中学习游戏开发。
首先我回答题主的问题,作为大二即将升大三的学生,由于你大一大二忙于社团活动。以致于你可能错过了大学中打基础的黄金时期,大三的一个学年里面,除去你的课程时间,能够继续深入学习C++的时间也许并不多。所以,一年内你说可以精通C++,我觉得不可能。
我现在大三,从初一开始学习C++,对这些有一定的了解,也有一定的发言权。但是我从来不敢说我精通了C++。因为我的主管,他是15岁开始学习C语言,现在学习C++已经超过20年。但是他对于技术非常的谦逊,抱着学习的心态去学习技术,也没在我们面前提过他精通C++。即使他已经是国内行业的领军人物。
说一下精通C++这个吧,其实精通这个词真的很大争议,至少在许多的社区都有人对这两个字吵的不亦乐乎,那么我来和你说一下熟悉的概念吧:
我觉得熟悉C++,至少要能够做到这些:
1、你完整阅读过C++ Primer 第五版之后的书,这本书可谓是C++程序员入门必读的书。(为什么我推荐第五版之后,因为第五版之后包涵的内容是C++11标准的内容,你现在重拾编程语言,那么推荐你看新的书)
2、你能够对面向对象编程有明确的概念。因为现在许多程序员用着面向对象语言,却做着面向过程的事情。
3、能够利用C++配合DirectX或者OpenGL来制作Windows小游戏。
4、对数据结构有一定的认识,能够准确针对问题选择你的数据结构。
5、其他内容一下子没想到这么多,等以后更新。
至于精通,精通C++不仅仅是C++的语法,还有编译的原理,那么又涉及到编译原理,还有计算机的组成原理。调试的时候,当你用release的调试,你又需要汇编语言的知识,又涉及到汇编语言。再后来你需要设计比较大型的程序,你要对数据结构,和设计模式有一定的认识。
再回答下一个问题:你希望从事游戏开发工作,做游戏其实不仅仅是看着最近火热,而是你要从一开始就对有游戏有接近疯狂的热爱,把做好一款游戏当做你的使命,你才有动力继续学习。因为程序学习起来非常枯燥。
至于你最后的问题:
你需要学习其他什么,我觉得其实你需要做游戏,不一定是C++,你可以选择另一个语言比如Objective-C开发iOS的游戏,或者学习C#,可以开发wp8或者xBox的游戏。
如果你单纯是做游戏,语言并不是问题,问题是你对其他知识的了解程度和对游戏行业的热爱,为了工作而工作可能并不会让你充满满足感与激情。
其他的知识:
计算机图形学
至于苦逼软件的作者的回答,我反对,并且我认为这不是合适的***。
不是所有的人会为你“工作十几年游戏项目超过十年而买单。”
---------------------以下逐个写下来得罪人---------------------
“想做游戏开发根本不需要精通C++,根本就是南辕北辙。”
》游戏开发不需要精通C++,甚至说不需要会C++,但是你至少要熟悉任何一门开发语言,并且充分了解数据结构。这根本不是南辕北辙,而是取向问题。
“挑一个引擎熟悉起来”
》这是我看到最不负责任的回答,这位同学问的是未来的路,现在让一个学生直接选一个引擎,没有错,这样可以让他更容易找到小公司,但是会使用,不懂一个引擎的原理,在日新月异的今天,公司换了一个引擎,要重新去学习,如果掌握最基础的东西,那么无论任何引擎,都可以迅速上手。
“游戏开发就是耍剑,耍得好看才有饭吃”
》游戏开发实质就是程序员不仅要练剑,也要练气。
ps:以上纯属个人观点。
【vczh的回答(17票)】:
说得对,想做游戏开发根本就不需要精通c++,根本就是南辕北辙。不过理由我跟他不一样。就算你的志向是开发crysis这样的游戏,其实也只需要用到C++的一小部分就够了。C++各种范式是发明来解决所有问题的,游戏只是其中的冰山一角,你没必要精通,没必要学会C++的所有部分。
可以参考我的这个回答
【知乎用户的回答(11票)】:
/* update */
俨然成了站队帖了。
一句话,想做独立游戏,请看顶楼几位;想以游戏开发作为一份职业,请看我的和 的***。
ps,题主问的是怎么学C++,那么多人在那空树个靶子乱打是几个意思?
////////////////////////////////////////////////////
/* update*/
被点了好多反对+没有帮助么o(?□?)o
之前手机上的,回答了题主第一个问题,现在试着回答下第二个问题。建议题主修改下问题,把精通改成掌握,免得问题被偏向题主不愿看到的方向,「精通C++」一直都是一个很无聊的槽点,吐槽的人和被吐槽的人都很无聊。
翻译一下,可能这样问比较合适:
如何用一年的时间在C++天赋上加点?
如果说阅读一遍《C++ Primer》是根节点的话,接下来的天赋点只有这样两种类型:
1. 继续阅读C++相关书籍
整明白《C++ Primer》,对C++有一个感性的认识之后,你可以去看侯捷翻译/写的几本书比如Effective系列、《STL源码剖析》,甚至对于没什么人用的MFC,你也可以看下《MFC九(shen)浅(ru)一(qian)深(chu)》,看下上个世纪的业界的C++程序员都是怎么样来用C++这门语言的。然后,可以看看《Inside C++ Object Model》,深入理解下C++。然后,对C++已经有了一个理性的认识之后,就可以再拿回来《C++ Primer》,顺便再翻翻《Thinking In C++》,查查C++标准什么的,仔细琢磨琢磨自己究竟能用C++干什么。至于模板元、FP什么的,题主看完这些书自然会知道自己有没有兴趣接触的。
题主说想从事游戏开发等工作,那我就大胆揣测一下,题主并不是想做一名独立开发者,而是打算以死程作为职业生涯的第一份职业。
这样,做项目的话就需要多一点针对性。想要有快速产出结果的项目,你可以先用D3D写个小玩具,随便复刻一下你记忆中的FC游戏即可。想要接触OOP,那就找几个小伙伴,想办法参加个软件比赛,做个代码量至少上万的项目,语言不仅限于C++。这样你才能不会觉得书上那些OOP啊泛型啊都是扯的有的没的。做项目的时候写代码写累了,翻翻《设计模式》之类的书。没错,我没把读《设计模式》算作「阅读C++相关书籍」。
////////////////////////////////////////////////////
不能精通。
【Aaronluo的回答(8票)】:
反对目前第一@Kubisoft的说法,题主还是学生,别用压榨it民工的想法来教导!题主可以从cocos2dx和unity3d开始学游戏开发,但是,如果想一直做编程,请别忘了必须同时修炼c++, 因为它可以给你认识到真正的编程,让你懂得更多计算机编程思想,以后就算不写c++也可以迅速了解别的语言,别的工具的~而不会变成仅仅依靠IDE工具,随便抄抄别人代码,完成山寨程序的It民工
【WuJohnny的回答(6票)】:
我觉得学习c语言会更合适一些。可以避开c++的语法陷阱,又能够快速地书写程序了解指针,内存管理,io以及字符串的操作真谛。
通过6个月左右的c语言学习后,可以考虑学习一些面向对象的语言和lisp语系的语言,例如python和lua。这大概需要3个月左右的时间。这期间可以阅读一些优秀的代码,我推荐学习的源码有两个,一个是lua的源码,一个是vim的源码。这两者都能提高你对计算机底层系统对内存管理,以及字符串处理的理解。并且对函数指针有一个深刻的认识。
最后3个月可以试试采用c和lua结合的方式去实现一个简单功能的程序。
恭喜你,毕业了!你也许还不懂图形渲染,不那么理解gpu,不懂得网络通讯,多线程,操作系统和其他计算机科学知识。只是初略对cpu,内存和文件存储有所了解,但这已经不妨碍你成为一名合格的程序员甚至游戏程序员。由于你的选择,你避开了c++学习过程中的诸多陷阱,直接用一门简单的系统级语言c快速地理解了计算机程序的真谛。这比你学会使用c++更重要,也为你今后的发展铺下了坚实的基础。
【JinHan的回答(2票)】:
1年肯定无法“精通”,但是如果认真学能让你基本了解这玩意是个怎么回事,而且最关键的,能够帮助你进入游戏的行业。
上面各种大神的回答,居然milo大神都炸出来了,虽然都很有道理但是我觉得***依然因人而异。
这个东西没有什么***,而更加取决于你想做什么。
你想成为一个程序员,还是更想成为一个游戏开发者,游戏设计师或者,或是只是喜欢游戏而想呆在游戏的圈子里。。。
游戏是一个很大的产业,每个环节都是可以做到最大最强从而改变世界的,而且每个环节都是密不可分没有什么孰优孰劣的。
上面不少回答角度是从资深程序员的角度来说的,但我个人认为开发一个好的游戏编程技术的重要性其实并不是最最重要的。美工,设定,故事背景,营销和项目管理方面都是非常重要的环节,相比之下程序的重要性有的时候并没有想象的那么重要。 这也是为什么很多人认为不懂编程也能做游戏的原因。有的游戏比如卡牌游戏,甚至不需要任何程序。
并且另一方面,对于玩家来说,他们只知道这个游戏是不是好玩,爱不爱玩,对于用的什么引擎,
你c++写的多厉害根本都是没有直接影响的。比如说minecraft这样的游戏也没有用到高大上的引擎,dota这样风靡世界的游戏当初也是用的魔兽争霸编辑器那个自带的脚本编辑器完成的。
另外涉及到游戏引擎的方面,也并不是如某些人所说,直接用别人的引擎的人就没有任何技术含量的。
第一,为自己的游戏开发专用的游戏引擎其实也并没有那么困难,只是涉及到的知识和需要的编程技术基础比较高,而且通常没有绝对的必要性,所以做的人不多,就好像你想盖房子会自己去造吊车吗。所以以上说国内游戏开发不好是因为没有好的吊车其实是不对的。
第二,往往大家把游戏引擎和好的游戏画面联系在一起,但其实好的游戏画面并不由引擎决定,就好像photoshop是一个创建图片的工具,但是有的人能用ps创造出惊人的作品,而有的人只能胡乱的涂鸦,同样的工具而最后产生的效果也可能是完全不同的。现在无论什么游戏引擎大部分都是基于当前已有的dx或者opengl图形渲染技术,就算某个引擎能够同时渲染更多的多边形,也不能代表其画面效果好,因为这些其实是取决于使用引擎的艺术家和技术美工的。当然如果一个游戏引擎的编辑工具非常的aritst friendly,对于画面的提升帮助是很大的。(于是问题便从开发游戏引擎变成了开发游戏引擎编辑工具)
第三,如何巧妙的利用游戏引擎也是一个非常有技术的事情,比如dota用的魔兽地图编辑器,弱到连让一个单位眩晕固定的秒数的功能都没有,所有的眩晕都是要靠创建一个隐藏的单位向敌人丢出一个隐藏的风暴之锤来实现的,即便如此,别人还是做出了一个非常成功的游戏。这样巧妙的利用一个引擎的各种功能,从而达到自己的设计目的,也是非常有技术含量的一件事情。在我眼里他们这些游戏程序员的工作并没有这些引擎程序员的工作低级,歧视他们的技术含量是可笑的。
另一方面,技术大部分的时候是因为需求而生的,比如我的游戏需要一个特殊的效果从而能够过表现某种艺术效果,但目前的市面上的引擎没有这样的功能(比如我想要我的游戏里任何东西都和果冻一样,并且有物理的效果), 那么这个时候熟练C++编程能力就变得非常的重要,因为涉及到修改原引擎功能的二次开发往往是使用c++的,并且对于各种优化的要求相当的高。(当然如果做不到,那么巧妙的修改设计方案避开这是永远存在的解决的办法,当然结果也是这将使得游戏变得平庸)
但是总的来说,花一年时间尽可能深入的学习c++是十分必要的,即使你今后不使用c++作为自己的编程工具。因为c++是目前大部分编程语言的基础,了解这些细节对于今后快速掌握另一种语言也是非常有益的,我c++水平不是大神,但我也能做到在从来没有看过任何java/c#的书籍的情况下看懂大段的java/C#代码并且自己写出一些常用的功能。
如果真的想从事游戏行业,在学习c++之外更重要的是,你需要尽早开始着手做一个你想做的游戏,无论多差先做出原形来,无论用什么样的办法多落后的技术,在中间你还会学到无数编程之外的东西。编程这个东西,一旦编程技术达到一定的水平,剩下的在编程语言之外的思想才是更重要的,就好像有的人写作的词汇特别的美,语法特别的对,但是内容空洞无力的话也是没有任何价值的。
【赵丙峰的回答(2票)】:
如果“精通”的含义是了解C++所有的方方面面,甚至编译器实现细节。那么肯定不会有这样人的。并不是你不能成为这样的人,而是完全没有必要。这个意义上讲,我从来不推荐阅读《深入C++对象模型》这样的书。这并不能使你建立真正的面向对象的概念,反而容易误导你这样才是实现面向对象概念的唯一方法(可能是最有效的一种而已)。
如果把“精通”定义为可以熟练地使用C++来构造具有扩展性的框架或者应用,满足时间和容量上的要求。上面回答问题的有不少人应该可以达到。
在如果把“精通”定义为使用基本的C++构造来克服程序实现中的种种必然或者偶然的复杂性,那么精通C++所需要理解的知识点并不是很多。最基本的,准确理解RAII概念并且可以有效使用之以及理解基于异常的错误管理是成为一个合格C++程序员的必要条件。楼上流出的几乎所有的书都会涉及这两个概念,但是深入介绍并且融会贯通的没有。当Google的的C++规范还没当作圣经膜拜的时候,可以理解大多数的C++程序员并不合格。
并不是这些程序员不够努力。C++程序员是最努力的程序员之一,因为C++的书太多了。C++的面也太广了。这样导致的一个后果就是大量的时间被浪费了,同时形成了一个无法精通C++的“神话”。
除非你是语言律师,你无需“精通”C++;
除非你的编译器的实现者,你无需“精通”C++;
除非你是编译器的测试者,你无需“精通”C++;
除非你是语言规范的修订这,你无需“精通”C++;
计算机世界最强大的武器就是抽象。你要精通的是使用C++的构造来模拟并且建立抽象。这里面涉及的更多是接口设计问题。
涉及到接口,不能不提到类型。我们都知道C++是静态强类型的语言。但是这个强类型是不完全的。你能知道C++标准库里的很多代码都是为了修正这个不完全的强类型系统的辅助代码吗?C++的面向对象中有一个概念叫做多态。据说是在运行时决定以指针或者引用调用的函数具体是那个,但是你知道所有这些都在编译时就决定了吗?理解类型系统,并且熟悉其功用是进一步的要求。有了这个基础,算法和容器分离的STL设计是自然而然的结果。
可组合性是组件的更高要求。这个深入了,你得到的是类似Monad的东西。C++的未来就是这个方向,因为这使得C++代码可以极好地横向扩展。
能依次掌握,理解,并且运用上述概念,并且能把这些概念映射到C++之中,虽然不能说是精通C++,也可以说是稀缺的C++程序员。
这样的程序员,有多少,要多少!
【HuayongXu的回答(1票)】:
首先说,不能,精通一门语言要由内而外,你必须知道你写的代码到底在机器中是怎样去运行的,在内存中是怎样的状态,生命周期怎么样,这样你写出来的代码才是高效可用的,而不仅仅是能跑通没bug。会用一门语言写代码仅仅是初级阶段,而精通是需要对代码架构和问题长期的积累,不可能简单的一年。
另外,你的目标应该在游戏开发上,这个不知道和你必须精通c++有什么关系。现在的大公司开发游戏,一般都有专门的游戏引擎,甚至有专门的游戏开发语言,你精通c++也可能只是游戏开发的基础,游戏中最难的应该是游戏的设计。
【shuangyang的回答(1票)】:
我也是软件工程毕业的,我觉得,课本里的真重要,特别是操作系统和计算机原理,数据结构和算法,这几门课被选做考研项可不是白选的,基础不好,做什么都白搭,肺腑之言。其他要用什么,对应的看看文档也就会了。
【WizardZhang的回答(1票)】:
四个月就能熟练C++ 真的 但是精通C++ 真的很难
我们老师经常跟我们说 连ppt这么简单的东西都是不可能精通的
更别提C++这么傻大笨粗的东西了
还有 以后去面试的时候 千万别说自己精通C++
C++有一些很偏的语法规则 闹不好面试官就会故意考你这些。。
---------------------------------------
然后游戏方向要看你喜欢写游戏还是游戏引擎
或者你实习的那个公司让你写什么
游戏引擎角度来讲 学好C++没问题 除此之外还要有一些图形学和底层的知识
游戏的话 没人用C++吧 开发成本高 周期长 需要的人才又不容易找
等你用C++写个游戏出来 编译一遍debug一遍 竞争对手估计都开发出5个了= =
【王照顺的回答(3票)】:
上面都是大神,作为一个即将大四的学生,我说一下自己的观点,什么事情都要讲究一个兴趣,兴趣来了写代码和写诗一样快乐,上面说的剑宗和气宗比较有意思,个人觉得不管学什么都应该由浅入深,底层要学好没有错,如果一上来就不管三七二十一让你去了解opengl的知识,估计学了个把月,然后你会问,这玩意能干嘛?估计你就萎了,编程生涯over。。恩,应该是这样,先简单了解一下游戏制作过程,比如说先熟悉一款游戏引擎,如cocos2d-x,然后简单开发一款小游戏,恩,然后大概知道游戏制作是怎么个回事,当然,这时候你可能只是处于调用一下人家api的情况,不过没关系,当你发现你自己写的游戏能在手机上跑了,兴趣来了,多写几款类型不同的游戏,恩,大概像那么回事了,然后开始不满足写游戏了,这时候你可能会想了解一下引擎的原理了,然后开始找资料,学opengl等各种知识,个人觉得不管学什么都要循序渐进,由浅入深,这样子才不会学什么都停留在表面,就好比如果你单单学一个cocos2dx如何使用,说白了哪天公司换个游戏引擎让你去写游戏,你发现又要重头学起,到时候就心有余而力不足了。
顺便说一句,楼上有些人过于激动了,大神们指点一下可以,不过指指点点就不好了。
【陈清扬的回答(1票)】:
Peter Norvig已经写过长文阐述了:
十年学会程序设计。
作者 Peter Norvig 是计算机科学家,Google 的研究总监。在本文中,Peter Norvig会告诉你:为什么急功近利地学习软件开发技术是没效果滴?
为啥都想速成?
随便逛一下书店,你会看到《7天学会Java》等诸如此类的N天甚至N小时学习Visual Basic、Windows、Internet的书。我用亚马逊网站的搜索功能,出版年份选1992年以后,书名关键词是:“天”、“自学”、“教你”,查到248个结果,前78个是类图书,第79个是《30天学孟加拉语》。我用“天”换成“小时”,结果更惊人,有多达253本书,前77本是计算机图书,第78是《24小时自学语法句式》。在前200名中,96%是计算机的书。
结论就是:要么人们急于学习电脑,要么计算机比其他东西学起来要异常简单。没有任何书是关于几天学习贝多芬或量子物理的,甚至连犬类装扮都没有。费雷森(Felleisen)等人在其著作《如何设计程序》中同意这个趋势,其中提到:“坏设计很简单,笨蛋才用21天学,尽管他们还是真傻。”
让我们看看《三日学会C++》这个书名意味着什么:学习:三天内你可能没有时间写出有意义的程序,或者从中积累经验。你不可能有时间去跟职业编程者一起去理解在C++环境下的状况。简而言之,你没有充足的时间学很多。所以这本书只能说肤浅的知识。正如亚历山大?波普(Alexander Pope)所言:一知半解是很危险的。C++:三天内你可能学会C++的句法(如果你已经了解其他的语言),但你还不会使用它。打个比方,假如你是个Basic程序员,你可能写出Basic风格的C++程序,而无法理解C++的真实好处。那要点是什么?艾伦?佩里斯(Alan Perlis)曾经说过:“一门不能影响你编程观点的语言不足学的。”有可能你学了一点点C++(或者诸如Javascript、Flex之类),因为你需要和现成的工具接口以完成手头的任务。这种情况下,你不是在学习如何编程,只是在学习如何完成任务。三日:不幸地是,这远远不够,下一部分会详细讲。如何用十年掌握编程
研究人员(Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973))得出结论:想要在诸多领域达到职业水平需要十年,比如国际象棋,作曲,电报操作,绘画,弹钢琴,游泳,网球以及神经心理学和拓扑学的研究。关键是精心练习,只是一遍一遍地重复是不够的,必须挑战恰好超越你能限的事情,尝试并思考你的表现,并自我矫正。周而复始。这并无捷径!
4岁的音乐奇才莫扎特用了13年才能创作世界级的音乐。另外,披头士乐队似乎在1964年的埃德?苏利文( Ed Sullivan show)演出中一炮而红,但是他们自从1957年就在利物浦和汉堡的酒吧演出,在取得广泛关注后,第一部重量级作品《佩珀军士》(Sgt. Peppers)是在1967年发行。马尔科姆?格拉德威尔(Malcolm Gladwell)撰文描述了一项针对柏林音乐学院学生的研究,他们被分为尖子,中等和不足三类,并被问到他们练琴的情况:
所有三组中的人,开始学琴的年龄大概相差无几,五岁左右。在刚开始的几年,所有人练习量也差不多,一周两三个小时。自八岁开始,实质性变化就有了。那些精英学生开始比其他人练习更多:九岁的时候一周六个小时,十二岁的时候一周八个小时,十四岁的时候一周十六个小时,一直到二十岁的时候一周要超过三十小时。截止到二十岁,在他们的生涯里已经有总计一万小时练琴。仅仅表现可以的那部分学生加起来是八千小时,那些未来的音乐老师有四千小时。
所以,更确切地说,一万小时,而非十年,是个神奇之数。
萨缪尔?约翰逊(Samuel Johnson, )认为还需更长时间:“卓越乃一生之追求,而非其它”。
乔叟(Chaucer, )抱怨道"the lyf so short, the craft so long to lerne." (生之有限,学也无涯)。
希波克拉底(Hippocrates, c. 400BC)因这句话被世人所知:"ars longa, vita brevis"(译注:拉丁语,意为“艺无尽,生有涯”),更长的版本是 "Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile",翻译成英文就是 "Life is short, (the) craft long, opportunity fleeting, experiment treacherous, judgment difficult." (生有涯,艺无尽,机遇瞬逝,践行误导,决断不易)。
我的成功秘笈是:首先要对编程感兴趣,能从编程中得到乐趣。一定要让它足够有趣,因为你要保持你的兴趣长达十年。与别的程序员交流;阅读别人的代码----这比看任何书或参加培训课都重要。实践。最好的学习乃实践。俗话说:“编程的至高境界一定要通过充分的实践才能达到,而个人的能力可通过不懈努力获得显著提升。” (p. 366) “最有效率的学习需要明确的目标,适当的难度,知识回馈,并容许重复或修正错误。” (p. 20-21) 《实践认知:每日的思维、数学及文化》(Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life) 在这方面可做参考。如果你愿意,花四年学习大学课程(或者再加上读研)。这将给你赢得某些工作机会,并给予你在该领域的深层见解。但如果你不喜欢学校的学习,你同样可以在工作中获得相似的经验。无论如何,单靠书本是远远不够的。“学习计算机科学不会让你成为编程专家,如同学习绘画和色彩理论不会让你成为画家一样”。这是埃里克?雷蒙德(Eric Raymond)说的,他是《新黑客字典》(The New Hacker's Dictionary)的作者。我雇用过的最优秀程序员,只有高中***。但他开发过许多伟大软件,有自己的新闻组,通过公司认股赚的钱就让他买下了自己的夜店。和其他程序员一起参与工程项目。在某些项目中担当最优秀程序员,在另一些项目中充当最差劲程序员。充当领头羊的时候,你要测试你领导一项工程的能力,并用你的视野来激发他人;如果在项目组中垫底,就应该学习其它牛人在做些啥,以及他们不喜欢做的(看他们把哪些活让给你做)。继续别人的工程项目。去理解先前程序员写的程序。学习如何理解并解决先前程序员没有考虑到的问题。思考你的程序该如何设计以便让之后的程序员更容易维护。至少学6种程序语言。其中包括一种支持类抽象的(Java和C++),一种支持函数抽象的(如Lisp或ML),一种支持语义抽象的(Lisp),一种支援声明规范的(如Prolog或C++模板),还有一种支援协程的(Icon或Scheme),另外一种支持并发的(Sisal)。记住,在“计算机科学”里有“计算机”一词。理解计算机执行你的代码的时候花费的时间。比如:从内存中取一个字(考虑有无缓存未命中情形),连续从磁盘读字,或者在磁盘中定位。参加语言标准化工作。这可能是有关 ANSI C++ 委员会,也可能是决定你编码风格是两格缩进或四格缩进。无论如何,你要知道其他人对语言的喜好程度,有时还要想想他们为什么喜欢这样。知道自己应该在何时脱身于语言标准化。
所有上述这些,很难通过书本的学习来达到。我头一个孩子出生时,我读了所有的“如何做”(How To)系列的书籍,却依然对育婴毫无头绪。30个月后,我第二个孩子出生,我还需要温习一下那些书吗?绝对不!相反,我完全可以参照个人经验,而结果相当有效。这更让我确信:我的经验胜过那些专家们写的上千页文字。
弗雷德?布鲁克斯(Fred Brooks)在《没有银弹》(No Silver Bullet)一书给出了寻找顶级设计师的三条建议:尽早系统地识别出顶级设计师。分配一个人作为其职业规划的导师。给予机遇让成长中的设计师互相磨砺。
此处假定有部分人已经有成为伟大设计师的潜质,你所需的就是要诱导他们。艾伦?佩里斯(Alan Perlis)一针见血地指出:"假如人人都可以学雕刻,那就得教米开朗基罗如何不去干雕刻。对于伟大程序员,也是如此。”
所以,简单地买一本Java书,你或许能找到些有用的东西,但绝不会让你在24小时内甚至24天抑或24月内,成为行家里手。
【渐修竹的回答(0票)】:
我也做了两年c++了,也不敢说精通,我们老大做了至少8年,也没敢说精通,我认识的很多大神,也都没敢说精通。事实上我认识的很多大神都很谦虚,我跟他们学到了很多,大家的简历上也都写着熟悉c++之类的字眼。上次公司招聘,来了个小伙子,工作两年,简历上写了精通c++,结果连公司的笔试都没通过。请原谅我答不对题,我只是单纯的看精通这个词不太舒服。。。
【canneljiang的回答(0票)】:
关键是如何理解“精通”
我从大三开始,平均每天用一小时自己编码,到大三结束要找暑期实习时,编码水平比大部分同届同学高,于是顺利拿到实习机会以及以后也顺利拿到offer
现在出来工作几年,虽然水平比毕业时高很多,但也依然觉得很多东西不会,很多人比自己强
最后,我觉得对于大学生,如果有同学向你请教编码问题,有同学请你帮他做编程的作业,那也可以证明这个人比较强
&&&&&本文固定链接:
【上一篇】
【下一篇】
您可能还会对这些文章感兴趣!
最新日志热评日志随机日志

参考资料

 

随机推荐