【CSDN编者按】从沉迷于玩游戏到立志开发一款能被认可的游戏,从第一次实习面试时放下豪言称要在30岁当上技术总监再到成功圆梦,在蔡俊鸿的游戏开发道路上,其一直坚守自己的初心,用技术成就了自己,也点燃了游戏圈。
作者|蔡俊鸿责编|张红月
出品|《》编辑部
经常有朋友问我,你是如何一步步走到今天?有什么秘诀和经验?回顾我的游戏人生,有快乐有遗憾,有挫折也有成就。
蔡俊鸿北京昆仑万维科技股份有限公司技术总监。10年游戏研发经验,精通游戏服务端和游戏客户端架构、研发、优化。《Unity实战》第1、2版和《Unity游戏优化》第1、2版译者,第3版联合作者。
自由游戏的年少时光
到了初三,父母为了激励我学习,承诺“只要考上市里最好的高中就给我买电脑”,为此我开始发奋学习。初三时我的理科成绩能够稳定在年级前几位、数学稳居年级第一,最终也如愿考上市里最好的高中,拥有了我的第一台电脑。
本文节选自《》纸刊+电子刊同步上市
疯狂沉迷PC的高中时光
一台CPU为Pentium4、1GB内存、80GB硬盘、ViewSonic液晶显示器的计算机,是我PC游戏生涯的开端。那时正上高中,受家人的影响,我开始接触Photoshop、CorelDRAW这两款软件,也尝试进行了一些基础的绘画实践。
我常常会想:如果能让这些画动起来该多好。就这样我误打误撞地走进AdobeFlash和ActionScript2(以下简称AS2)语言中,后又通过在网上查阅资料与学习各种酷炫的AS2代码,实现了一些简单的特效。一步步通过代码实现想法的我备受鼓舞,开心万分。
但沉迷游戏导致的另一后果就是我的成绩一落千丈。彼时的我从中考数学全市前几名沦落到高考没考上重点大学,但那时我只想快点脱离高中生活,可以更自由地做自己喜欢的事情。于是,哪怕家人劝说,我也没有选择复读。
如今回想起来,也会对高中时没有好好学习考上好大学抱有遗憾。但条条大路通罗马,只不过有的路好走一点,有的路难走一点,既然曾经已做选择,便会坚定不移地走下去。
从设计图像到痴迷编程,我的蜕变
人生的第一个网站和第一桶金
兴趣是最好的老师,从热爱玩游戏到想要自己开发、制作一款游戏,这样的梦想从大学一直伴随至今。因此,在大学时,我首选的专业便是计算机科学与技术。
大学时期,作为各大社团的网络部成员,我运用高中自学的Photoshop、CorelDRAW等技能,负责社团所有的图像、海报设计(见图1)等工作。
图1大学期间的作品之一
不久,一次偶然的机会下,我承接了校团委让网络部帮忙制作网站的任务。为了做好,我用了三个月疯狂学习HTML、CSS、JavaScript、PHP、MySQL等技术,成功开发了人生第一个CMS(ContentManagementSystem,内容管理系统)网站。
还记得那时的服务器开发是基于PHP+MySQL,当时PHP流行模板引擎,但模板引擎中的很多功能都用不上,于是我便开发了一个简化版本。同时在对比Google的一些Web产品后,我认为异步交互可以极大地提升用户浏览体验,于是我在项目中使用了大量的AJAX,也模仿jQueryAPI开发了一个简化版的AJAX库,以此不断地提升自己的编程技能。图2是我在PHP实践过程中,参与社区征文时所获得的奖品,也是社区对我的一种认可,这种成功同样在我往后的道路一直激励着我。
图2参加PHP社区征文所获得的奖品
Java图形编程
不过,很多Java书本里关于图形界面的内容覆盖太少,仅简单地介绍了一些基本的控件和界面实现。于是,我开始自己在网上查阅各种资料学习,但这时室友告诉我“Java做图形不好看,还不如C++、C#”,我偏偏不信,依旧进行自己的学习和研究,而他也依旧站在他认为的鄙视链顶端“鄙视”我。就这样,他学习SSH,而我学习着“不入流”的Swing、Java3D等。
最后,我用Java开发出来的东西获得了同学及网友的一致好评。图3就是我用Java开发的图形程序。
图3Swing超绚丽系列之俄罗斯方块
很多人往往会比较看重当下所做之事的回报,但不少值得学习的知识都需要长周期完成。眼前收益看似很低,但它会在未来的某一天,出其不意地为你产生帮助。
第一门编程语言的选择与学习
如何学习一门编程语言?对于没有任何编程基础的开发者而言,想要学习一门编程语言,我推荐大家首先从一本不太厚的基础书开始,这样更能建立自己学习的信心,同时把书本中所有示例在理解的基础上手动敲一遍代码。当这本书看完时,相信大家已经能使用这门编程语言进行功能开发。如果此时觉得基础不够扎实,可以继续重复此步骤。只有基础扎实了,后续开发才会更快速、更顺利。
当基础扎实之后,可以阅读这门语言的经典书籍,即更厚一点的图书。此时因为基础知识已掌握,阅读速度自然也会加快。
无论学习哪一门新语言,一定要重视学习、实践、思考与总结的过程。在熟悉了一门编程语言之后,再学习第二门编程语言,就会很容易些。在此,我的建议是:
回顾我的整个大学生涯,从兴趣出发自学了编程,后来带同学承接项目学会了版本管理、项目协作、基本的架构设计,这都对后来工作起到了一些结构性的支撑作用。个人认为,如果把大学给一个人带来的知识、人脉、学历比喻为路程,那么你在离开大学时的学习能力就是速度。因此我们在学习知识的同时,也要学会如何持续学习,不断提升自己的学习能力。
30岁,当技术总监去
2011年初,读大四的我也面临着就业选择。当时我手里还有很多未完的事情,比如自己正在用Java做一个3D游戏,所以一点也不着急找工作。谁知我的同学一直惦记着我,在找工作的同时也帮我留意着,经过他的推荐,我发现有个网页游戏公司还不错,自身也符合招聘需求,便投递了简历。
果真,一周后,我成功入职该公司。还记得那时CTO也问过我一个问题,“你说自己这么喜欢写代码,你想写到多少岁?”。我回答道,“30岁”。他问我为什么只写到30岁。我说,“那时候可能我是技术总监了,就不用写代码了”。直到30岁时,我如愿成为了技术总监,而和当初的回答有所不同的是,我还是喜欢写代码,现在每天都在写,当然这些都是后话了。
第一个游戏上线
几天后当我熟悉项目时,主程找到我询问是否想要做新项目。我自然想体验从0开发游戏的过程,于是满心雀跃地说,“想!”。
然而,在新项目立项一个月后,主程跳槽离职了。该项目包括我在内,一共两个服务器工程师,由于我对游戏业务非常熟,编程基础也还行,因此一个人开发了70%的系统,经过半年的开发打磨,这个项目成功上线了。
当时很多人问我,公司也没有加工资,你为什么要做那么多?其实在职场中,有时候不是你在这个位置才能做这个事情,而是当你有能力、主动地去做这个位置的事情时,你自然也会成为这个位置上的人。我认为没有哪个公司会愿意付出成本让你冒险,而我有幸遇到了这样的机会,并在实现它的过程中,使自己得到了成长。
项目上线时,我成为这个项目的服务器主程。此时距离我实习才半年,而我在担当此位置时,也一直怕自己做不好,于是很努力地提升各种能力。
在实践中,写程序出Bug是常见的事情,想要减少Bug数量,要思维谨慎、业务熟悉。而想要快速修复Bug,需要对所写的东西都烂熟于心,即做到代码在心中。
第二个重量级IP游戏
2012年初,公司准备做一个ARPG(动作角色扮演)项目——《西游降魔篇》。
经过公司内部讨论,这个重磅项目落到了我们团队。起初,公司想让我担任项目主程,但我认为自己刚毕业一年,同时ARPG项目的开发难度比RPG要更高,因此我希望公司可以招一个经验丰富的主程,也能让我在学习中成长。
做一款成功的游戏,连续两次创业
在第一次创业,我向制作人提过几个创业想法:
可以看到,这三个也是现在很火的方向,即Roblox、云游戏、UGC。在当时由于概念超前,可能大家并没有很感兴趣。
制作人认为我们自身对策略类游戏比较熟悉,因此在两个策划、两个程序工程师、一位游戏美术组成的团队支持下,我们耗时三个月,完成了一个策略游戏Demo,然后开始寻找投资。此外,我们也用Unity3D做了一个2D游戏(见图4)。
最终,我们找到了四位投资人,确定了投资。不过当时环境下,Unity3D工程师极为稀缺,同时我们的创业资金也十分有限,想要以高薪招聘一位顶尖的Unity3D工程师极不现实。后来,我决定自己扛下战斗,肩负Shader等核心开发工作。对于初创团队而言,万事开头难,那时的我白天写服务器、教新人写代码,晚上写客户端,基本每天睡在公司,凌晨六点入睡,早上九点半起床。
在这样的磨练下,我也成为了Unity3D开发主程。起初只是想帮助公司节省成本,后来也正是因为有这段经历,使得我成为另一家百人公司的技术总监。所以我也坚信:但行好事,莫问前程!
因为团队整体的不成熟,不难想象,这一次的创业以失败告终。不过,我并没有对这次创业感到后悔,毕竟那是一次宝贵的经历,而且整个创业过程十分充实,受益良多。
创业结束后,在个人职业规划中,我想找个公司积累一下,后来便短暂地在广州多益网络任职。之所以称为“短暂”,是因为我在这家公司刚过试用期时,曾经任
职的第一家公司制作人找我创业。
也许很多人可能以为我很喜欢创业,其实并非如此,我只想做一款成功且能被大家认可的游戏。不过,有些遗憾的是,这次创业依然失败了。
与其思考如何成为总监,不如学会如何解决问题
我认为不管担任什么岗位,重要的是去解决问题,你能解决什么样的问题,自然就能胜任什么样的岗位。我觉得做什么都不重要,重要的应该想想自己能为游戏这个行业带来什么价值,平常应该怎么提升自我去成为行业真正渴求的人。
热爱与坚持
从参加工作至今,技术于我而言,除了是工作的实用工具,更是实现梦想的利器。
通过编程,可以实现自己想要的功能,这是一件令人振奋的事情。如果热爱编程,那么当你看到键盘时,会不由自主地想敲上几行代码,也会沉浸其中。
如果你无法做到热爱,那么在面对键盘、屏幕时想必更多的只会是焦虑和无助。面对无穷的代码,只会感到深不见底的恐惧,这样很难走得更远、更高,自然也无法领略更美、更远的风光。
很幸运我很早就找到了自己的兴趣——游戏编程,并且能一直从事游戏行业。从个人角度出发,我一直以来的梦想是脱离公司、平台以后依然能独立进行游戏设计、编码、画画、编曲。因为这个梦想,我也将继续在游戏行业努力奋斗!