虽然写出了一些简单的游戏,但我想写的远不止这些,我想变强啊啊啊!!!我想写出更好玩更炫酷的游戏,就像当时非常火的游戏《大话西游》,什么代码可以写出这么炫酷的画面,什么代码可以让两个人的屏幕同步出现这么炫酷的画面呢?后来在云大组织的广州skynet大聚会上面讨论实时同步方案时,提到过在高中时就有在思考大话西游的实时同步,大家都笑了,这是一句缓解个人紧张情绪的话,但并不是信口开河。 class="Apple-converted-space"> 《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做了一个简单的系统管理工具,有点类似优化大师。
由于高中阶段的努力,让我自认为在同龄人中的技术已经是很不错,开始有些骄傲膨胀的时候,蚊子和志仔的出现狠狠地打击了我的“嚣张气焰”,学无止境,一旦满足于当前的技术,那便是逆水行舟不进则退。 蚊子并不是我们学校的,是一位大学同学的高中同学,同他一见如故(其实那时候尚未见面),但相似的经历,对技术的热爱,让我们有很多的共同语言。蚊子和志仔都是从高中便开始自学编程,并且学得比我好得多,大一时蚊子已经制作了不少看上去还不错的软件作品,对游戏外挂也略有研究,蚊子推荐给我的《Windows游戏编程大师技巧》,让我受益匪浅,后来此书成为了少数几本我反复翻阅多次的书。《C++Primer》和《EffectiveC++》是另外的两本,通过这些比较经典的书,我慢慢理解了C++和VC++的区别,面向对象、泛型。 志仔是一个超级邋遢的人,发型杂乱,每次见他都穿着拖鞋和大棉袄,然后挂着一条鼻涕。但很多时候看上去越邋遢的程序员越牛逼,大一的时候他就已经在研究木马之类的东西了,不是简单地使用工具,而是开发木马,终端控制,屏幕传输,视频压缩等等,都是他自己做的。对于php等网页编程,他也颇为擅长,对于OpenGL和一些图形学算法也有研究,这两个家伙都自己写过操作系统(当然,不是大一的时候),毕业之后,他们变得更牛逼了。受志仔和凯文米特尼克的影响,那时候花了一段时间玩了玩黑客,但仅仅只是停留在表面,玩了一段时间发现,编程才是王道,于是丢下手上的黑客工具包,继续回到编程的正道上,有牛逼的对手一起前进,路上才有意思,这种相互竞争相互追赶的感觉非常地美妙。 大学前期基本都是围绕着C++游戏开发学习的。在大一的第二个学期,接触了汇编语言,这是一种与之前的语言完全截然不同的语言,需要运用新的思维方式,应该算面向寄存器编程,看了一些汇编教程之后,自己调用各种中断,用汇编写了一个打飞机的小游戏。在后面接触了面向对象的思想之后,就渐渐把汇编忘干净了。在五一的3天假期中,准备了泡面在宿舍闷了3天时间,把之前没看完的孙鑫视频看完了,初步理解了C++的类、MFC、多线程、网络编程。并制作了一个内网聊天工具,在网上断网之后可以和其他宿舍的同学聊聊天。 从大学开始就总是给自己制定着一堆完不成的学习计划,因为不想让自己有借口停止学习。特别是寒暑假,回家的行囊中总是塞满了计算机的书。 大二之后,我渐渐被两位大牛甩在了后面,因为认识了我现在的老婆,这是一段一波三折的复杂故事,这里就略过不谈了。虽然学习的时间少了很多,但大二这一年还是看了不少书,例如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++写了一些乱七八糟的软件。
大三时,编程基础勉强还算可以了,对C/C++掌握到一定程度之后,学习其他语言都非常快。大三只在学校待了两个月,然后就提前出来工作了,这两个月里就做了两件事情。参加一场比赛和一场考试,学期开始时辅导员跟我说让我去深圳参加一个省里面的比赛,有很多学校参加,这让我很兴奋,大一入学时,就听到老师说某某学长在广东省的XX比赛中拿到了三等奖,那时心里满是羡慕和崇拜,而现在轮到我了。 我决定用HGE制作一款塔防游戏,和老婆组队(老婆是美术),第一个星期简单地学习了Lua和Delphi,然后用HGE搭建了游戏框架,使用Lua编写游戏逻辑,另外再用Delphi写了一个简单的游戏编辑工具,写到差不多的时候出现了一个重大事故,硬盘坏了,无法修复,是希捷的固件门,于是只能重新写过,幸好前些天去机房的上机课把代码拷过去看过,损失并不算太严重,但从此再也不敢用希捷硬盘了。 现在看来当年的这款作品实在是非常糟糕,但凭借着上台演说时的对答如流,侥幸拿了一个一等奖。如果志仔也来参加的话,一定可以拿出一个比我好很多的作品,但他总是神龙见首不见尾。比赛之后开始潜心准备软考,2010年的软考还是蛮难的,考的内容特别广,包括什么编译原理、网络等一大堆东西,考试时发现蛮多成年人来考的,学校参加这个考试的人不多,通过的就更少了,侥幸通过之后,就开始准备简历,打算到广州或深圳好好历练一番。
美好的大学生活就这样提前告一段落了,人总是在失去之后才懂得珍惜,工作之后回过几次母校,每次回去,看着熟悉的场景,回想起和同学朋友们在学校渡过的时光,心中总是百感交集。大学生活结束了,但另外一段苦逼的故事即将开始......