游戏开发杂记(三) 开发及学习过程中的体会

其实最近在写系列教程了,主要的提纲都定好了,第一篇教程也写了一大半了,无奈上上周临时接到通知要去北京出差,所以没有把教程写完并且发出来,一直折腾到上周日才回杭,真的是有点累的。不过这周也是回归了正常的开发及学习进度,每天下班回去就严格按照自己的计划去学习和工作。

因为自己最近有很多体会和想法,本来是想写到教程系列中去的,但是仔细考虑了广大程序员及项目人员的阅读习惯,还是单独把这些东西写到杂记系列里面来吧。博主的计划是想要看干货的人可以直接看我的系列教程(这周末第一篇就可以出炉了),想要看软技能比如学习方向和感受以及技巧之类的可以看我的杂记系列,不过大家不要忽视任何一方面,任何的失衡都会影响你后续的发展。

鉴于这里是CSDN,所以博主还是先谈谈程序方面的东西吧。

程序:

1.做游戏还是用自己最擅长的语言好

这一点是博主所坚信的一点,理由很充分。

首先,我相信大家基本都是主流的编程语言使用者,而主流的编程语言基本都有了对应的游戏(图形)引擎或者框架

参考如下的网站

https://blog.csdn.net/goodeveningbaby/article/details/51079857  引擎与框架   这一部分

你应该能找到自己最擅长的编程语言架构的游戏引擎。

其次,用最擅长的编程语言做开发是最容易上手和理解的,你的成本会低很多。当然,不可否认的是,C++还是在游戏方面最有效率的高级语言,至于脚本语言方面据我了解应该还是lua占据最大优势。

最后,用你擅长的编程语言是为了让你不要将游戏开发和你的本职工作剥离开。为什么会有这种考虑呢,因为游戏程序员只是程序员中的一类,还有很多其他行业的程序员。用你擅长的编程语言去开发游戏是为了你以后在本职开发和游戏开发之间建立桥梁,可以互相输送,互相促进。有人可能会好奇,游戏和我的本职开发八竿子打不着,怎么可能会有桥梁呢?好的,我来举个例子,如果你是做前端的,需不需要写UI控件,做各种动画或者转场效果,那么你用相同语言掌握的游戏部分的UI编程技巧可不可以用在工作中?如果你是做后台的,游戏开发中多人游戏需不需要服务器,数据库?可以用吧,而且在语言一致的情况下就更容易转换了,一份学习换两份结果,划算的买卖。还有这一点也是为了让你不要背负过多的担忧,因为同时兼顾主业和副业是很辛苦的,也会有心理上的负担,毕竟你的精力会被业余的项目分流一部分,难免会担心本职工作上会不会成长变慢,甚至影响自己的本职工作,这一点博主之前是深有体会。所以一定要做好本职和业余开发的平衡,这样子你才能专注在真正的工作上,不必担惊受怕。

这里扩展一下,看到前面有人可能会说那这样我还不如直接辞职专心做独立开发者,博主建议你千万不要这样做,业余并不代表你没有投入自己的心力,而且独立游戏开发说实话成功的几率微乎其微,你看到的成功的游戏基本都是凤毛麟角。有心的人会在steam上发现一堆你从来没有听过,评价数寥寥无几但都是特别好评甚至好评如潮的游戏。如果你真的试玩这些游戏,你会发现有些制作是真的用心了,有的甚至画面能达到2线商业游戏的水准,但是从那几个屈指可数的评价中我们能够直接了解到的是,这个游戏卖的非常差,事实也就是如此。好的东西不一定卖的好,这是多方面因素导致的,我看到过好几个国外的游戏从业经历极其丰富的老兵宣布自己独立游戏工作室破产的经历,所以这条路是相当困难的,一般很多工作室都是游戏还没做完就破产了,能发布出来已经是很不错了。这里说的有点多了,也是希望大家一定要考虑清楚。

2.学习一个游戏框架或者引擎的时候最好再复习一遍对应的编程语言(包括数据结构和算法)和基础数学知识

很多人看到这里可能会说,我用某某语言开发了多少年了,做了多少项目,对于这个语言我了如指掌。当然,如果你确实觉得自己的实力足够强大,那么就不用理会博主的建议了,不过你也必须清楚一点,游戏编程应该还是处在编程梯度中较难的部分的,如果是一个人或者几个人的小团队,你更是要负责几乎所有模块的编程。无论是图形渲染,AI,物理,控制,摄像机......每一个部分都需要比较扎实的基础,而现实中大部分程序员的工作都是负责一个模块的,你可能以前在资源释放,内存分配,效率优化上浅尝辄止,也许你最熟悉的语言中有很多东西你过去几年从来没有碰过,所以复习一遍还是有必要的。至于数学方面,基础的三角函数和点线面等等的相关知识应该是必须复习的,要做3D游戏的话推荐一本《3D数学基础:图形与游戏开发》,什么四元数之类的都有的,如果要在更深入的话,我觉得线性代数应该是首选,写shader必用的。

