我想开发软件开发工作总结,自作游戏,但不知道学那种语言。

当前位置: >>
老多年前就天天在NBE游戏论坛里面看各位大神们的帖子,当时我在手动做梦幻西游项目,那时也是我的人生最迷茫的时期,那时每天都来NBE论坛看看,从来没发过言,但收益颇多。今天忽然又想起了这个神奇的网站,心血来潮,讲讲我高中毕业后从一个游戏工作室的屌丝,从开始学写外挂奋斗到现在公司的核心程序员(技术主管)的经历。先简单自我介绍:高中的时候天天玩游戏,高考只考了230多分,然后毛线学校都没考上,自己混混沌沌家里花钱给上了个大学,在大学里面也没去上几天课,天天就是自己在租的房子里面疯狂的玩游戏,我玩的游戏很多很多,从红警,到传奇,魔兽争霸,梦幻西游,DNF,lol,刺客信条系列,使命召唤系列,孤岛危机系列,英雄无敌系列,全部都玩过。还玩过劲舞团,澄海3C,以前的家用游戏机也玩过很多很多的游戏,算是一个游戏的铁忠粉。我人生最迷茫的时期就这样,大学也没上几天课就毕业了,当时正在疯狂的玩DNF,再以后,想着总是要赚钱的,有一天我忽然心血来潮就决定要搞梦幻西游赚钱,当时在网上认识了一个玩梦幻赚钱的人,他把我带到了坑里,那时候真的是全部心思都用到那个上面了,我自己买了三台二手电脑,1000多一台,再加上我原来的那台电脑,四台电脑就凑齐了开工了。当然,也不是开始就凑齐的,中间还有很多过程,反正当时就是租了个房子开始疯狂的玩梦幻西游了,那时候真的是很苦很苦,也许我没有天赋,赚的钱真不够吃饭交房租的,每次到交房租的时候都会推很长世间才能给房东交上,不过当时的房东老太太人挺好,也没说过我什么难听话,最难熬的是收物业费的,那真是能天天来敲我的门,从他们的语气里我都能感觉出来他们真的很看不起我,因为我每次都拖,都交不上。就这么苦我还坚持做了一年半多,我真是佩服我自己。当时动不动就没钱吃饭了,当时我妈妈爸爸也天天打电话骂我,我爸爸还来我当时住的城市看我一次,当时就跟我说,让我回家,他给我找工作,当时的我就是一根筋,我跟我爸爸说,我们家条件不好,不能给我提供好的发展道路,但是你们要给我时间,我要自己发展,我是肯定不会回家的。(我从小跟父母的关系都不好。我爸爸也没强迫我,他就走了)真觉得自己无能,都养活不了自己。当时还出了很多让我崩溃的事情就不一一列举了。一条现在看来对的路事情的转机是当年的暗黑破坏神3还是2出来的时候。当时我听说一个消息,也不知道是真的假的,说有做外挂的大神,做暗黑破坏神,一天赚好几百万。当时我认真思考了几天,决定要走这条路。然后,写外挂我又不知道从哪里开始入手。又听说需要学编程,我就百度了一下,知道了最好用最难学的语言就是c++。然后我就决定要自学c++语言。之后的一段时间,我把我的二手破电脑都给卖了。卖了电脑的一瞬间觉得特别特别轻松,那时候玩梦幻真的很累,那么多号,刷抓鬼,我自己搞了个五级家具帮。天天累的跟傻逼似的,还赚不到生活费,别说存钱了。卖电脑的那一刻真的觉得特别特别轻松!(做过游戏工作室的应该都了解这种感觉吧?)再之后的日子我开始学c++,真的很难学啊!我的高考成绩在那里放着呢,230多分啊!而且已经老多个年头没有看过任何书了,报培训班要好几万的学费,没有!当时我就开始懵懵懂懂的自学之路,本来计划半年学会做游戏外挂的,只能说当时太年轻!三个月以后还TM没入门呢我,之后我就又开始恐惧,我就想尽办法天天自己给自己打鸡汤。熬到没钱吃饭以后,又重拾起自己的梦幻,没钱吃饭的时候就去网吧玩俩天梦幻赚一百块钱,然后回来继续学习(当时为了控制住自己能安心学习,我把手机停了,把网停了,搬到一个村里的小破屋里租的房子)。就这么坚持了又大半年,还是很悲剧,深入学习之后我发现,编程这个东西,如何没人教的话,真的写不出来外挂!对的路上认真的学习工作再之后,我又思考了几天,决定起身去北京找工作,边打工边学习!然后我就带着随身的500块钱(我把我的最后一台电脑给卖了!)只身前往北京找程序员的工作,上天还是很照顾我的,我在北京找工作出奇的顺利,只用了一个星期就找到了,当时我激动的都哭了!虽然工资特别底,这已经是15年3月份了,才给我3000的工资,(北京随便一碗面条都要12块)。但是我真的非常开心,认认真真的工作,认认真真的学习,在公司老大的教导下,不到一年时间,我学会了超级多的编程知识,三四个框架库。再之后,去年年底没要年终奖就辞职换到现在的这家公司,又经过我的努力,现在我是这家公司的技术主管,主程,公司的所有软件都是我一手做或者我带的,而且我这家公司还是一家大公司。虽然软件部门才三年,算是新部门。但是我只用一年多的时间做到现在这个样子,我真的已经很佩服我自己了。现在我手下有四个程序员小弟小妹,全是我亲自招来的。我现在还是做不出来外挂,公司也不是做游戏的,我好像离游戏越来越远了............后记:写了这么多,又好像也没写什么东西,我就只是说下自己的过程跟大家交流下。现在,我给我爸爸买了辆车花了13万,自己买了很多电子设备,比如说苹果7,surface pro4什么什么的,希望我的故事能给大家一些启发,我认为,选路子真的很重要!谁都很努力,扫大街的每天早上4点就起床开始工作了,但是呢,我还是想说,路子真的很重要!
本文&&原创,禁止转载!地址:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
骑牛撞交警
万一我非要自学咋办
骑牛撞交警
万一我非要自学咋办
虽然评论中有些不好的看法,但这是一个好的故事,人活着就要有梦想,没有梦想,和咸鱼有什么区别。
我表示我入门学的C#.Untiy,那我是不是一年之后就能来这边吹牛逼了。
要学的不是编程,而是思维。
这孩子只学了技术没看市场,你进的大公司产生利润的是哪里,网络部门只是老板随时代发展需要设力的,成立没多久就看出来。
【我把手机停了,把网停了,搬到一个村里的小破屋里租的房子】
写的什么东西,谁TMD的能告诉我!!!
高考230 大专都没人要吧
然后自学编程
然后进去大公司
然后赚了很多钱
你tm的是修真小说看多了了吧
满嘴跑火车
15年去北京
现在就给你做主管了呵呵
哈哈,想不到我的文章竟然上主页了,真是惊喜。
为什么有只牛在天上飞
我咋觉得作者要表达的意思是:你们这些垃圾大学狗,劳资高考230分,现在靠自学比你们都强,做你们老大,你们上个破大学有毛用。
大学真的很重要,上过大学的和没上过大学的差别还是很大的。当然我说的是认真上大学的人
其实,我看这篇文章重点在说的是运气很重要。。。
努力的人运气都要比不努力的人好不知道多少倍
你文章里貌似也没见到你多努力啊,只见到你高考230分,然后各种不如意。然后去北京,这次运气好到爆的你被录取了,然后就有了今天。
别自己成功了,就瞧不起别的行业的人。也别瞧不起别人的努力
没有瞧不起,但是我做了一年半,真的觉得我没有天赋,或者说这行现在真的没有以前赚钱了,现在各种限制,根本是累死个人(俩年前已经是各种限制了,今年的话应该限制更多,我也不了解,毕竟已经俩年没做了)毕竟是灰色产业。
好吧,我替那家公司的软件品质担忧!而且我也怀疑此文的水分!
不用担忧,本人一年多的时间已经做了十多个展馆了,临展也做了三四个了。都做的很好哦
任你吹我也不相信:“一个没有基础的、没有经过长期磨砺的速成者能真正懂得软件的真谛。”当遇到一个程序员,说出像你上面的那些话时,我就心里暗暗发慌。软件开发是一个系统工程,尤其是商业软件,不是一个人带几个小弟就能自信说出“很好”的,说出那样的话,只能说明你没见过真正的软件开发。
这篇文章充分说明了,好好敲代码比玩游戏赚钱靠谱的多。
不同行业,彼此看对方都是雾里看花而已,程序员也有混得落魄的,游戏的也有飞黄腾达的。所以最好二者兼备,左右逢源。
c++ primer 第5版 啃的我生活不能自理
哈哈易语言
呵呵,当看到你回复“哈哈易语言”的时候,就知道你的肤浅了。微软当年是Basic起家的,尽管现在Basic已经很少看到了。易语言对于开发辅助来说,比别的语言更容易上手,可以使用的模块也很多,绝对是无基础开发者的福音。可以不夸张地说,甚至存在不少易语言开发者开发出来的软件,技术含量比你吹的那些技术含量高得多,赚的钱也比你吹的赚得多。总之,易语言是用来使用的语言,是用来赚钱的语言,不是用来装13、不是用来哈哈的语言。易语言简陋、粗糙、运行效率低下、像个玩具,但是上手快、资源多、配套好、开发效率高、见效快,绝对是游戏蹲坑苦逼青年杀人越货居家常备工具。
方向错了。学软件最好有人带。如果有人带还生活不能自理,那么就是带的人不怎么样。
是的,最好有人带,或者说必须有人带,除非你是那种特别牛逼的不行不行的天才,反正我还没见过那种神人,c++primer虽然书名是入门,但是它真的不适合第一本就读如果你零基础的话,我读过c++ primer plus它才是真正的适合第一本入门的书籍
嘿,任你吹我也不相信文章写的是真实的。关于学习软件开发,实际情况是,C++根本不适合入门!尤其是没有基础的那些,10个学C++的人,学到指针及内存已经倒了一半了,剩下的,到了类与对象时,又倒了一半,到了重构、泛型时,怕是没人影了吧。C++类书籍,太重视语言本身,忽略了语言是用来使用的。所以,我一般建议无基础的,直接用易语言得了,学了就用,边学边出效益,等建立起程序开发的思维后,再根据情况决定是否需要学习C++。C++真的不是绝对需要学的那种语言,其实我知道这行,有很多作者直接Delphi搞定的,干净利落漂亮,哦,人家也懂汇编的,好吧!哈!再懂汇编的人眼里,一切都是汇编,管你语言千变万化。
不错啊,很有启发
说来话长,不知从何说起,那就从头开始吧。哈哈。2012年的夏天,我干着一份临时工的工作,每天都像行尸走肉一样,却怀着一颗天生我材必有用的心,一筹莫展,...
Duang~ Duang~ Duang~全网性价比最高的手游脚本平台,游戏蜂窝入驻NBE商城啦!游戏蜂窝是一款按键精灵旗下的手游脚本分享平台,平台活跃...
前言:我不是触动精灵脚本作者,但我很喜欢用触动,从一开始的普通版到现在的企业版,一路走来看着触动精灵越来越强大,我用起来也越来越方便。说回正题,讲一讲...
本人与同学大学毕业后都去到了某新一线城市中做个小小蓝领,同学在做游戏开发,本人做着ERP系统开发维护,都还过的不错,周末拉上几个朋友小聚,因为在同一个...
随着手机游戏越来越重度化,发热、屏小、易卡顿等问题严重影响用户玩游戏时的体验,电脑玩手游需求日益增长,PC模拟器受到越来越多游戏玩家的关注。日前,全新...
《绝地求生:大逃杀》的大火爆,又一次带动了外挂产业的繁荣!(虽然官方公布近几日又封了数万帐号,但,这都没用!中国玩家不差钱!)已经好久了,没看到写外挂...
我第一次玩网络游戏是在高中时期,那时候传奇世界还是挺火的,对于刚进入接触到网络游戏的我,对我有着很强的吸引力,连上课都想着怎么学技能,学习也落了一大截...
玩天谕也有2年多了(之前撸DNF),从最开始的岩锤开始搬砖,当时就同步器每天就刷驱魔和战场得驱魔积分和军姿,拿这些换不绑定的龙纹帝印,当时只有16台,...
接触网络游戏是从十年前就开始了(我的时间观念不是太强,过去的事,都感觉是昨天发生的,所以没有精确的时间界定,敬请见谅!)我有一份很鸡肋的工作,当时收入...
2008年读高中时老头给买了人生中第一台电脑,配置是I3 2G内存 350G蓝盘,并且拉了2兆的网线,从此开启了我的网游人生。这台机陪伴了我4年,就一...
猜你喜欢本年最热
游戏工作室_本月最热我想成为游戏开发程序员,要学些什么?_百度知道
我想成为游戏开发程序员,要学些什么?
1.图形引擎
2.声音引擎
3.物理引擎
4.游戏引擎
5.人工智能或游戏逻辑
6.游戏GUI界面(菜单)
7.游戏开发工具
8.支持局域网对战的网络引擎开发
9.支持互联网对战的网络引擎开发
下面逐一介绍每个部分:
1.图形引擎主要包含游戏中的场景(室内或室外)管理与渲染,角色的动作管理绘制,特效管理与渲染(粒子系统,自然模拟(如水纹,植物等模拟)),光照和材质处理,LOD(Level Object Detail)管理等,另外还有图形数据转换工具开发,这些工具主要用于把美工用DCC软件(如3DS Max,Maya,Soft XSI,Soft Image3D等)软件制作的模型和动作数据以及用Photo shop或painter等工具制作的贴图,转化成游戏程序中用的资源文件。
2.声音引擎主要包含音效(Sound Effect简称SE),语音(VOICE),背景音乐(Background music简称BGM)的播放。SE是指那些在游戏中频繁播放,而且播放时间比较短,但要求能及时无延迟的播放,VOICE是指游戏中的语音或人声,这部分对声音品质要求比较高,基本上用比较高的采样率录制和回放声音,但和SE一样要求能及时无延迟的播放,SE在有的时候因为内存容量的问题,在不影响效果的前提下,可能会降低采样率,但VOICE由于降低采样率对效果影响比较大,所以一般VOICE不采用降低采样率的做法。BGM是指游戏中一长段循环播放(也有不循环,只播放一次)的背景音乐,正是由于BGM的这种特性,一般游戏的背景音乐是读盘(光盘或硬盘)来播放。另外一些高级声音特效,如EAX,数字影院系统(DTS5.1),数字杜比环绕等。
3.物理引擎主要包含游戏世界中的物体之间、物体和场景之间发生碰撞后的力学模拟, 以及发生碰撞后的物体骨骼运动的力学模拟(比较著名的物理引擎有havok公司的game dynamics sdk,还有open source 的ODE—Open Dynamics Engine)。
4.游戏引擎主要是把图形引擎、声音引擎、物理引擎整合起来,主要针对某个游戏制作一个游戏系统,其包含游戏关卡编辑器,主要用途是可以可视化的对场景进行调整,光照效果和雾化等效果调整,事件设置,道具摆放,NPC设置,另外还有角色编辑器,主要用于编辑角色的属性和检查动作数据的正确性。一般日本游戏公司的做法,他们会把关卡编辑器和角色编辑器直接做到游戏中,所有的参数调整都在游戏中通过调试菜单来进行编辑,所以一般他们把这部分调试菜单的功能做的很强大,同时在屏幕上实时的显示一些重要的信息,这样做的好处是关卡编辑器调整的效果直接就是游戏的效果,但是对于程序的重用性来说可能不是很好,比如说要用到另外一个游戏项目中就比较难,除非两个游戏类型相同,只要把场景和角色数据换一下,还有做下一代产品也没有问题,只要根据式样增加调试菜单的功能就可以了。
5.人工智能和游戏逻辑开发,这部分日本和欧美的游戏开发模式也有很大不同,在欧美游戏公司中运用脚本语言开发很普遍,所以这部分程序开发主要是用脚本语言编写,而且脚本程序和游戏程序的耦合性很低,有单独的编辑、编译和调试环境,这样比较利于游戏程序和关卡设计开发分开,同时并行开发,所以一般他们都会有专门做关卡设计的程序员岗位。而日本游戏公司脚本语言一般和游戏的耦合性比较高,一般通过一些语言的宏功能和一些编译器的特定功能来完成一个简单的脚本系统,所以一般这些脚本程序只能在游戏程序中进行调试,而不能在一个单独的脚本编辑,编译环境中进行开发。
6.游戏GUI界面(菜单),主要是指那些游戏中用户界面设计,有做的复杂,有简单的,做的简单就是2D GUI界面,做的复杂有3D GUI界面。
7.游戏开发工具主要包含关卡编辑器,角色编辑器,资源打包管理,DCC软件的插件工具等开发。
8.支持局域网对战的网络引擎开发,主要解决局域网网络发包和延迟处理,通讯同步的问题,有同步通讯和异步通讯两种做法,异步通讯用于那些对运行帧速要求比较高的游戏,同步通讯相对异步通讯来说效率相对低,但是同步通讯的编程模型相对异步通讯来得简单一些。
9.支持互联网对战的网络引擎开发,目前大部分网游都是C/S结构的,服务器端软件配置管理,服务器程序的最优化,还有游戏大厅、组队、游戏逻辑处理、道具管理、收费系统等。另外还有一些网络系统是C/S和P2P两种结构混合的,如XBOX Live等。
程序员在游戏公司中的岗位在日本游戏公司和欧美的游戏公司有些不同,日本游戏公司中程序员的岗位主要有技术监督(Director),主程序员(Main Programmer),程序员(Programmer),在日本游戏公司里负责游戏项目开发的程序员,一般不会专门根据工作内容划分程序员,除了独立的系统研究室和声音系统制作部门(这两个部门是比较独立的,往往同时给好几个项目服务),负责每个游戏项目开发的程序员,随时都可能一人多职,比如说主程序员除了负责整个游戏系统以外,可能还要负责图形或声音引擎开发等,程序员除了人工智能以外还有菜单制作等。这种情况在欧美的游戏公司比较少见,他们分工的比较细,一般有图形程序员,声音程序员,人工智能或游戏关卡程序员,物理程序员,每个组中可能还会有一个Leader。
这一点,日本公司和欧美公司也有些不同。日本公司一般喜欢从一些高校中招聘一些应届优秀毕业生,一方面比招聘有经验的人要来的成本低,另方面新人是一张白纸,容易培养,像SEGA、KONAMI等都是按这种原则招聘员工的,所以想进入日本游戏公司,你要学好你的软件课程。而欧美公司希望招聘进来,能马上进入项目的开发中去,所以他们一般希望招聘有工作经验的人,即使不是行业中,在相关行业中工作2、3年的也可以,所以想进入欧美游戏公司你的工作经历很重要。
我觉的一个游戏软件程序员,最起码的要求是熟练掌握计算机本科专业所学的知识,主要包括C语言或C++语言,数据结构,编译原理,算法等,另外线性代数、微积分、牛顿力学在图形和物理引擎开发方面用途也很广泛,如果要提高的话还有必要了解硬件相关的知识如计算机体系结构、汇编语言,这些对我们学习一个新的硬件平台、编写最优化代码、提高自己游戏的竞争力都是非常有益的。另外,保持有恒心、不怕苦(比如说通宵加班)的心态,对游戏的热情也是非常重要的。对于那些想进入游戏行业,但缺乏软件开发知识的人,可以通过参加游戏开发培训来
现在有很多人,计算机本科毕业,学了很多软件开发的知识,但是一旦要用到实际的项目开发时,感觉无从下手,这主要是在学校里运用知识的机会太少了。所以学习游戏编程最好的方法是能实际参与到一个好的游戏项目中和有丰富开发经验的人一起开发游戏,可能学到很多你从书本上学不到知识和技能。但有时候你一时还没有机会参与到一个好项目中,没有机会进入一家好的游戏公司,但是你对游戏开发有一腔热情,很希望学习游戏开发的技能,那你就应该去参加专门的游戏开发培训,因为游戏开发培训班中的老师都是一些有丰富开发经验的老师,一般都有五年丰富的项目开发经验,听他们的课,实际上就是在和他一起分享这么多年的开发经验,另外游戏开发培训课程中会专门设计一些项目和课题,它们本身就是可以直接运用游戏开发中,这样你可以不进入著名的游戏公司,但可以学到这些公司中一些常用的开发技能。另外还有一种方法经济实惠的方法,参加一些网上志愿者的开源项目,这些项目从品质来说有好有坏,选择一个好的项目非常重要,另外他们中间本身有许多是业内人士,本来你要进入他们公司,才能学习到他们的经验,但是通过开源项目,你就有向他们学习的机会了,说不定哪一天,你就进入一家知名的游戏公司了,不过目前开源的完整游戏项目好的不多,到是在图形引擎和物理引擎方面有一些很不错的开源项目,但要加入进去的话,你的基础一定要好啊,有些开源的团队也不是随便什么人就能加入的。
采纳率:95%
为您推荐:
您可能关注的内容
游戏开发的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。后使用快捷导航没有帐号?
 论坛入口:
  |   |    |   | 
