java游戏服务器面试_我做游戏开发这八年

点击上方“CSDN学院精品课”,选择“置顶公众号”

CSDN学院精品课  IT人的职业提升平台

33dc018a84263b541d10f23c2afe0902.png

作者 | kakashi8841

简述这篇文章并不是想教会大家如何开发游戏,更不能教大家如何成为技术总监。而是分享我一路做开发的一些经历或心得体验。与编程擦肩而过2004年,初三升高中时,因为我考上市里最好的高中,因此父母兑现承诺给我买了一台电脑。那时候电脑配置还是挺好的(我记得是P4的CPU、1G内存、80G硬盘、优派的液晶显示器,还买了打印机、扫描仪)。由于我热爱游戏,因此有了电脑之后就开始陷入于各类游戏中无法自拔。基本每天晚上通宵玩游戏,玩到凌晨5、6点睡1-2个小时,然后去上学。基本高一玩了各种游戏,然后成绩自然也是一落千丈。到了高二的时候,因为我表姐夫是做美术设计的,因此我开始接触了Photoshop、Coredraw这两个软件。我一边瞎画着各种东西,一边想如果能让这些也动起来多好。因此开始接触了Flash。开始在网上看看各种Flash的教程,能做一些动画,能用按钮控件控制一些流程,也了解到AS2这一门语言,然后在网上找了各种酷炫的AS2代码加到自己的Flash里面,实现比如鼠标跟随的特效等等效果。这时候其实我还不会独立地写代码。由于高中各种的不务正业。从中考数学全市前几名,到最后高考没考上重点大学,这其实也是我预料中的。因为本来我就不是一个相信运气的人。那时候我只想快点脱离高中,可以更自由做自己喜欢做的事情。因此也没有选择复读。从图像设计到痴迷编程入门编程进入大学之后,我参与了好几个社团,成为各个社团网络部的成员。然后接下来的事情就是社团搞活动经常需要一些海报什么的。因此我高中自学的Photoshop和Coredraw就派上用场了。大一基本就是做了一年各种图像设计的工作。而从高中到大一带来的各种突如其来的自由,也使得我继续沉浸在各种游戏中。到了大一的暑假时,校团委突然找网络部帮忙做网站,而师兄们准备毕业的、准备考研的,都没啥时间。因此这重任落到了我一个人头上,我也不知道那么多成员为啥选中了我,也没想那么多。我暑假放假前1个月,外加暑假2个月,整个3个月时间开始疯狂学习HTML、CSS、Javascript、PHP、MySQL,然后3个月时间从学习到开发完成了校团委的任务,制作了一个CMS网站。这三个月时间让我觉得编程原来这么有趣。沉迷编程接下来大二的时候我就陷入了疯狂的学习和开发之中,最疯狂的时候一天在图书馆借一本PHP的书,当天借当天看完,晚上再自己把那本书最后的例子实现了,然后第二天再去换书,就这样我很快把图书馆所有PHP的书都看完了。书中的例子也都能自己写出来。然后开始接了很多外包,也快速赚到了第一个笔记本的钱。Java的图形编程由于大二做了很多的网站,已经觉得有点厌倦。进入大三,刚好我们有一门Java的课程,我看到Java可以开发图形界面(Swing/Awt),因此开始转向学习Java。我大概花了2-3周把学校发的Java书看完了,并且把里面的示例也都自己敲了一遍。基本没有障碍的完成了Java的学习。但是书本里面关于图形界面的太少了,只介绍了最基本的一些控件以及做一些简单的界面。因此我开始自己在网上找各种资料。这时候室友告诉我“Java做图形不好看的,还不如C++不如C#,等等”。我就偏偏不信了,我依旧进行自己的学习和研究,而他也依旧站在他认为的鄙视链顶端鄙视我。就这样,他学习他的SSH,而我学习着不入流的Swing、Java3D等。
其实我那时候的心理:为啥你觉得他不行他就不行?我得自己实践过才知道。实践出真知,我觉得这是做技术一个很重要的特质。很多时候,很多东西大家只是凭经验人云亦云地传播,并没有亲自实践过。而我那时候还有一个心理,哪怕最后我花了很多时间之后做出来的东西确实不好看,那我也不亏,我在这个过程中肯定是能学到东西的。很多时候很多人会比较看重眼前做的事情收益如何,回收周期多长。但是我觉得,很多值得学习的知识都是回收周期很长,而且眼前收益很低的。对于我而言,我更多的是基于兴趣去学习。我觉得这就足够了。
最后的结果就是,我用Java开发出来的东西,他们觉得太好看,根本难以想象是Java开发的。这里有一些大学用Java开发的图形程序。1. swing超绚丽系列一—— 俄罗斯方块(https://kakashi.blog.csdn.net/article/details/7338836)2. 纯Java开发的游戏引擎V0.5–DEMO2 – 物理引擎(https://kakashi.blog.csdn.net/article/details/6397051)3. 杂七杂八的东西(https://kakashi.blog.csdn.net/article/details/6181486)就职游戏开发2011,第一次面试&实习生2011年初,不知不觉到了大四第二学期。本来我还不想这时候去找工作,因为此时我觉得还有很多事情想做,比如那时候我还在用Java自己做一个3D游戏。但是大四寒假的时候,有个同学发了一个网页游戏公司的招聘链接给我,说这个公司还不错,我看了一下招聘要求,感觉自己符合要求,于是就顺手投了个简历。其实投简历之前,那时候北京GLU有位前辈想让我毕业后去试试。还有另一家互联网公司也是让我毕业后去工作。主要在于我大学期间经常在各个技术QQ群里帮大家解决问题,最开始他们以为我应该工作了几年,后来知道我还在上学,因此就想我毕业后去他们公司工作。后来肯定是我投的简历的公司让我去面试了,那天从下午2点面试到下午6点。从HR、主程序、制作人到CTO都面了。CTO面试的时候网络的BIO、NIO、多线程的安全问题如何解决也都问了。最后CTO说“你简历里写的都是Java做的图形界面,我们这Java都是做服务器,你接受做服务器吗“,我怕服务器又是做网站,于是问他”服务器也是做游戏吗“,他说“肯定是做游戏。我们做的是网游”。因此我就说“可以呀,只要是做游戏就好。”于是CTO接着说“你进我们公司肯定是没问题的,估计过几天会给你发Offer,你也不用去面试别的公司了”。因为我个人也懒得比较,既然CTO也那么说了,我就没去面试别的公司,在同学那玩了一周,一周后就入职了。
记得那时候CTO还问过我一个问题“你说你这么喜欢写代码, 你想写到几岁”,我说“30岁吧”。他问我为啥只写到30岁。我说那时候可能我是技术总监了。就不用写代码了。后来我30岁的时候,成为了技术总监。但是我还是喜欢写代码。其实兴趣是可以一辈子的。我也不知道为啥面试那时候那么回答了。
2011,第一个游戏刚进入工作比较紧张,总怕哪里做不好。第一周项目组说让我去改一下服务器列表。我那时候压根没有远程登陆过服务器改东西,主程就给了我IP、用户名、密码,以及网页的位置。于是我赶紧自己搜索了各种资料,在接到任务的半小时内,我第一次用SecureCRT登陆服务器,第一次用VI在服务器上修改文件。接着几天就是熟悉项目,我在服务器上自己找到了聊天的协议入口,然后加入了一些GM,给自己的账号加了赵云、吕布这些牛逼的武将。几天后,主程找我,说来的毕业生里面感觉你编程能力不错,你想去做新项目吗。我自然想体验从0开发游戏的过程。于是就满心雀跃地说“想!”。新项目开发的时候我充满了激情,基本上第一周我就完成了背包系统的开发。那时候公司其他游戏的数据存储都是同步的。主程就说,这个新项目估计用户交互会比较频繁和实时,同步存储怕会卡顿。于是我那一周开发背包的时候,顺便被服务器的数据存储写了个异步的存储。(后面该功能还被公司其他那项目组引用),立项一个月后主程就去了腾讯。而我们项目本来是公司的尝试性项目(公司其他项目都是SLG,而这个项目是RPG),因此也一直得不到重视,一直得不到重视。我们这项目加上我就2个服务器,开发了半年上线了。我对游戏业务非常熟,编程基础也还行,因此开发速度很亏,一个人开发了70%的系统。那时候很多同学问我,你做那么多,公司给你加工资了没有。我说没有,他们说,那没有你为啥做那么多。
其实有的时候不是你在这个位置才能做这个事情。而是你有能力、主动地去做这个位置的事情,做多了你自然也就是这个位置的人。因为我觉得没有哪个公司会愿意付出成本让你冒险。
项目上线的时候,公司也让我成为了这个项目的服务器主程。那时候我距离实习才半年,一直怕自己做不好,因此一直很努力提升各种能力。由于我开发的功能Bug极少,而且出Bug的时候修改极快,因此项目组的测试负责人说我说最受测试欢迎的程序,直到后来她去了银汉后遇到她,她还说她在银汉和测试部说,曾经有个程序员这样这样…
写程序出BUG是常见的事情,想要减少BUG数量,要思维谨慎,业务熟悉,而想要修BUG快速,需要对所写的东西都烂熟于心,我之前经常对别人说要做到代码在心中。如果你写的代码你内心都很清晰,那么出问题的时候,很快就能定位到问题。这就像,你的代码存在于内存中,查找肯定快。如果每次都是要去慢慢看代码文件,那就像每次都检索磁盘,肯定会慢一点。我之前好多个性能问题都是在走路和洗澡想到的解决方案,假如心中没有代码,又如何能做到呢?
2012年,第二个重量级IP游戏12年初的时候,公司准备做一个ARPG项目,是星爷授权合作的游戏《西游降魔篇》,那时候公司从我们第一个项目的表现觉得我们项目组还是具备比较好的研发能力的,因此这个项目就给了我们项目组。一开始公司让我做这个项目的主程序,我觉得我才毕业1年,我玩游戏很多,自知ARPG项目比我上一个RPG肯定要高。因此最开始希望公司能招一个经验丰富的主程,我可以过去学习。公司也同意了,主程入职了一直在看天堂2的源码,也拉着我看。我觉得天堂2的源码存在很多问题。比如各种在“父类中判断自己是否是某个子类”等。后来2个月过去了,连登陆都还不能登陆。因此制作人就问我,说你觉得他行不行。我也把我对天堂源码的判断说了一下。后来制作人说,要不还是你来当主程吧。那时候我觉得也行吧。反正本来想跟一个有经验的人学东西,结果反而他老来问我各种东西,而且开发进度也很慢。于是我就答应了。然后我又重新开始搭框架。第一周花了时间把网络、副本采用的线程模型搭好了。第二周CTO带着我做了场景。第二周我们已经可以多客户端同步移动、怪物有了简单的AI和普攻了。而且我为了减少和客户端连调的不便,还自己用Swing写了一个图形界面,用于显示服务器当前地图中各个角色的位置。(所以说,假如我大学的时候很功利地觉得学习Java的图形开发性价比不高,那么这时候我肯定没法自己快速完成这个工具)这个项目我们花了9个月上线。作为公司第一个ARPG项目,其实也很快了。项目上线后玩的人挺多,那时候单物理服导量的时候有6000人同时在线。不过这个游戏收费没有调起来。2013年,转战手游与创业西游降魔篇调了整整8个月都没把付费调起来,甚至越来越差。从最开始每月单服的700W变为几乎没有。此时已经是2013年中,我建议公司可以使用Unity3D(其实12年底已经说过一次,制作人说次年可以申请看看)开发手游,但是公司的战略明显还是在页游,因为公司靠页游已经做到借壳上市,不愿意也觉得没必要去踩手游的坑。公司唯一一个和手游有关的部门其实是把页游项目通过AIR发布为手游。这样出来的手游性能堪忧,而且体验也没有做针对性优化。于是在2013年8月,我就辞职自己去创业做手游了。自己创业肯定面临的是资金问题,短缺的资金不可能请得了很多牛人,因此我自己又开始做起了Unity3D客户端。把战斗等最核心的东西都自己扛下来。我们2策划、2程序、1美术从立项到做完Demo花了大概3个月,然后开始拿着手机去演示DEMO,去找投资。那时候的DEMO是用Unity3D做了一个2D游戏。因为我们唯一的美术人员比较擅长画画。Demo可以在这里看到:第一个Unity3D 的Demo(https://kakashi.blog.csdn.net/article/details/29365329)。我们大概找了4个投资人谈,最后确定了投资。2014-2015,第一次创业就像上面说的,创业资金的短缺,而且那时候Unity3D人员的稀缺,导致我们想找一个牛逼的人员根本不可能,因此我只能自己扛下战斗、Shader等核心的工作。那时候白天写服务器,教新人写代码,一行行代码地边敲边讲,晚上写客户端,最疯狂的几个月基本睡公司,凌晨5、6点入睡,早上9点半起来。那时候我用Unity3D,也只是为了为公司省成本,也没想什么太多的东西。结果也正是这段经历,使得我后来成为了另一家百人公司的技术总监。所以我还是挺相信一句话:但行好事,莫问前程!最后创业肯定还是失败了,其实还是因为团队成员的不成熟。因此在2015年中的时候,经过了几轮调整和测试后,由于测试结果表现不理想,我们就结束了创业。我并没有对这次创业感到后悔,毕竟那是一次宝贵的经历。而且整个创业过程也都是很充实,很开心。2015,西山居和多益网络创业结束后我觉得想找个公司积累一下。那时候只面试了珠海西山居和多益网络,西山居剑网3项目组也希望我过去,但我觉得我就是因为懒,最后选择了继续留在广州的多益网络。我学习可以很努力,但是对于公司的选择却经常是很懒。2016-2018,第二次创业在多益做的时间不长,基本过了试用期,以前第一家公司的制作人就找我创业。并不是因为我个人喜欢创业,其实我只想做一个成功的游戏,能被大家认可的游戏。那时候出去创业,更多是因为这位制作人以前对我不错,也是因为他我才能刚毕业就当上主程,因此这次创业,其实更多的还是报恩。这次创业的结果无疑还是失败的。2018至今,360游戏艺术(岂凡网络)技术总监2018年4月,由于以前带的一位程序的推荐,我便去了360游戏艺术担任技术总监。这时候刚好30岁,正好和刚毕业实习的时候自己说30岁可能会当上技术总监。实现了自己当初不假思索的一句话。但是回想起来,我这一路并没有为当技术总监去做任何刻意的学习与准备。只是我一路以来学习的都是自己喜欢的,做的都是自己喜欢的,而且该公司正好需要我目前拥有的能力而已。这也是我最后想和大家分享的,有的人会问怎么才能当主程,怎么才能当总监。我觉得不管当什么职位,重要的就是为公司解决问题,你能解决什么样的问题,你自然就能胜任什么岗位。而有很多舍本逐末的做法,其实看似近路,最后都是无尽的弯路。我觉得做什么都不重要,重要的应该想想,自己能为游戏这个行业做什么,平常应该怎么提升自我去成为行业真正渴求的人。当然我从任该岗位以来,一直也觉得自己还是做的不够好,也还在一直努力提升自己。今天正好有空,谨以此文,献给所有想为自己所在行业做点贡献的小伙伴!希望一起努力,共勉!

f5c68d046b5cf348e1bd4c0525b08d3c.gif

☞ 吊打 IE、Firefox,谷歌 Chrome 十年封神记

☞ 鸿蒙霸榜 GitHub,从最初的 Plan B 到“取代 Android”?

☞ 年薪10万,如何积累人生的第一个100万?

69057b88587288c34822f7a6212bddd9.png你点的每个“在看”,我都认真当成了喜欢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSM(Spring、SpringMVC、MyBatis)框架笔记——Spring入门

一、Spring简介 Spring是分层的Java SE/EE应用full-stack 轻量级开源框架, 以IoC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核。提供了展现层SpringM…

c++ 字符串拼接_字符串拼接新姿势:StringJoiner

来自:Hollis(微信号:hollischuang)在为什么阿里巴巴不建议在for循环中使用””进行字符串拼接一文中,我们介绍了几种Java中字符串拼接的方式,以及优缺点。其中还有一个重要的拼接方式我没有介绍,那就是Java 8中提供的S…

html5 内嵌网页_如何分析并优化网页的性能?新梦想软件测试

一个网站的网页是好是坏,往往是体现在速度和高度两个方面,速度是网页所展示出来的时间,能否为浏览用户节约时间。高度则是一个网站网页本身的质量,能否为浏览用户带来真正的好体验。然而看似简单的两个点,但是背后要实…

怎么修改file文件框的无文件提示_使用LativeLink时,DO文件编制步骤

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。今天和大侠简单聊聊使用LativeLink时,…

Spring笔记——数据源配置

常见的数据源(连接池)包括:DBCP、C3P0、BoneCP、Druid等接下来以C3P0为例讲述一下spring配置数据源的过程数据源的开发步骤 ①导入数据源的坐标和数据库驱动坐标 ②设置数据源的基本连接数据,将其放入jdbc.properties文件中 ③app…

间歇性掉帧卡顿_电脑卡顿问题靠它解决,我只能帮你到这儿了

因为不可抗力的原因,我们都要在家里呆上一段时间,在这期间之中如果电脑出现问题可是一件非常糟心的事情,因为没有人会去给你上门维修,线下门店又关门大吉,一切只能靠自己。抢救一下电脑最常见的问题就是卡顿&#xff0…

SpringMVC遇到的问题——GET http://localhost/spring_mvc_war_exploded/js/jquery-3.3.1.js net::ERR_ABORTED 404

学习SSM时遇到的问题GET http://localhost/spring_mvc_war_exploded/js/jquery-3.3.1.js net::ERR_ABORTED 404新建了js包,并在包下导入了jquery-3.3.1/js,发布项目后通过浏览器开发者工具 发现报错,信息如下:这个问题的解决方案&…

educoder平台_22个在线平台,2.4万门网课

截至2020年2月2日,教育部组织了22个在线课程平台制定了多样化在线教学解决方案,免费开放包括1291门国家精品在线开放课程和401门国家虚拟仿真实验课程在内的在线课程2.4万余门,覆盖了本科12个学科门类、专科高职18个专业大类,供高…

linspace函数matlab_从零开始的matlab学习笔记——(29)泰勒逼近函数

matlab应用——求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图....更多内容尽在个人专栏:matlab学习上一节我们成功制作了能自己转圈的三维螺旋…

点云数据生成三维模型_可直接编辑的高质量3D生成模型:三维深度生成方法SDM-NET...

机器之心发布作者:赵悠悠中科院计算所、香港城市大学、英国卡迪夫大学以及加拿大西蒙弗雷泽大学的研究者,近日提出了一种能够表达几何细节和复杂拓扑结构的三维模型深度生成方法 SDM-NET,解决了之前方法的一部分局限性,使得生成的…

golang调用java的函数_大话golang性能分析(一):profile基本原理

引言:好久没分享了,不多废话了,准备一个专题分三期来分享下golang的性能分析。O 专题目标理解profile基本原理熟悉go常用性能分析工具pprof快速对线上服务的cpu、内存、goroutine的问题进行分析和排查对性能分析,golang是采取采样…

奥拉星插件flash下载手机版下载安装_终于等到你!安卓微信7.0.13内测版发布 支持夜间模式 附下载地址!...

3月22日,iOS版微信迎来了7.0.12正式版更新,最大的亮点在于为iOS13设备加入了“深色模式”功能,虽然没有独立的控制开关,但可以跟随系统开启或关闭夜间模式。此外,iOS版微信7.0.12还优化了语音消息的发送体验&#xff0…

boost::weak_ptr和enable_shared_from_this

boost::weak_ptr和enable_shared_from_this shared_ptr在我的实践中使用很广,在接口层面上,我基本都会默认的使用shared_ptr.而weak_ptr则很少使用;即便使用,也是间接的使用,例如使得class A继承自boost::enable_shared_from_this,这样A便具有了一个weak_ptr的成员对象,我便可以…

linux(centos7)安装jdk

一、下载jdk1.8压缩包 官网链接如下: jdk官网 用xftp直接传输文件, 把下载好的jdk压缩包上传到Linux的文件夹下去到我们存放软件的文件夹下面,将刚刚下载好的压缩包通过如下命令进行解压: tar -zxvf jdk-8u321-linux-x64.tar.g…

inner join 和join的区别_left join、right join和join ???

点击上方“JAVA”,星标公众号重磅干货,第一时间送达有个困扰 说到SQL,很多人可能用了挺久,但依然有个问题一直困扰着,那就是 left join、 join、 right join和 inner join等等各种 join的区别。网上搜,最常…

linux(centos7)安装MySQL

一、删除MariaDB的文件 通过命令查询MariaDB:rpm -pa | grep mariadb 通过命令删除查找到的程序rpm -e 查找到的文件名 如果删除失败,就通过下面的命令强制删除:rpm -e --nodeps 查找到的文件名 二、安装MySQL 1、安装mysql repo源 …

我有机器人合体成一个大力神_史上最菜大力神(三)——SS加强级高塔

史上最菜大力神(三)——SS加强级高塔​mp.weixin.qq.com上次开箱废渣和狂暴的时候,误把电影中出现的高塔当作废渣,犯下了一个不大不小的错误,如今真正的高塔终于来了。史上最菜大力神(一)——SS…

c语言判断闰年_C语言1博客作业06 - D丶千思

1.作业头实验作业输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。.1数据处理数据表达:采用整形定义变量Y(year),M(month)&#x…

新版本idea的run/debug configuration

点击Edit Configuration点击modify options的下拉选项根据需要勾选相应的选项