3.学习一个游戏框架或者引擎最好的入门方法是看官方的wiki或者官方推荐的书籍

我无法想象一个框架最好的入门手册不是官方给出的资料或者推荐书籍,如果真的有,请你告诉我,我一定要见识一下。为什么要强调这一点呢,因为我们常用的框架很多都是国外开发的,英文作为使用最广泛的语言,这些文档肯定也是英文首选的。目前还是有一些主流的框架没有中文文档,很多人看到这里望而却步,选择去读国内一些大神整理的技术文档。我不是说这些大神的文档不好,但是考虑到翻译和理解的问题,你接收到的知识是经过加工了的,可能会失去原有的内容。我觉得最好还是先啃官方文档,开个划词翻译的软件也不算太麻烦,然后再看那些大神的文档,你的收获一定更多也更深刻,也更能体会这个框架的精髓,因为原始文档一般就是这个框架的开发者写的,没有人比他更清楚这里面的妙处和深坑。

比如我现在在用的libgdx,其中就有官方的wiki和推荐书籍

 

游戏开发杂记(三) 开发及学习过程中的体会_第1张图片

把这些吃透了,我觉得是相当有用的(博主目前也在啃这些东西)。

4.多多关注一些游戏/电影/图形公司的github仓库里面都有些什么东西

这个其实是很有趣的一个点,大家可能一直觉得像sony,capcom,disney,皮克斯,工业光魔,梦工厂等等这些大牌公司不会把自己家的代码公之于众,当然现实可能还是稍稍有些不同的,他们可能会有一些开源的仓库,就算是没有开源的仓库,你也可以看看他们fork的是哪些东西,从而为你的开发提供思路和学习的方向。

5.多看看用的框架的demo,多看看对应的论坛,这个是非常有用的,避免闭门造车的现象发生。比如游戏开发的框架通常是实体系统,AI有行为树,基本每个引擎或者框架都会有人去写这方面的demo,你不必担心跟主流的游戏开发背道而驰,很多游戏开发的专业术语掌握了也有助于后续的发展,因为其实很多框架关于游戏开发的术语在程序中的标识符都是一致的,你吃透了一个以后想转另外的框架也是非常方便理解的。

图像:

1.掌握一些基础的美术知识及美工技巧

这个是很重要的,因为我认为对于现代游戏来说,不管是3A还是独立游戏,玩家在没有体验到实际游戏内容之前对于他们最大的吸引力便是图像了,而图像不管是程序动态生成的还是从图片中读取到内存的,都是属于美术的范畴。我很难想象一个完全不懂美术基础的人能够做出一款好的游戏。而且光照,阴影,还有shader,UI,游戏场景等等都需要美术知识和美工技巧与程序配合。这些知识不用跟美术生一样了解的那么具体,但是起码需要知道基础,就算你的游戏是像老式FC游戏一样背景是一个大色块,也得要颜色配合得当才可以。如果配色什么的不得当轻则让玩家觉得游戏很廉价,重则甚至会导致人出现生理反应(红蓝两个颜色快速连续切换,传言某知名动画当年就因为这个处理方式导致小孩子昏迷呕吐),所以为了玩家的身体健康,我们也是要掌握美术的(笑)。美工技巧则是指PS,AE,SAI,spine,龙骨,live2D等等图像处理,绘图,动画制作的软件,这个根据自己的项目去学习吧,因为牵扯的太多了,个人觉得PS和AE是必学的,因为基础的图像处理以及一些特效动画,还有后续上线的宣传视频都可以用这两个软件完成。

2.多多看一些游戏的开发日志

一些众筹或者比较喜欢公开开发进度的开发商会阶段性的公布开发日志,通常不是介绍程序上的内容的,因为玩家们并不太懂和关心这方面,一般都是游戏的原画,人设,还有开发中的场景等等,这些东西好好学习并且钻研的话,对于提升在游戏应用这块的美术提高是很快的。建议可以看一看骷髅女孩(skullgirls)的开发商,他们新作的开发日志我看了,感觉非常的不错,很有参考价值,steam上就有。香草社(代表作胧村正,龙之皇冠,奥丁领域)的原画和ori和迷失森林的原画也是非常的棒,所以多多收集设定集吧,绝对有用。

技术之外:

1.切忌急功近利,好高骛远

博主知道大家开始做游戏的时候都是以做出这些游戏为目标的

游戏开发杂记(三) 开发及学习过程中的体会_第2张图片

 

游戏开发杂记(三) 开发及学习过程中的体会_第3张图片

 