游戏编程十年总结:任职主程那些年我踩过的坑
评论数: 10
-0.jpg (61.82 KB, 下载次数: 47)
15:31 上传
  GameRes游资网授权发布 文 / 深圳-宝爷
  自敲第一行代码起,已经十年多了,今天既不是十年整的日子,也不是一个有特定意义的日子,本来像这种大总结的文章,当择良辰吉日,斋戒沐浴三日,方可动笔。一开始计划是写一篇五年总结的,但各种原因一拖再拖,于是就变成了十年总结。光阴似箭,时不我待,转眼已经在奔三的路上了,离大叔的称呼很近了,但离大神的称呼还很远,在此谨以此文总结反思这十年技术生涯的点滴,与诸君共勉。
  编程之前
  大概是读初一的时候,家中有幸让我得到了一台二手电脑,那时的心情比现在让我得到一堆苹果电脑更加兴奋。但这是一台不能连网,也没有任何游戏和软件的电脑(扫雷、纸牌接龙等内置程序除外),这样的电脑能有什么用呢?只能瞎折腾,很快电脑被折腾坏了。去电脑店修了几次之后(被宰了几次),决定自学电脑维修。
  跑了很多书店才买到跟电脑维修相关的书籍,也就是在这时建立了对计算机的初步认识,并掌握了屡试不爽拔插内存条、重装系统大法。还从帮我修电脑的大叔身上学到了修电脑的装逼套路,在帮别人修电脑时不论如何,一定要进一下BIOS捣腾一下,一定要在DOS的黑窗口下快速地敲几条命令,让旁人看不懂,以彰显我的技术高超。在2002年左右,像老家那种小地方,估计会重装系统的人都不多。
  之后从修电脑的大叔那买了不少游戏碟,如CS、红警、帝国、炎龙骑士团等等,安装游戏是一个隐藏天赋,只要把游戏碟插入光驱中,这个隐藏天赋就会被自动激活,自己摸索着把游戏装上去。从此电脑上的内容开始丰富了起来,获得了近视成就。玩游戏的同时也对游戏和游戏的背后产生了浓厚的兴趣,那时候经常会思考游戏是怎么做出来的?实际上更多的同学比我接触电脑和游戏更早,但他们对游戏的背后并没有什么兴趣,所以他们现在很多都成了小老板,而我成为了苦逼的程序员。
  初学编程
  2005年的某日,应该是在信息技术或数学课上,第一次接触到了编程语言Basic,一开始用的并不是VB6.0,而是一个蓝底黄字的命令行IDE,虽然只能倒腾出HelloWorld和一些简单的数学程序,但对此仍然有着浓厚的兴趣,因为我知道了游戏是通过编程来实现出来的,那时候满脑子都是,游戏是怎么做的?但没人告诉我,我只能自己探索。
  这时候对程序的了解,也只是最简单的一些语法而已,直到一个亲戚送了一套VCD,是开天辟地的视频教程,里面介绍了VB6.0,在我看来,那是非常适合新手,培养程序思维的一套教程,在大叔那买了3块钱一张的VB碟子,装上VB6.0之后,就跟着视频中的示例操作起来了。于是我写出了人生中的第一个游戏,一个猜数字的小游戏,并尝试着改变游戏的规则,制作类似石头剪刀布这样的游戏。
