在网易游戏这一年

各位读者朋友们,大家好!春节即将到来,我在这里先祝大家鼠年大吉,想要的一切都“鼠”于你!

回想去年的除夕夜,我还在桌前勤勤恳恳地撰写2018年终总结(详见:一名普通游戏开发者的年终总结),一切仿佛发生在昨天。不知不觉我在网易已经工作一年多了,也从零到一地经历了一个完整游戏项目的开发过程,结识了许多大佬,学到了许多技术,当然也踩了不少坑。这篇文章就是和大家唠一唠我这一年的的经历和成长,收获与感悟。

一.项目经验

谈到收获,最明显的其实并非技术上的提升,而是工作经验的积累。如果你关注了一些参与过3A级制作的开发者或制作人,他们在对比国内外游戏项目的时候,经常会提到国内游戏团队的一个劣势——工具链。随着整个项目从无到有的开展,以及对身边参与过3A级项目大佬的观察,我深深地体会到了“工具链”在项目开发进程中的重要性。

所谓“工具链”,就是指整个项目配套的工作流水线。和工厂生产产品一样,我们制作游戏也是一种“产品”的输出,不过这个产品是虚拟的,流水线上的操作就是我们对软件的每一次提交和修改。软件产品的优势之一是可以回炉再造,我们在遇到问题或有需求变更的时候可以根据实际情况对它进行修改和调整。但这个过程也存在着许多安全隐患,因为软件是一个整体,一旦按照前期的设计完成开发,后续的更迭就只能在原来的基础上进行修补,期间如果操作不当甚至会导致前功尽弃。而完善的工具链就可以帮助我们避免由于开发者操作失误、操作流程不规范等造成的项目中断、项目搁置等问题,提高协作开发效率。曾经我参与的一些项目在这方面就没有做的很好,比如每次出包都需要人工打包,效率低下;再比如由于个人的疏忽导致项目崩溃,开发进度不得不停滞等。
在这里插入图片描述

我这里对项目中必要的工具链做一个简单的阐述,

首先,不同工种的工作流是不同的。

  • 程序需要本地修改文件——merge——提交—— 更新资源(这个是简化版的流程,实际上要比这个复杂,我们一般会先rebase)。
  • 策划美术需要更新编辑器—— 使用Perforce/SVN更新资源——本地修改资源——Perforce/SVN提交资源。

由于程序可以拿到源码,所以能随时在本地生成与修改。但是对于策划美术来说就不是这样了。他们随时随地随心情地更新资源,如果更新到的资源包含错误,可能会造成崩溃甚至打不开的问题。而且想要他们快速找到能够解决这个问题的程序也并不是一件容易的事情。因此,我们需要一个工具来管理项目版本,每次编译editor或打包项目都需要通过测试验证,验证后的版本再放给策划与美术使用。如果可以的话,类似的问题从源头解决要更可靠一些,比如在开发者提交资源或代码时就进行一些基础的验证,确保不规范的内容(比如命名)不会进入到主干分支当中。

其次,程序也会经常遇到本地测试没问题,到主分支就报错、因为本地资源环境与远端不同,主分支编译不过等问题。所以更加理想的解决方案是有一个自动化的build工具,可以方便我们在远端测试,从而避免类似悲剧的发生。

当然,我只是举了两个比较典型的例子。具体到每一个项目,都需要根据实际情况定制配套的“工具”以及“工具链”,这样才能让我们的项目流水线安全平稳地运行。对于开发团队来说,项目启动前最好先咨询一下经验比较丰富的团队的建议,工作流是否正常且高效?有没有现成的开发工具可以使用?不要闷头干活,闭门造车。有时间的话,我之后还会专门写一篇关于“项目流水线”的文章,大家可以持续关注我的公众号——“游戏开发那些事”

二、个人成长

虽说工作经验的积累是最大的收获,但技术实力的提升也是一定的。毕竟在项目中获得的成长是最快也是最直接的。去年刚加入网易的时候,我自认为对虚幻引擎“比较熟悉”,期待能在工作中大展身手。但后来才发现,其实只是对部分模块比较熟悉罢了。随着项目的推进,我发现我需要深入学习的不仅仅是虚幻引擎,还要熟悉整个项目的Build打包流程、重新理解网络同步架构、从零构建一个功能模块、接触之前从未了解过的回放系统、学习并深入一门新的语言、完成渲染服务器对接功能等等。经此一役,我对自身的能力有了更清晰的认识,并重新审视了自己的知识架构与水平。
在这里插入图片描述