但是现实是非常残酷的,对于一个没有经验的开发者来说,就算有了开源的各种素材,程序上你也不可能直接平步青云,除非你有了一套及其完整的开源demo,但是这样子程序80%是别人的,素材100%是别人的,这个游戏你能骄傲地说是你做的,并且拿出去卖吗?

所以做游戏一定要沉下心来,有一定基础的人可以用已有的知识去开发,没有基础的人一定要从基层做起,一步一个脚印。对自己要有信心,未来我们也是可以做出这样子的游戏的,但是现在,我们也许只能做一些拼图,塔防,音乐节奏,文字冒险等等类型的游戏,再进步一点我们可以做体量大些的RPG,赛车游戏,2D横版闯关......在这个过程中逐渐进步,掌握更多的知识和技巧,对于发展才是良性的。

2.计划安排要得当

先举个极端的例子吧,博主前段时间每天下班之后回家工作到凌晨三点多,然后睡到早上7点醒,再去上班,持续了大概两周吧,每天头都是懵懵的。每次坚持不住的时候我就给自己加心理暗示,什么名人都是每天只睡4个小时,独立开发不努力根本不可能成功之类的,然后又继续懵着敲代码,画着画。后来有一天我实在扛不住了,结果就早早睡了,然后接下来的一周我一天都没有再去开发,感觉之前的劲都用光了,而且人特别困,一下班回去就想睡觉。

后来我体会到人是不可能也不应该长期保持紧张高压状态的,因为这种状态本来就是在紧急时候才会被激发的,就像CPU超频一样,时间长超负荷运行会损坏硬件,计算机都会坏,何况人这样的血肉之躯。真正的计划是有条理,有目的,有层次,可持续发展的。该做什么,要做成什么样子,现在在哪个阶段,后续的计划等等,作为一名独立开发者这些都是需要你自己去掌控的。博主相信,独立开发不仅会提高你在技术和艺术上的造诣,还会把你变成一个能够高效利用时间,做事有条理的人,对于立志项目管理的码农们来说,绝对是非常有帮助的。

3.适当的放松

博主开始做游戏之初,每天脑子里都是相关的东西,睡觉的时候睡不好,电影看不下去,游戏也玩不下去,感觉自己好像要研发火箭一样,那种责任感和使命感我连高考的时候都没有过。我想,对于一个人的团队来说,这个应该也是正常的,从宏观层面上看,游戏无非是两部分,程序和素材,但是其中涉及的东西内容之多,简直让人无所适从,你几乎可以把现实中所有的东西都塞进去,记得那时候看到CDPR(代表作巫师系列)为了赛博朋克2077在招募载具设计的人员,我就意识到随着游戏的体量越来越大,未来可能会把现实中的一切都完美映射进去......

咳咳,说的有点偏题了,那么我们怎么去适当放松呢?

首先,可以适当的“玩”游戏。这个“玩”可能跟没开发游戏之前玩的心态不一样,你会比以前更加敏感,可能注意到这个游戏有一些很酷炫的视觉特效,你会想这个是怎么做到的;可能注意到这个游戏的摄影机运镜是如此地丝滑顺畅,你就会了解到原来这个是用补间动画来处理的;可能注意到这个游戏的打击感特别棒,然后你就会注意到原来是动画下了功夫,打击的瞬间还做了顿帧的处理。玩游戏放松的同时还在学习和思考,赚到了吧。

其次,每周一定要抽时间出去走走或者运动。这是减压的好方法,不仅让你接触一下阳光或者寒风(笑),也让你暂时不去考虑开发的任务,好的休息才能迎来更好的工作状态。

最后,有时间多跟朋友交流,独立开发是独立的,但是作为一个人你还是社会的一部分,不要因为自己忙就把交流沟通忽略了,偶尔的谈天说地,其实也没那么坏对吗?如果你的朋友也是游戏迷,那么我相信你们的共同话题也会不少的。

 

总结:

对于技术的东西,一定要是有使用场景再去学,而不是学了之后再考虑怎么用,这样子你会失去方向和重点。就像上学时一样,说的简单粗暴一些,我们知道要考试才去学习,而不是学了之后我们想这个知识怎么用啊,不如去考试检测一下吧。没有目标的学习就像失去了指南针的海上旅行,你会迷失在一片蔚蓝之中。

至于技术之外的东西,我想只有保持良好的心态,努力拼搏的精神,制定明确的计划并且付诸实现,才能快快乐乐地开发游戏。

不管你开发游戏的目的是什么,最最最重要的是不要偏离自己的初衷,做你最想做的东西吧(当然为了市场适当的妥协也没什么不好的嘛(笑))。

谢谢大家阅读到这里,愿大家热爱游戏,热爱生活。

 

 

 

 

 

 

 

 

 

 


 

你可能感兴趣的:(杂谈)