自敲第一行代码起1238.png (83.02 KB, 下载次数: 51)
15:17 上传
  视频教程中的东西很少,很快就学完了,但这远远不够,我只能写出一些简单的数字游戏,寻找新的资料成了当务之急,但骑着单车翻遍了老家周围方圆十几公里的新旧书店,都没能找到合适的资料,如果是在广州深圳这样的城市或者是像现在这样的网络环境,应该可以很快地找到合适的资料,最后通过学校的上机课,上网找到了一本《Visual Basic游戏编程21天自学通》的书,学校的网速经常只有几KB,寻找以及下载这本书都相当不易,实际上这本书也不是最适合我的,中间存在严重的知识断层,但是最终我硬着头皮挺过去了。
  书中的第二个例子是一个模拟细胞生存的游戏,里面用到了一些简单的数据结构和算法,但在这时候我还不知道什么是数据结构,对书中的代码尽是问号,大约经过了一周的死磕,在炎炎夏日,昏暗闷热的小房间里,汗水不断流进眼中,不为所动,因为完全沉浸在代码中了,全神贯注地做一件事情,这是一种奇妙的感觉,这段回忆很是深刻。
  最后终于将细胞生存的游戏跑起来了,这是我到目前为止写过最酷的东西了,并且在这个例子中领悟了简单的数据结构与算法,贪吃蛇怎么写?飞机游戏怎么写?俄罗斯方块怎么写?五子棋怎么写?似乎都能从脑海中模拟出来了,应该用怎样的结构,怎样的逻辑?我想这就是初步的程序思维了。接下来的时间里,我将脑海中想到的游戏都一个一个地实现了,虽然实现的效果看上去惨不忍睹(使用Windows自带的画图工具绘制)。但依然是很有成就感的。细胞生存小游戏用的大概是一个简单的图结构,在做贪吃蛇的时候,依葫芦画瓢,写出了一个链表结构,然而直到后面学习c语言的时候,我才知道这是数据结构、是链表......