总的来说,有一些方面成长还是比较明显的,我大致概括为以下三点:

1.知识的应用与实践能力

很多朋友可能和我一样,都会面临这样的问题:看过一些书,也写过一些代码,但是实践能力不佳,产出不够,最直接的体现就是从零构建一个模块的能力不足。之前这方面确实是我比较明显的短板,不过经过一年的磨练和学习,现在的我面对一个新的功能已经可以比较从容地梳理并完成了。

2.研究解决问题的能力

我向来不避讳去正视自己知识方面的欠缺,毕竟学无止境,任何人都无法做到全能全知。一个知识点不会没有关系,重要的是遇到问题要有解决的能力。想要锻炼这项能力,我们就要敢于试错,勤于动手,同时能够主动积极的学习新的知识。对于现在的我,即使面对一个全新的挑战,也可以静下心来去研究并尝试解决。

3.对项目技术的认识

在开发各种独立模块和与其他同事的协作过程中,我对项目的整体以及细节有了更深入的认识和了解,包括项目技术的研究与拓展、程序模块如何分工、哪些内容(比如3C、AI等)比较复杂需要多投入精力、哪些工具对提升工作效率是非常必要的等等。在项目测试前,我还经历了一波比较艰难的性能优化与Bug修复阶段,这让我对资源加载、网络同步、内存管理等方面也有了更为深刻的理解。总的来说,这些都是非常宝贵的经验,真的是只有经历过一个有一定规模的项目才能获得的。

三、业余时间的成长

当然,工作之余,我也花了一些时间进行自学和总结。首先,开了一个只输出干货的公众号(虽然想靠他恰饭还遥遥无期),梳理了一些面试相关的基础知识。

Jerish:史上最全的C++/游戏开发面试问题总结(一)——C++基础

期间还因为知识水平有限以及总结不太到位被知乎大佬怼过。当然这也让我更加注重内容的准确性和深刻性,不断修补自身的知识体系,力求为大家提供更优质的文章。

Jerish:被知乎大佬嘲讽后的一个月,我重新研究了一下内联函数

毕竟要吃游戏开发这碗饭,懈怠是万万不可的。这一年除了买了几本技术相关的书籍(虽然还有好多没看),有时间还会读一读引擎源码,分析其中的技术细节,没事也会去知乎逛一逛,与身边的大佬交流交流。不得不说,身边有大佬可以随时提问的感觉真的好!
在这里插入图片描述

另外,年底的时候本科导员还请我做了一期校招求职经验分享的视频,逼的我把废弃多年的AE重新捡了起来,由此开启了新世界的大门。关于这个“面试经验分享”的视频,我确实花了相当大的功夫才把近几年的求职经验以及网上的面经全部汇总起来,看完了绝对让你受益匪浅。这里先放个小彩蛋吧,年后我会挑个时间把完整视频放到公众号和B站上面,到时候希望各位可以帮忙转发,毕竟如果大家给力的话,说不定明年我还能成为一个知名Up主呢?
在这里插入图片描述
在这里插入图片描述
这一年要说有什么遗憾的话,就是年初定下的计划并没有完成,很多想看的书也没时间看完。不过花了很多时间在健身和打球上,也不算荒废了吧。对于所有参加工作的朋友们,我发自内心地建议大家多运动、少熬夜、重养生(虽然并做不到)。毕竟2019也不算太平,想在裁员大潮中保有持久竞争力,身体才是革命的本钱啊。

总的来说,2019是非常充实且收获满满的。新的一年,我会继续在工作中成长进步,继续在我的公众号、知乎以及博客上为大家输出高质量的文章。2020会是非常美好的一年,也祝福看到这篇文章的各位工作顺利,好运连连!

再次祝大家新年快乐!奥利给!

发布了99 篇原创文章 · 获赞 793 · 访问量 78万+

猜你喜欢

转载自blog.csdn.net/u012999985/article/details/104171656