自敲第一行代码起2066.png (60.66 KB, 下载次数: 53)
15:17 上传
自敲第一行代码起2200.png (181.03 KB, 下载次数: 50)
15:17 上传
自敲第一行代码起2332.png (80.47 KB, 下载次数: 50)
15:17 上传
  虽然写出了一些简单的游戏,但我想写的远不止这些,我想变强啊啊啊!!!我想写出更好玩更炫酷的游戏,就像当时非常火的游戏《大话西游》,什么代码可以写出这么炫酷的画面,什么代码可以让两个人的屏幕同步出现这么炫酷的画面呢?后来在云大组织的广州skynet大聚会上面讨论实时同步方案时,提到过在高中时就有在思考大话西游的实时同步,大家都笑了,这是一句缓解个人紧张情绪的话,但并不是信口开河。
  《Visual Basic游戏编程21天自学通》介绍了DirectX,看上去使用它就可以写出更酷的游戏,但书中的代码片段无法编译,而且并不是循序渐进地介绍DirectX,挣扎了很久只能放弃。
  在这之后,又学习了一下ASP、Html以及JavaScript,这一方面是因为对网页开发也略有兴趣,另外一方面主要还是没有好的学习资料,有什么资料就学什么。
  当我知道,做游戏应该用C/C++语言的时候,就开始寻找C/C++的资料,那时候没有找到合适的入门书籍,不知从哪里找来一本VC++的编程书,一上来就是MFC框架的消息映射,各种控件等等,让我觉得,C++真的好难啊。
  学校的上机课,我都用来找资料,下载资料。在网上找到了一些简单的C语言资料,开始自学C语言,那时候最最让我头疼的就是指针了,听很多人说指针很难,所以在这方面下了不少功夫。初步掌握了C语言之后,接下来开始学习一本《C语言游戏编程从入门到精通》,虽然没让我精通,但还是跟着写了一些简单的小东西出来,学到了不少古董级的知识,例如如何用图形模式调用哪些系统中断来绘图,这些大概是最古老的像素游戏的开发技术了。
  学生的时间是最多的,上课的时间,脑海里想的都是游戏编程,偷偷地看着编程书籍。高中三年过得很快,转眼就到了高考。像我这种不爱学习不认真上课的人,自然考不出好的分数,那时候对未来的憧憬大概就是,如果考得不好,那就在一家小网吧里面当当网管,修修电脑,继续这种自学编程的日子。最后高考虽然没考好,但还是考上了位于韶关的一所没有什么名气的大专学院,在那里,由于佛祖的庇佑,我的技术迎来了一个飞跃,并结识了不少益友。
  大学之路
  高考之后的暑假,决定系统地学一下C++,由于家里拉上了宽带,所以极大方便了我找资料,在网上找到了孙鑫老师的C++视频,通过这套视频对C++、面向对象和MFC,都有了一个初步的了解,但对很多概念都还是一知半解。
  暑假很快就过了,2008年的九月份,来到了学校报到,饱受了缺乏资料之苦后,看到大学图书馆中海量的计算机书籍,仿佛几年没吃肉的人看到一盘美味的红烧牛肉!这次的兴奋仅次于得到生命中的第一台电脑。在图书馆中找了一些VC++21天自学通之类的书籍,巩固了一下C++基础,以及如何使用C++来开发游戏的《VC++游戏开发》一书,读完后尝试着用了GDI写了一些游戏,例如《坦克大战》(这个应该是第二学期做的)。另外也巩固了一下VB的基础,使用VB做了一个简单的系统管理工具,有点类似优化大师。
自敲第一行代码起3724.png (396.54 KB, 下载次数: 41)
15:17 上传
自敲第一行代码起3856.png (224.59 KB, 下载次数: 46)
15:17 上传
  由于高中阶段的努力,让我自认为在同龄人中的技术已经是很不错,开始有些骄傲膨胀的时候,蚊子和志仔的出现狠狠地打击了我的“嚣张气焰”,学无止境,一旦满足于当前的技术,那便是逆水行舟不进则退。
  蚊子并不是我们学校的,是一位大学同学的高中同学,同他一见如故(其实那时候尚未见面),但相似的经历,对技术的热爱,让我们有很多的共同语言。蚊子和志仔都是从高中便开始自学编程,并且学得比我好得多,大一时蚊子已经制作了不少看上去还不错的软件作品,对游戏外挂也略有研究,蚊子推荐给我的《Windows游戏编程大师技巧》,让我受益匪浅,后来此书成为了少数几本我反复翻阅多次的书。《C++Primer》和《EffectiveC++》是另外的两本,通过这些比较经典的书,我慢慢理解了C++和VC++的区别,面向对象、泛型。
  志仔是一个超级邋遢的人,发型杂乱,每次见他都穿着拖鞋和大棉袄,然后挂着一条鼻涕。但很多时候看上去越邋遢的程序员越牛逼,大一的时候他就已经在研究木马之类的东西了,不是简单地使用工具,而是开发木马,终端控制,屏幕传输,视频压缩等等,都是他自己做的。对于php等网页编程,他也颇为擅长,对于OpenGL和一些图形学算法也有研究,这两个家伙都自己写过操作系统(当然,不是大一的时候),毕业之后,他们变得更牛逼了。受志仔和凯文米特尼克的影响,那时候花了一段时间玩了玩黑客,但仅仅只是停留在表面,玩了一段时间发现,编程才是王道,于是丢下手上的黑客工具包,继续回到编程的正道上,有牛逼的对手一起前进,路上才有意思,这种相互竞争相互追赶的感觉非常地美妙。
  大学前期基本都是围绕着C++游戏开发学习的。在大一的第二个学期,接触了汇编语言,这是一种与之前的语言完全截然不同的语言,需要运用新的思维方式,应该算面向寄存器编程,看了一些汇编教程之后,自己调用各种中断,用汇编写了一个打飞机的小游戏。在后面接触了面向对象的思想之后,就渐渐把汇编忘干净了。在五一的3天假期中,准备了泡面在宿舍闷了3天时间,把之前没看完的孙鑫视频看完了,初步理解了C++的类、MFC、多线程、网络编程。并制作了一个内网聊天工具,在网上断网之后可以和其他宿舍的同学聊聊天。
  从大学开始就总是给自己制定着一堆完不成的学习计划,因为不想让自己有借口停止学习。特别是寒暑假,回家的行囊中总是塞满了计算机的书。
自敲第一行代码起4987.png (622.62 KB, 下载次数: 45)
15:17 上传
  大二之后,我渐渐被两位大牛甩在了后面,因为认识了我现在的老婆,这是一段一波三折的复杂故事,这里就略过不谈了。虽然学习的时间少了很多,但大二这一年还是看了不少书,例如C++Primer、EffectiveC++等等,对C++的理解上升了一个层次。DirectX3D相关有Windows游戏编程大师技巧,精通DirextX3D图形与动画程序设计、DirectX9.03D游戏开发编程基础等等,OpenGL相关的有OpenGL游戏编程、Nehe的OpenGL教程以及计算机图形学等等,对3D编程的理解又上升了一个层次,计算机图形学一书介绍得非常深入,如果完全理解了此书的内容,几乎可以不依靠OpenGL和D3D手动实现一个软渲染3D引擎。另外由于课程需要,还系统学习了Java语言,看完马士兵的Java视频,非常过瘾,顺带学习了一下设计模式,感觉对面向对象的理解又上升了一个层次。如果说大一学习的是如何将代码写对,那么大二学习的更多是如何将代码写好。
  除了看书之外,大二还做了一些兼职,例如在勤工俭学那边帮忙送桶装水,送一桶水大概能赚5毛钱。与这种苦力活比起来,赚大钱的脑力活更适合我,辅导员给我和志仔介绍了一份兼职,维护一个PHP门户网站,每个月两三百的收入在那时看来已经颇为丰厚了,做这份工作也学到了蛮多东西,例如mysql数据库,还有网页抓取,正则表达式等等。
  除了看书和兼职之外,另外还做了一些小玩意,例如用自己写的简陋的OpenGL游戏引擎做了个3D的坦克小游戏(3D模型文件的加载是自己在官网研究这种文件格式,然后手写的一个模型文件解析和渲染类),另外还学习了生命中的第一个游戏引擎——HGE,在七夕的这天花了一个上午用HGE制作了一个《鸭子下楼梯》小游戏送给了老婆。其他还用Java、VB、C++写了一些乱七八糟的软件。
自敲第一行代码起5900.png (242.63 KB, 下载次数: 38)
15:17 上传
自敲第一行代码起6032.png (197.14 KB, 下载次数: 52)
15:17 上传
自敲第一行代码起6165.png (249.22 KB, 下载次数: 45)
15:17 上传
自敲第一行代码起6298.png (142.9 KB, 下载次数: 46)
15:17 上传
  大三时,编程基础勉强还算可以了,对C/C++掌握到一定程度之后,学习其他语言都非常快。大三只在学校待了两个月,然后就提前出来工作了,这两个月里就做了两件事情。参加一场比赛和一场考试,学期开始时辅导员跟我说让我去深圳参加一个省里面的比赛,有很多学校参加,这让我很兴奋,大一入学时,就听到老师说某某学长在广东省的XX比赛中拿到了三等奖,那时心里满是羡慕和崇拜,而现在轮到我了。
  我决定用HGE制作一款塔防游戏,和老婆组队(老婆是美术),第一个星期简单地学习了Lua和Delphi,然后用HGE搭建了游戏框架,使用Lua编写游戏逻辑,另外再用Delphi写了一个简单的游戏编辑工具,写到差不多的时候出现了一个重大事故,硬盘坏了,无法修复,是希捷的固件门,于是只能重新写过,幸好前些天去机房的上机课把代码拷过去看过,损失并不算太严重,但从此再也不敢用希捷硬盘了。
  现在看来当年的这款作品实在是非常糟糕,但凭借着上台演说时的对答如流,侥幸拿了一个一等奖。如果志仔也来参加的话,一定可以拿出一个比我好很多的作品,但他总是神龙见首不见尾。比赛之后开始潜心准备软考,2010年的软考还是蛮难的,考的内容特别广,包括什么编译原理、网络等一大堆东西,考试时发现蛮多成年人来考的,学校参加这个考试的人不多,通过的就更少了,侥幸通过之后,就开始准备简历,打算到广州或深圳好好历练一番。
自敲第一行代码起7023.png (342.9 KB, 下载次数: 49)
15:17 上传
自敲第一行代码起7156.png (128.89 KB, 下载次数: 43)
15:17 上传
  美好的大学生活就这样提前告一段落了,人总是在失去之后才懂得珍惜,工作之后回过几次母校,每次回去,看着熟悉的场景,回想起和同学朋友们在学校渡过的时光,心中总是百感交集。大学生活结束了,但另外一段苦逼的故事即将开始......
  前面五年算是一帆风顺,而接下来的经历,则充满了挫折与失败。
  第一份工作
  由于学历不高,还没毕业,经验不足让我吃了不少闭门羹,在大三刚开始时就开始在网上投放简历了,但基本是石沉大海。虽然没有面试邀请,我还是独自一人来到了深圳,因为对深圳这个城市很有好感(因为前面来深圳比赛的经历)。为了得到面试的机会,我不惜跑到人家的办公楼去霸王面,可惜并没有获得面试的机会,但现在回想起来,直闯人家的办公楼要求霸王面的时候,还是蛮有魄力的,虽然没有拿到面试机会,但年轻人就该如此,想做的事情就放胆去做,不要逃避,不要让自己后悔。
  初来深圳时,已经在深圳做了几年游戏开发的梁师兄对我很是照顾(过来深圳比赛时认识的),在深圳晃荡了一周之后,终于否极泰来,接到了两个面试通知,面试的过程很顺利,也学到了不少东西,两边的面试官都对我挺满意的,拿到了一份转正后3K的3D客户端开发Offer和一份试用期4K的C++服务端Offer,于是我选择了后面的那份Offer,除了因为薪资高些之外,上班的地方在师兄附近(后来住的地方也在师兄附近)。
  在工作的第一年里学习到了非常多的知识,网络编程和Linux服务器开发是我从未接触过的,几乎是从入门到熟练掌握服务器开发,这段时间的进步比以往任何时候都要快。在入职之前BOSS就给我描绘了一下美好的未来,C++服务端这个部门现在就你和另外一个工作一年的程序,但是马上会有3位经验丰富的大牛入职,其中有超过10年经验的大神,而且我们还有一位非常强力的技术支持——于彤,来自博雅的服务端大神,他为我们提供了一套高并发的服务端底层框架,虽然他只是偶尔来客串一下,但却给了我非常大的帮助,也很大程度上影响了我,他的话不多,但每句都很受用。在认识的人中他的技术几乎是最好的,但也是最谦虚的,他的头衔是架构师,但他说他只是一个程序员。
  首先复习了网络编程的基础,并将其搬到linux上,这是我把linux玩得最溜的一年,在于彤的指点下看完了《APUE》《Unix网络编程》《TCP/IP详解 卷一》等著作,大学时看《TCP/IP详解》如读天书,但在了解网络编程之后再看这本书反而津津有味,下班之后没有其他事情,独自回到白石洲的农民房里就是看书。为了解答疑惑、解决问题而学习比起普通的系统学习效率要高得多,因为目标非常明确。
  在工作中还了解了sql以外的nosql数据库,如memcached、redis、mongodb等等,让人大开眼界,在于彤的指点下,自己依葫芦画瓢用epoll+单线程非阻塞的模式写了一个简单的服务器框架,用这个框架实现了一个负载均衡的服务器,于彤看后赞赏有加,跟我重申代码要简洁,这个词深深刻入了我的脑海里。那时写的服务器能在数万并发连接的生产环境中稳健运行,是一份非常宝贵的经验,像什么远程调试,core和日志的分析,性能瓶颈分析也是那时候总结下来的经验。
  后面在读过于彤的底层框架、memcached和libevent等开源代码之后,自己又写了一个开源的迷你服务器框架,之后包括现在的项目,用的都是这套框架在开发。如何设计分布式的服务器架构,来保证服务器的可扩展性,保证每台服务器的功能单一简洁,满足一些跨网关的实时转发的交互需求等等,这又是另外一份宝贵经验。一个靠谱的后端程序员需要拥有能够解决各种问题的能力,与前端程序员不同,后端程序员更多是靠经验堆起来的,没有经验的后端程序员连可能会遇到什么问题都不知道。
  后端主程
  在公司待了一年,只为公司的一个页游开发了一个PVP系统,之后由于没有项目做,闲得发慌。由于和主程相处的不是很融洽,所以也就打算离开了,他的脾气火爆,不尊重人,并且不喜欢承担责任,在项目中解决了他的不少BUG,例如死循环、内存泄漏等等。记得他曾使用strlen来判断一个结构体的长度,向他指出这个错误之后,他跟我扯我不懂操作系统内核实现的原理,于彤知道后笑了,说那你让他讲讲操作系统内核是怎样实现这个原理的。火爆脾气的主程去到其他公司之后,听那边的朋友说,他的火爆脾气一点没改,并且还掌握了使用挖掘机挖坑的高级技巧。
  过完年,部门发生了巨大的变化,C++开发部的两个大神就离开了。本来我也打算离开了,拿到了Double薪资的Offer,但由于是做Java,心里并不是太愿意。然而在准备提离职之前,公司让我做后端主程负责一个新的MMO手游项目的后端开发,我一下子就来精神了,这显然比写Java要好得多,这可是领导对我的信任啊!而且如果去新公司的话,我上班得多踩10分钟的自行车吧。开新项目的同时,新的血液也注入了进来,有3个小伙子进入了我们部门,其中的穗智小师弟后来成为了我最得力的助手,但有一个小伙子表现不佳,怎么带都没带好,后来他转行去做测试了,主管问我,他不是我面试的吗?他是怎么通过我面试的?我说面试的时候,我出的各种题目他都答得很好啊,其他人都没答对,就他答对了呀。直到前几天想起这个问题才恍然大悟,面试时是在他们的培训机构面试的,一群人在外面轮流面试,只准备了一份面试题,前面的人答错了,我都会跟他们讲解一下,估计最后一个进来的他,已经了解了所有的面试题......
  于彤说主程并不是要自己成功,而是要帮助下面的每一个人取得成功,这样才是成功。所以后面招了一些新人进来的时候,我总会花比较多的时间进行培训,当大家都能独当一面的时候,主程也就轻松了。磨刀不误砍柴工,帮助其他人进行提升,也是磨刀。新项目的后端比较简洁,人也不多,开发进度也是稳步向前,但前端的进度看上去颇为糟糕,起码从给我看到的一些代码来看,算是耦合性较高,可读性较差的代码了。构建在这样代码之上的程序,BUG自然也是颇多,这个做不了,那个无法实现。在这个项目中我在技术上并没有多大的提升,只是默默地攒着主程、管理的经验值,包括如何规划分配任务、沟通传达、如何上政治课、如何给他们打气加油、碰到问题帮忙解决等等。虽然是初任主程,但秉着负责的态度,基本上保证了后端的开发进度稳定快速。
  这一年因为总体上比较悠闲,所以业余时间自学了一下Irrlicht和Ogre等3D游戏引擎,翻译了Ogre的初级和中级教程,CEGUI的相关教程以及PhysicX物理引擎的官方文档,并用OpenGL开发了一款物理冒险游戏《小铁蛋历险记》。在差不多年底的时候,还和师兄使用Cocos2d-x一起开发了一款ios手机游戏。
  然而又是过完年,项目组发生了巨大的变化,项目经理、主策、客户端程序纷纷离职,然后又空降了一波人过来,原先写的代码全部推翻,使用新的后端主程带来的框架,项目重新开始...。新的后端主程也是一个经验丰富的程序员,带来了一套Windows的MMO服务器框架,什么东西都是现成的,需求大部分都是在这套框架上稍微改一改就做出来了,有点类似所谓的换皮,复制粘贴成为了最常用的开发技巧。但我并不喜欢做这些工作,也不喜欢开发Windows的服务器,与Linux相比性能要糟糕很多,在这里完成了一些简单的模块,吸收了框架里的一些经验之后,我提了离职。
  这是一次裸辞,因为我和一个美术同学(我称他为淡总)使用Cocos2d-x一起开发一款病毒塔防游戏,想离职了好好把这款游戏做好,业余时间开发游戏还是蛮累的,但这款游戏是我目前为止做过最棒的游戏了,有强力美术的加盟就是不一样。这次辞职并没有成功,改为了请两个月的假期,假期里基本将游戏的代码写完了,还接入了ShareSDK,但是淡总怂了,因为后续要制作的各种关卡需要花费的时间太多了,从关卡的设计,到关卡中每个地图的绘制,再到数值的调整,这些看上去还是需要一个专业的策划才能搞定,于是这款游戏被搁置了。之后淡总提议用这套美术资源开发一些其他的不需要关卡的游戏,不要浪费,于是我们使用这套资源开发了病毒射击和病毒消除小游戏,这两个游戏都做完了,但是玩起来感觉很单调,于是病毒射击又改成了病毒射击塔防,在病毒射击的基础上增加了很多新元素,设计了各种地形,各种道具,看上去游戏的可玩性增强了很多,但最后又回到了和病毒塔防一样的问题,关卡、场景、数值.....结果这些游戏一个都没出来。
自敲第一行代码起10772.png (399.16 KB, 下载次数: 50)
15:17 上传
自敲第一行代码起10905.png (393.89 KB, 下载次数: 49)
15:17 上传
自敲第一行代码起11038.png (358.2 KB, 下载次数: 50)
15:17 上传
  在这些小游戏的开发过程中,总结了不少经验,那时Cocos2d-x刚刚兴起,资料还很匮乏,于是有了编写Cocos2d-x书籍的念头,小游戏不搞了,那就将Cocos2d-x积累的经验写成书吧。
  U3D主程
  结束两个月的假期回到公司,就开始了打杂,这时手机游戏和手机游戏引擎Unity3D、Cocos2d-x正是非常火热的时候,BOSS希望搭建一套通用的Unity3D底层框架,把游戏的规则抽象出来,每开发一个游戏都只需要继承一些类,然后实现类里面的一些接口即可,这样就可以很快的开发一款新游戏。但我完全没有接触过Unity3D,多次的开会讨论都没有得出一个好的结果,因为这种框架很虚,如果说有这样一套框架的话,那不就是Unity本身吗?最后只是用C#的委托实现了一套消息机制底层,另外由于原先U3D的网络底层实在是太糟糕了,根本无法重用,于是实现了一套U3D通用的网络底层框架,代码非常地简洁易用。后面这套消息机制和网络底层被应用在了公司的所有U3D项目上,MMO手游项目的新主程接手项目的时候,直接推翻了所有的代码,只保留了这套消息机制和网络底层,再后面一些这套消息机制和网络底层也被应用到了不少其他公司的项目上了,然而在代码中关于作者和日期等注释信息,却被删掉了......这种感觉就是,我写的东西,变成了别人的了,再跟我没有任何关系。
  编写框架并没有花费我太多的时间,但为了设计好,为了简洁好用,我投入的精力却不少。业余时间仍然是和淡总他们一起开发着病毒系列小游戏。公司的一个主策建哥很有想法,很能忽悠,在他的忽悠下我和穗智小师弟也帮他开发了一些小玩意,穗智帮他开发了一个看美女图片的应用,穗智拿到建哥整理给他的性感美女图片时,穗智吐槽了建哥“这样的图片我百度可以随便找到一堆”,都是一些普通的泳装美女图片,这款手机软件的功能,就是一张张地翻阅这些图片,30张之后的每10张会有一个密码。建哥打算回老家卖低端的安卓机器,顺便推销这款软件,当用户需要看到心痒痒的时候,密码输入框弹出来了,然后用户就要带着手机过来找他,交钱之后,建哥偷偷地把密码输入进去,就是这么一个商业模式,建哥说靠这款破软件,他一年就可以进账100万,虽然最后这款软件一份都没有卖出去,但建哥混的要比我们好得多,我还是主程,他已经是四个轮子的CEO了。
  另外一个独立开发手机游戏的小团队邀请我加入,他们策划美术程序齐全,但我没有答应,经过了反复的游说,我答应帮他们用Cocos2d-x搭建一个框架和基础的Demo,仅仅是友情协助。在开发的沟通过程中,感觉并不是很靠谱,因为游戏不好玩,美术不好看,很多东西反而要我去催。Demo如期交付了Demo,一段时间之后,这个团队解散了,因为在开发的过程中有人还去接外单,当这个团队解散时,项目的进度仍然停留在我交付Demo的那一刻。这个团队的解散给了我很深刻的印象,要么不做,要做就全力以赴,兼职开发的这种小团队,一个拖后腿全部完蛋!每个人都要有很强的责任心,对自己做的东西有强大的信心,主动往前才行,如果是由一个带头的推着整个队伍前进,这样是走不远的。不久之后,我和淡总的病毒游戏也告了一段落,大家都太累了,病毒系列的几个项目的代码沉睡在了硬盘上的某个角落。
  接下来学习了一下U3D,发现U3D这个引擎比Cocos2d-x成熟的地方太多了,了解了各种更加成熟的理念,C#这门语言用起来也非常爽快。我开始作为U3D主程负责一个项目,这是一款局域网对战的项目,类似一个游戏平台,内部可以嵌套很多个小游戏,公司已经做了一年多,已经做烂了,原项目组的程序都跑去MMO的项目组了,于是从新招了2个U3D客户端一起捣鼓这个项目。项目的代码实在是非常糟糕,各种不规范,BOSS希望我在这个基础上继续,然而我选择了推翻重构。因为项目的业务逻辑都写到了我的网络底层框架里面了(像这种东西就该做成库,不然他们改),原本这款游戏是可以单机和局域网对战,BOSS希望可以加入广域网对战的功能,但广域网对战暂不开发。我和两个小伙伴花了2个多月的时间,只保留了原有的美术资源,所有代码全部重写,重新设计。并实现了一些新的功能,完成了这个项目!重构之后的项目代码简洁,耦合性低,巧妙使用了消息机制,完成了单机版本之后,只花了1~2天,就把所有的小游戏实现了局域网对战,再花上少量的时间,我们可以很轻松地实现广域网对战。虽然开发过程中换了3次人,来了又走,但我们还是按时完成了任务,最后打包的那天,我们好像加班到了快2点,这是加班的最高记录。
  最后,这款游戏在商务阶段,没有了下文,又是一个无疾而终的项目,而这些绞尽脑汁写出来的代码,又在硬盘上的某个角落,沉睡了。
自敲第一行代码起13604.png (224.02 KB, 下载次数: 46)
15:17 上传
自敲第一行代码起13737.png (281.72 KB, 下载次数: 47)
15:17 上传
自敲第一行代码起13870.png (189.62 KB, 下载次数: 51)
15:17 上传
  临危受命
  项目失败之后,又有去意,但此时已经差不多是10月份了,想着过完年再说吧。离职的主管介绍了一份不错的兼职,开发一款Cocos2d-x游戏,有点类似愤怒的小鸟吧,穗智小师弟跟我一起接了这个单子,大概花了3个月的业余时间比较轻松地完成了这款游戏,期间搭建了一个不错的物理框架,设计好,代码简洁,开发效率自然高。游戏的美术和关卡设计都挺不错的,我们签了一份5万块的外包合同,然而游戏做完之后我们只拿到了4万块,因为最后的一万块是要游戏上线之后才给,上线到Appstore时由于某个原因被打回来,然后这家公司就倒闭了......这个项目的代码又在硬盘上的某个角落进入了沉睡。
自敲第一行代码起14859.png (371.65 KB, 下载次数: 59)
15:17 上传
自敲第一行代码起14991.png (380.74 KB, 下载次数: 46)
15:17 上传
自敲第一行代码起15124.png (322.1 KB, 下载次数: 44)
15:17 上传
自敲第一行代码起15256.png (306.4 KB, 下载次数: 40)
15:17 上传
  在接外包之前,公司又开了一个新项目,这是一款精简的多人在线大富翁游戏,主要是山寨一款PC上的大富翁,我们都觉得这款游戏很好玩,把它搬到手机上肯定有戏。于是我作为后端主程开始了这款游戏的后端开发,当前端还没出Demo的时候,后端已经完成了复杂的游戏逻辑,例如各种随机事件的触发,并做了一个简单的文本界面客户端对服务端的逻辑进行了测试。大富翁的后端逻辑不同于一般的后端,一般是一个请求一个响应,但大富翁的一个请求可能触发的事件是不一定的,事件的流程也会随着不同的环境发生改变,并且中间有可能导致玩家之间的复杂交互。游戏的逻辑完全跑在后端,前端只需要执行少量的显示逻辑即可。由于进度超前,所以也有足够的时间完成外包项目。
  到了发Demo版本的时间,前端的版本问题很多,延期了一两周还是没能顺利给出版本。由于突发了一些我们并不知道的紧急情况,经理对这次的延期有很大的意见,并决定亲自操刀,他仔细阅读了前端的代码,并对一些代码进行了删改,对前端的代码提出了很多疑议,并整天坐在前端小伙伴旁边看着他们写代码,要求每一行代码都写上注释,前端几乎停止了开发,每天都在写注释。游戏也已经完全跑不起来了.....
  在前端小伙伴们奄奄一息的时候,经理找到了我,想让我把前端带起来,我一听吓了一跳。原计划是年前出一个Demo版本,年后一个月内出一个Alpha版本,经理希望我按照原计划把版本赶出来,在会议室中几个人对着我猛灌鸡汤,仿佛我能推平山岳,扛起这一切,把这个项目带向成功。而如果我拒绝,这个项目就进垃圾桶了,难道我做的项目又不能上线了吗???
自敲第一行代码起16817.png (289.37 KB, 下载次数: 48)
15:17 上传
  内心挣扎了很久之后,终于把这碗鸡汤干了。干完鸡汤之后,我大概向经理提了10个条件,包括不允许经理再看前端代码,以及坐在前端程序身边看他们写代码。砍掉了一些不必要的功能。给前端同学放一天带薪假放松一下。给我一笔经费,在过年的时候将一些完不成的任务打包,明码标价,外包给前端程序去做,这些任务量并不繁重,但价格还算比较不错的,这样即可以在过年期间让项目前进,又可以避免前端同学年后回来对代码生疏了,需要重新花时间熟悉代码。各种讨价还价之后,雷厉风行地扛起了前端项目的开发,接下来Demo和Alpha版本都按照原计划完成了。虽然名义上是前后端主程,但实际上后端的工作已经完全丢给穗智小师弟了。
  版本完成之后,又是各种新需求和周边系统,包括AI和托管等麻烦的功能,大概是五月份左右,腾讯的天天富翁上线了,我一看,跟我们的游戏一样,这对整个团队的打击都很大,而过年前,经理就已经提前知道腾讯会代理这款游戏了,也就是这个原因,他才亲自操刀。游戏接下来要做的功能已经不多了,但游戏的前景却是一片迷雾。之后开始对项目的前端框架各种优化总结,沉淀了一套通用的UI框架、资源管理框架以及新手引导框架。沉淀下来的框架简单易用,而且靠谱,这归功于长期基类下来的设计经验,以及在使用的过程中不断地调整打磨,还有对模糊的技术点的彻底研究,只有彻底搞清楚了,才可以更好地使用它。
  由于版权的问题,这个游戏最终还是没有上线。这些代码再次沉睡在了硬盘中。所以说,山寨并不靠谱,创新才是王道!
自敲第一行代码起17757.png (290.32 KB, 下载次数: 49)
15:17 上传
自敲第一行代码起17890.png (362.39 KB, 下载次数: 48)
15:17 上传
自敲第一行代码起18022.png (251.06 KB, 下载次数: 47)
15:17 上传
自敲第一行代码起18155.png (240.51 KB, 下载次数: 44)
15:17 上传
  又是一段空闲期,我和淡总商量了一下,决定快速开发一款小游戏,于是我们开发了一款躲避类的游戏,类似宫爆老奶奶,为了能吸引到眼球,我们决定尝试一下色色的主题,也就是卵子躲避精子,游戏命名为《避孕达人》,经过精心的策划之后,这款游戏上了一些安卓平台。几次优化之后,我们都觉得可玩性还可以,打算就靠卖点广告来赚钱,结果到现在就赚了21块钱的广告费,其中的20块还是我自己点的广告......
自敲第一行代码起19235.png (129.87 KB, 下载次数: 35)
15:17 上传
自敲第一行代码起19368.png (208.82 KB, 下载次数: 45)
15:17 上传
自敲第一行代码起19500.png (134.62 KB, 下载次数: 46)
15:17 上传
  一段有趣的面试经历
  接下来朋友推荐了一个Cocos2d-x的面试,面试官并不是很友善,大概就是这种“呵呵,你很牛逼是吧?”,然后就试图在面试中把我难倒,问了一些主观性的问题,两个人的思路根本就不在同一个频道上,例如我说搭建U3D的网络框架,他说U3D的网络底层框架有什么好搭建的?不就是个连接连上去就可以了嘛。我说提供对socket的封装,异步请求,自动处理半包粘包,将tcp流分割为完整的包最后传递到客户端主线程的一个服务处理对象中进行处理。答完看上去他对半包粘包这些好像一点都不知道,追问了我一句,那你是如何处理TCP丢包的呢??然后我就不想讨论这个话题了,TCP的定义讲得很清楚,TCP提供可靠连接,TCP底层实现是可以保证不丢包的,我反问了一句你们又是如何处理TCP丢包的呢?他说很简单啊,如果对方没收到就循环发送,估计到了这里面试官已经自动将我判断为没有处理TCP丢包经验的程序员。例如说到将第一个U3D项目代码推翻时,他问我为什么要推翻,我说因为代码耦合性太高了,游戏的业务逻辑都写到我的网络底层框架中,他说那说明你的框架设计得很糟糕(这个功能完全不需要写在框架中,框架的接口足够实现这个功能的,也许是这个框架无法处理TCP丢包,所以真是糟糕啊)。例如问了我一个特别泛的问题,大意是如何设计一个框架,我说这个要根据需求来啊,你可以现场提需求,我来设计,他坚持让我回答这个问题,我也只能回答一些比较泛的答案,然后他说不对,我问他那正确答案是什么?他说是抽象和封装......要不是看在我朋友的面子上,我真想抽他!
  本来我想通过这次面试,来积累点面试经验,补充一下自己的不足,没想到会变成这个样子,接下来他开始问了我一些Cocos2d-x和Box2d的问题,我有气无力地回答着他,扯了这么久,水都不给喝一杯,我都困了。反正我也不想和他共事,又学不到什么新的东西,就想草草结束这次面试了。接下来HR妹子和他一起来跟我聊,HR说他们的技术对我已经有了一个了解,虽然我了解的东西挺多的,但都不精通。嗯,我点点头,我确实离精通还很远。HR接着说到我的Cocos2d-x经验比较欠缺,还没有到达一定的水平。我愣了一下,刚刚明明Cocos2d-x相关的问题一个都没难倒我好吗,并且有些问题我还提出了比他们现在更好的实现方式,我已经用Cocos2d-x做了四五个游戏了,我那本Cocos2d-x的书也已经完成了第一次重构了,引擎的代码更是读了N遍,你可以说我其他的什么不精通,但你就算问我Cocos2d-x引擎底层的渲染流程我都可以给你详细地说出来。我真想拽拽地对面试官说一句,那就请你随便问一些Cocos2d-x的问题,来难倒我好吗?但我克制住了自己,因为没有意义,点了点头说道,确实对Cocos2d-x不怎么熟悉。然后他们问我薪资要求,我说了一个14K。HR说我们觉得你不值这个价格,11K怎么样?我点了点头,嗯,确实,如果我对Cocos2d-x熟悉一些的话,应该会好一点。后来HR打电话劝我过去,说面试官觉得我还是可以培养的,转正之后,如果你表现好的话,还是有可能拿到这个薪资的,我婉言谢绝了。
  后面,我带过的一个小师弟意外地去到了这家公司面试,被格外器重,我不知道当时的面试官还在不在,只知道他们给小师弟开了12K。
  Cocos2d-x主程
  在2014年的年底,公司又开了一个新项目,是一款实时横版竞技塔防手游,我兼任Cocos2d-x主程和后端主程,游戏的进展还算比较顺利,在这个项目中又沉淀了大量的经验和一套好用的框架,踩了Cocos2d-x大量的坑,使用一套通用简单的方案解决了实时同步的错误纠正以及断线重连等等(后面有空会写一篇文章分享一些实时同步的经验),相比起项目刚开始时的设想,经历实践之后的方案更加地成熟。
  和策划们一起用心打磨这款游戏的战斗系统,实现了非常多的玩法,支持策划配置各种特色关卡,例如双方争夺某个要塞,例如护送某个角色到达指定位置等等。各种拥有特殊能力的兵种都可以通过策划配置出来,不需要程序调整代码,类似LOL妖姬的标记,LOL大发明家的安置炮台,还有分身、闪现、传送、魅惑、隐身、召唤、复活、放逐等等一堆乱七八糟的功能,都可以配置出来。游戏关卡中的战斗场景也支持丰富的互动,例如一个寒冰法术打过去会顺带冻住场景后的植物,例如一个火焰爆炸开场景中的植物也会被灼烧,甚至旁边的石块也会被炸飞,这些都可以通过策划配置出来。开发的氛围很好,没有出现推卸责任这样的情况,大家一起认真地讨论着某个功能的实现,怎样能让它有更好的体验。
  开发了一年左右,皇室冲突强势上线了,这意味着我们做不了首款实时竞技的策略手游了,或许会被套上山寨的帽子,或许山寨皇室冲突的游戏会烂大街,从而影响到我们游戏......,所以我们必须把游戏做得更好,比皇室冲突更好!谁说国人就只会山寨?
  通过不断地打磨,关卡副本和PVP玩起来已经算是比较有意思了。直到现在,游戏终于到了最后的尾声,周边系统也基本完善,估计一两个月内就可以发布最终的版本,希望这款倾注了我们大量心血的游戏到时能够顺利上线吧,皇室冲突的成功也证明了手机上的即时策略游戏是大有可为的,如果这样一款有特色、有创意、玩法有趣、注重品质和细节的游戏都能失败的话,我真不知道怎样的游戏才能成功了。(为避免广告嫌疑,现在手上的项目就不详细介绍了,也不上图)
自敲第一行代码起22523.png (396.09 KB, 下载次数: 44)
15:17 上传
  在繁忙的工作中,我完成了第一本Cocos2d-x书籍,这是第三次的推翻重写。每次写了一段时间之后,回过头看之前写的文章,顿时觉得惨不忍睹,必须推翻重写,或者是Cocos2d-x的接口又改了,或者是自己能力的提升推翻了之前的一些想法。总之不想将就,就得重构!就这样断断续续地写了三年多,直到最近这本书终于出版了。虽然希望做到极致,但能力有限,精力有限。中间看着Cocos2d-x的出版物逐渐多了起来,有过停笔的想法,但最终还是坚持了下来,这个过程比想象中要难得多了,但语言组织能力、表达能力都能得到很大的提升,对于要表述的技术点也清晰了很多。写书不易,经常加班的IT人写书更是不易,有了这么一个经历之后,对一些写得不是很好的书籍,我也不会去吐槽它了。大概在项目上线的时候,第二本Cocos2d-x的书也该交稿了。第一本书介绍了Cocos2d-x的基础,虽然是基础,但有很多点还是挖得比较深,例如指针、内存、纹理、渲染等。这些往往是一些初级程序掌握得不好的点,相信对于基础不扎实的同学会有很大的帮助。第二本的内容要比第一本精彩得多,听了网友紫虾的建议,把第二本写成了一本杂文集,深入总结了Cocos2d-x实际开发中的各种技术,例如跨平台开发的相关知识、实时同步游戏的前后端开发、Cocos2d-x的各种调试技巧、Shader、裁剪遮罩、加密解密、分辨率适配、Lua、Spine等等一系列实用的内容。甚至开发了一个类似U3D编辑器一样,可以实时调试Cocos2d-x游戏内容的界面工具,这些内容都是实际工作中一点点总结出来的心血结晶。在征得出版社同意的前提下,接下来会将书中的一些章节发布到博客中。
自敲第一行代码起23523.png (585 KB, 下载次数: 53)
15:17 上传
  当完成书和项目之后,会有一段难得的空闲时间,可以好好陪陪家人,可以好好写写博客,可以好好踢踢球,可以把驾照考了。接下来也许会找一些志同道合的朋友继续做一些独立游戏,也许会好好学习一下如何编写操作系统,或者是研究一下Arduino,或者深入地学习一下算法,这些东西都非常有趣。
  相关阅读:
关注我们官方微信公众号
下载我们官方APP-游戏行
关注手游动态微信公众号
不是程序,没法评价,不过看你这十年生涯,同感慨!
无论什么职业,追求卓越!
看了你的介绍,万分惭愧,我也做了将近两年的服务器主程了,现在仍一无所成,客户端更是一窍不通,感觉自己学得太少啦,哈哈,大神,膜拜一下,客户端,服务器都精通,这个太NB了==
膜拜一下大神,顺便说一下,我也在深圳南山区的白石洲待过2年...还记得第一次看到企鹅大厦的心情..
从2014年底到现在一年多了就轻描淡写了……
这。。。我怎么感觉楼主的路还远的很。。。看下来感觉几个问题:
1,上线项目不多
2,项目规模偏小
3,自拍的技术书籍,明显太新了。。。
我没有资格评价楼主,但是这些是楼主的问题,相信他自己也承认吧。
白石洲我也很熟的,
我泡的第一个妹子就在那住,
一个肇庆妹子。。。。。。。。
同学真好,很用心,我做后端,希望有机会能一起做事,一起踢球,话说我是大力金刚腿,你是铁头功
我也是研发了十年,这是我上线测试版的视频.,想了解更多到我的QQ空间来http://user.qzone.qq.com//blog/
看好大婶,最后面试那段写得很搞笑哈哈 感觉大神开1.4W太低了把
手游还需要评测?!那我们来聊聊基本思路与从工业设计到游戏设计:形式、功能与游戏的心动CEO黄一孟控诉百度上架“诈骗游戏”,《守夜人:长夜》 怀旧而惊艳的2D 横向卷轴《八方旅人》:味道正宗得不得了的传统JRPG苹果手游代充屡禁不止,游戏厂商如何止损?
微信扫一扫关注我们→}

我要回帖

更多关于 委托开发软件著作权 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信