游戏编程入门谁知道

没有更多推荐了,
不良信息举报
举报内容:
在面试一个游戏编程职位前,你需要知道的东西
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!黑客与编程游戏 让你成为 Hacker 或是真正体验 Hack
编辑:星月下尘埃落定来源:奶牛关
  每次谈到编程文化,逃不开的话题就是 Hacker,那些带着个眼镜留着胡子,或多或少带着社交恐惧症,一到电脑面前就君临天下的那种电影电视剧中构建起来的形象。谁都幻想成神,能在虚拟世界里开天辟地。  这次的精选让你成为 Hacker,或是真正体验 Hack。你来判断哪一个更有趣,是汇编的古老机器,是生动奔跑执行程序的小人,是奔行于城市间执行正义的黑客,又或者是在虚拟空间里寻找出路?目录《TIS-100》《看门狗》 (Watch Dogs)《人力资源机器》(Human Resource Machine)《异常空间》(GlitchSpace)TIS-100作者:Maliut  通过编写汇编代码,根据给定的输入得到正确的输出,以完成关卡目标。《TIS-100》初看并不像是一个游戏:黑乎乎的堪比命令行的界面,不存在的新手教程,查看游戏手册也仅仅是在游戏外给你打开一个 PDF 文件而已。也许它更像是一个游戏化的编程模拟软件。  我并不知道 TIS-100 的架构是否有历史上的原型,但其的确与现实的汇编有着不小差别。指令集被精简得可怜,只支持简单的赋值、加减、判断等操作,并不支持位运算和寻址等。如果说这是为了让之前没有汇编知识的玩家能够低门槛上手的话,那只提供了一个半寄存器、限制代码的长度和宽度,就是单纯为了增加游戏的难度了。此外,和其他大多数编程题材游戏不同,它提供了多个按拓扑关系连接的节点(相当于一个处理器内核),节点与节点之间通过端口传递数据,这就需要你合理利用各个节点拆分代码,或是提供额外的寄存器,或是用来并行处理以提高程序的性能。  虽说其与现实编程存在差距,但倘若接受了这个设定,《TIS-100》就是一个相当不错的解谜游戏。对数据进行加减乘除、比较、排序、作图等,这些看似简单的功能,在游戏严苛的限制下,也成为了极具挑战性的谜题。如果你还嫌不够,你还可以尝试下完成增加了更多限制的游戏成就。此外,游戏自带了关卡编辑器,你可以下载其他玩家的谜题,也可以使用 Lua 语言编写自己的谜题考验他人。  不过过关仅仅是这游戏的一半。在你运行程序的时候,游戏会记录下你的程序使用的节点数、指令数和运行的 cycle 数(相当于运行的时间),并在好友中排名。这给了玩家不断优化程序性能的动力,也为游戏带来了较高的可重玩价值。由于这三项指标往往难以同时达到最优,游戏为每个谜题提供了 3 个存档以便于你试验各种代码结构和算法。完成一个谜题已属不易,找到它的最优解更是难上加难。当然,在这之后超越了好友,排名第一的成就感也是难以用语言来形容的。  值得一提的是,《TIS-100》并不单纯是一个程序题的**,它还自带了一个幕后剧情。手册封面的书信、里面的涂涂画画、每个谜题中 DEBUG 节点中的日记、全是乱码的隐藏谜题,似乎都在说明这台机器背后的故事。然而作为一个还没打通第一页关卡的菜鸡码农预备役,我目前并没有余裕去探索,而 steam 评测和社区中讨论这个的人似乎也不多。希望有大神能还原它背后的故事。  然而《TIS-100》终究只能是一个小众的游戏。对于只想体验下编程思想的非程序员,相比于《Human Resource Machine》和《Lightbot》之类,它缺乏形象化的反馈,远不如它们直观和友好。对于希望用编程发挥创造力的玩家,尽管游戏有沙盒模式,但也只能做做简单的数字比较和画个分辨率感人的像素图,可发挥的余地也不大。而以程序员的角度,则可能会不满足于其过于精简的指令集和诸多严苛的限制。不过与其他编程题材的同类游戏相比,《TIS-100》很好地塑造了编程体验本身,开关机的动画音效、手敲代码的输入方式以及程序运行时的嗒嗒声等,都能让你身临其境地感受到你是在一台老机器上从事着真正的编程工作。如果你对这样的体验很感兴趣,也愿意静下心来盯着屏幕烧上几个小时的脑子,那么我向你强烈安利这款游戏。  最后说句题外话,看到有不少人希望通过这种类型的游戏来学习些编程,我想说人生苦短,还是学门 Python 、Ruby 这样的脚本语言比较好。拿这样被极度精简的类汇编语言只会让你事倍功半。看门狗 Watch Dogs作者:奏4柴可夫本文包含微量剧透,以及作者是个大学计算机基础水平的育碧黑(切粉)。因此该篇测评不客观不中立。  首先是看门狗的官方简介(以及我的吐槽):只需(neng)滑动手指,您就可以联系亲朋好友(并没有几个)、购买最新出品的手工零件和工具(种类很少),还能获知世界各地(?)的新闻。但通过同样简单的滑动动作(其实是点击),我们还能投下不断扩张的阴影(呵呵蝙蝠侠好像是隔壁厂的吧)。每一次连接我们都会留下电子痕迹,循着这些痕迹就能追踪我们生活中的每一个行为和重要事件,辨别我们的好恶——而这不仅仅适用于人(本游戏与黑客设定最大的联系)。如今所有的大城市都有网络连接,市区的基础设施都由复杂的操作系统监视控制。(现实)  在《看门狗》当中,这个系统被称作中央控制系统(ctOS)。它控制了城市科技的几乎每一个角落,掌握了全体城市居民的关键信息。玩家在游戏中将扮演艾登·皮尔斯,作为一名天才黑客和曾经的恶徒(以及车技吓人的马路杀手),他过去的犯罪行为曾导致了一场可怕的家庭悲剧。现在,玩家正在追踪曾经伤害主角家人的罪魁祸首。通过操纵所有连入城市网络的物件,玩家能够监控并骇入身边所有人的系统。还可以接入无所不在的监控摄像头,下载目标的个人资料以定位他们,控制交通信号灯和公共交通系统来阻拦敌人,以及更多可能。(最大的可能就是芝加哥最强黑客也战胜不了UPlay  其实一开始有人叫我写看门狗的测评,我是拒绝的。因为你不能说育碧辣鸡就辣鸡。我必须自己玩过了,证明出来的效果是……我对于黑人手机、看人信息、偷别人账户里的钱、用摄像头炸人还骇入保安系统偷窥市民们这样那样的生活细节这些无耻的侵犯他人正当权利的事情全都是……玩得还蛮开心的。(没错我是故意不加标点符号的)但是你让我把它当一款黑客类型游戏写测评的话,本文到这里就差不多可以结束了。  为什么呢?同志们,黑客类型游戏的核心是什么?就是黑进别人的电脑啊!黑进去之后在电脑里这样那样啊!然后升级啊!再黑再升级啊!  归根究底黑客游戏只不过把“打怪升级”变成了“黑电脑升级”。但好歹攻击手段变成了骇入之后,招式也就变成了各种代码。像 Hacknet 就是使用了一部分 Linux 的命令来模拟真实操作。至于具体的骇入方式设计,各款游戏都有不同的地方,比较硬核的就全部用命令行,大众点的就结合鼠标点击。升级了以后该买硬件买硬件,该接任务接任务。但核心还是绕不开敲代码跟鼠标点击。某种程度上你可以把它们都归类成“黑客模拟器”,让你在不明所以地开着外挂打完全游戏里的“怪”的同时,获得一种黑客中的大神的体验,并省去了学习各种编程语言或通信协议的麻烦。  然而育碧打破了我们的这一“成见”!在看门狗里扮演黑客,一个代码都不用!在仿佛《1984》般全民被一个系统监控的芝加哥,只要手中有一台有电的手机,心中有没有代码都不重要!在看门狗的世界里,再高级的系统防火墙,用手机拍照以及接水管的方式都能解决!同志们!这是一种怎样新颖的想法!一种未来的趋势!育碧为我们打开了新世界的大门!指明了以后的科技发展方向!一定是他们从伊甸神器中研究出来的先行者科技!(一个猜想,不一定对。  你妹的接水管算哪门子的骇入方式啊摔!!!你家防火墙是消防供水管道吗!!!你家安全工程师的专业都是给排水工程吗!!!  我都不跟你提按X骇入监视器,提那个算欺负育碧。看门狗跟黑客游戏的最大最大的关联点,注意了,这是重点(敲黑板),就是游戏主角是个开挂的黑客游戏主角是个开挂的黑客,以及游戏主角他真的是个开了很大的挂的黑客。  不不不,不是斯诺登那挂的,更不是马克扎克伯格那挂的。那些人都是少年时开始专注编程,一个把自己牛成了《社交网络》里的男主角,一个把自己牛成了躲在莫斯科的“叛变特工”。而艾登皮尔斯的牛,牛在左手拿手机、右手提甩棍、腰插十几把抢,整日在芝加哥开着车损坏各种公共设施(其中大半是车子撞坏的),不时把桥升起来把井盖掀起来把变压箱炸掉……干一票大的之后顺手来个大停电通讯瘫痪之类的,洒洒水啦。  代码是什么,能提高专注力爆你头吗?  如果你想得到的黑客游戏体验是硬科幻级别的,请去玩 Hacknet。如果你想得到的黑客游戏体验是玄幻级别的,《看门狗》欢迎你。  虽然以上吐槽了这么多,但我还是很喜欢《看门狗》的。毕竟有一个这么牛的设定在这里。但不能忽视的一点是,也许是因为多方面的原因,育碧并没有这张好牌打好。它的续作估计会在一年内(目前最晚的传言是 17 年 4 月)推出,希望育碧能吸取第一部的经验和教训,把这手牌打得精彩些,别浪费了这个这么开挂的好设定。人力资源机器 Human Resource Machine作者:KCN  人力资源机器继承了旧作粘粘世界和小小地狱之火的风格:一如既往的各种不知所云,面瘫而又不失可爱的粘土小人,神秘莫测而又似乎有点沉重的剧情,特别舒适的背景音乐,带着旧照片色彩的画风。  这是一个编程类游戏,但是,不懂编程的也能很快上手,因为游戏教程很为详细,关卡的难度成长很慢,慢得可能对于一些专业的工作人员会觉得这游戏有点幼稚无聊。  游戏故事大致就是你是某公司的一个员工,从年轻入职开始,开始日复一日年复一年的机械繁琐的工作,而这工作就是按照你写的流程来进行,慢慢长大变老,最后退休离开了自己的工作。  游戏里的编译器(暂且这么叫它吧)做得很不错,灵活度比较高,可视化效果也很棒,而且代码里还能加上很为自由的注释(只能自己画而不能打字),在各种基础功能方面看似有欠缺,其实也就是自己组一个简单算法来实现这种欠缺,而且不少算法屡试不爽,理论上能够完成各种简单的数据结构,但是这个汇编相对于大多数的正常主流编译器也有很多不为方便的地方,所以操作起来还是会有些不顺手或者就是感觉很乱很别扭。在你写完代码点击运行按钮之后,这个小人就会机械地按照你所写的代码编译运行,很为生动地给你展示了整个小程序运行的过程,有时候完成正确的代码,然后运行的过程看看这个小家伙忙碌着还是挺享受的;假如你的程序有问题,那么就乖乖地看着老板怎么骂你吧~  难度比较大的方面可能在于这个游戏的代码最优和速度最快两个挑战,需要玩家更加认真进行分析来进行完成,但总的来说对于程序员整个游戏应该没有非常大的困难,很可能是个用来虐题的玩意。异常空间 GlitchSpace作者:lililili  字符界面,大概就是大多数人对编程的粗犷印象了。不过实际上,编程就好像电子锁,你可以选择输入密码式的字符录入来开锁,也可以选择指纹锁、人脸识别锁。编程一样可以采用图形化的方式来实现,这就是本文要介绍的游戏——《异常空间 Glitcthspace》。  并非横空出世,实际上图形化编程语言(G语言)在现实生活中早已有之,不需要深谙编程却又离不开编程的工科生应该是接触最多的,例如 MATLAB 中的 Simulink 工具箱,还有 NI 公司的 LabVIEW。如果你没有接触过,没关系,继续往下看,慢慢道来。  当我们谈论编程的时候,首先需要明确自己的目的是什么。在本作中,游戏的总体目标是很明确的,那就是从出发点移动到终点。具体到每一个小的对应目标,则是在游戏中玩家会发现有一些红色的特殊扁平方块可以被编程赋予新属性或者本身就自带程序来帮助自己通过各种不同的阻碍。图1 每个关卡终点处的传送门图2 程序的对象——红色方块  这些阻碍可能是高台阶、深渊断层、数据流(一碰即死)等等,而对红色方块编程则是指赋予它们一些新特性或者改变原来的属性,例如让方块移动、拉伸、旋转、产生弹力等。编程的方式见图3。图3 游戏中的编程框图  这个编程界面和传统的字符语言不大一样,图3中出现了三种方块图形,最左边代表数字常量,中间代表方向矢量(形参),最右代表动作函数,界面的右下角还配了一个参考坐标系。可以看到,连线的两端必须是匹配的才可以连到一起,直接把常量的三角和动作函数的&连在一起是办不到的。根据这张图,我们可以轻易的了解到这个程序需要达成的目的是将红色方块沿着Y方向移动10个单位。这是一个最简单的程序,它的表达和我们想要达到的目的思维方式很相近,非常容易理解。  随着游戏的进行,编程可以用到的素材方块越来越多,复杂程度也会相对上升,例如出现了不是针对红色方块自己而是针对其他“对象”的操作,出现了诸如if等的函数。总体来说编程难度不会很高。编程模块的选取采用层级菜单的方式,到后面会发现其实函数不多的情况下不如把所有模块直接罗列出来选取更为方便,一级级点进去查看模块很麻烦。图4 游戏后半段编程逐渐复杂了一点点  介绍完了本作的最大特点——只用点点鼠标的图形化编程之后,再来聊一聊作为一个解谜游戏其本身的素质。  除了编程这个噱头外,本作吸引到我的无疑是它简洁明快的画面。没有过多修饰,看着清爽舒适,这种风格深得我的喜爱。毕竟解谜游戏,一忌重复单调,二忌题干不鲜明,三忌谜题难度低。除非设计得当,不然花里胡哨的画面比较容易带来题干不鲜明的问题,例如需要把大把时间浪费在寻找散落于地图上的小东西。说回本作,实际上每关需要跑动的范围并不小,而且途中基本无法看到终点在哪里,但是游戏地形引导做得很棒,几乎没有出现过呆立原地不知道该往何处前进这种问题。通常,玩家向着前方新出现红色方块的地方前进,如果没有看到红色方块,则有时墙壁上会有亮起的条灯,默默指引方向。图5 适宜的地形引导  游戏的形式是线性关卡,但是并没有给出关卡传送门让玩家有回味之前关卡的机会。作为关卡游戏,它几乎没有任何背景故事,玩家唯一需要做的就是不断地从起点前进到终点、起点前进到终点、起点前进到终点。一口气玩太久,难免会觉得无趣。而且游戏中不同地点对函数开放程度不同,解题方式比较死,开放性、创意性低,也是一大诟病。不过毕竟本作集中在对红色方块实体的操作上,没有设计很多涉及逻辑的内容,所以一直向玩家开放所有函数以其目前的关卡设计水平是难以达到的。想必这也是为什么有人评论说玩完了整个游戏之后却像只是玩完了一个教程一样。图6 终点的风景  在结束故事模式后,游戏会新增沙盒模式。沙盒世界中有许多预设的建筑和红色方块,并且开放了所有函数,包括成倍于故事模式中从来没有出现过的新模块。但是和建造系游戏不同,本作沙盒中的操作除了给人机会熟悉新函数外,并没有什么可以带来成就感的行为。从沙盒中丰富的模块来看,可以说整个游戏有优秀的机制设定,但是最后却严重短腿于关卡设计,导致几乎一大半的设定都没有被使用到。图7 沙盒图8 沙盒中的全部函数个人评级(专门针对解谜游戏):综上考虑,嗯…本作3级吧!值得一玩,但是离经典还有距离。优点:+画面简洁清新+游戏机制新颖,采用第一人称图形化编程闯关+说明丰富,容易上手缺点:-关卡设计一般,难度不够有挑战性-没有关卡选择,缺乏故事背景,一次性玩久了可能会乏味-选取编程模块的工具箱设计不够方便-沙盒可玩性不高,比较鸡肋(本文原载自奶牛关社区,A9VG获授权转载,版权归原作者所有)
本文标签:& 游戏编程十年的苦与乐
游戏编程十年的苦与乐
& & & &本文来自于一位做游戏编程的网友。  编程之前  大概是读初一的时候,家中有幸让我得到了一台二手电脑,那时的心情比现在让我得到一堆苹果电脑更加兴奋。但这是一台不能连网,也没有任何游戏和软件的电脑(扫雷、纸牌接龙等内置程序除外),这样的电脑能有什么用呢?只能瞎折腾,很快电脑被折腾坏了。去电脑店修了几次之后(被宰了几次),决定自学电脑维修。  跑了很多书店才买到跟电脑维修相关的书籍,也就是在这时建立了对计算机的初步认识,并掌握了屡试不爽拔插内存条、重装系统大法。还从帮我修电脑的大叔身上学到了修电脑的装逼套路,在帮别人修电脑时不论如何,一定要进一下BIOS捣腾一下,一定要在DOS的黑窗口下快速地敲几条命令,让旁人看不懂,以彰显我的技术高超。在2002年左右,像老家那种小地方,估计会重装系统的人都不多。  初学编程  2005年的某日,应该是在信息技术或数学课上,第一次接触到了编程语言Basic,一开始用的并不是VB6.0,而是一个蓝底黄字的命令行IDE,虽然只能倒腾出HelloWorld和一些简单的数学程序,但对此仍然有着浓厚的兴趣,因为我知道了游戏是通过编程来实现出来的,那时候满脑子都是,游戏是怎么做的?但没人告诉我,我只能自己探索。  这时候对程序的了解,也只是最简单的一些语法而已,直到一个亲戚送了一套VCD,是开天辟地的视频教程,里面介绍了VB6.0,在我看来,那是非常适合新手,培养程序思维的一套教程,在大叔那买了3块钱一张的VB碟子,装上VB6.0之后,就跟着视频中的示例操作起来了。于是我写出了人生中的第一个游戏,一个猜数字的小游戏,并尝试着改变游戏的规则,制作类似石头剪刀布这样的游戏。  视频教程中的东西很少,很快就学完了,但这远远不够,我只能写出一些简单的数字游戏,寻找新的资料成了当务之急,但骑着单车翻遍了老家周围方圆十几公里的新旧书店,都没能找到合适的资料,如果是在广州深圳这样的城市或者是像现在这样的网络环境,应该可以很快地找到合适的资料,最后通过学校的上机课,上网找到了一本《Visual Basic游戏编程21天自学通》的书,学校的网速经常只有几KB,寻找以及下载这本书都相当不易,实际上这本书也不是最适合我的,中间存在严重的知识断层,但是最终我硬着头皮挺过去了。  书中的第二个例子是一个模拟细胞生存的游戏,里面用到了一些简单的数据结构和算法,但在这时候我还不知道什么是数据结构,对书中的代码尽是问号,大约经过了一周的死磕,在炎炎夏日,昏暗闷热的小房间里,汗水不断流进眼中,不为所动,因为完全沉浸在代码中了,全神贯注地做一件事情,这是一种奇妙的感觉,这段回忆很是深刻。  最后终于将细胞生存的游戏跑起来了,这是我到目前为止写过最酷的东西了,并且在这个例子中领悟了简单的数据结构与算法,贪吃蛇怎么写?飞机游戏怎么写?俄罗斯方块怎么写?五子棋怎么写?似乎都能从脑海中模拟出来了,应该用怎样的结构,怎样的逻辑?我想这就是初步的程序思维了。接下来的时间里,我将脑海中想到的游戏都一个一个地实现了,虽然实现的效果看上去惨不忍睹(使用Windows自带的画图工具绘制)。但依然是很有成就感的。细胞生存小游戏用的大概是一个简单的图结构,在做贪吃蛇的时候,依葫芦画瓢,写出了一个链表结构,然而直到后面学习c语言的时候,我才知道这是数据结构、是链表&&  虽然写出了一些简单的游戏,但我想写的远不止这些,我想变强啊啊啊!!!我想写出更好玩更炫酷的游戏,就像当时非常火的游戏《大话西游》,什么代码可以写出这么炫酷的画面,什么代码可以让两个人的屏幕同步出现这么炫酷的画面呢?后来在云大组织的广州skynet大聚会上面讨论实时同步方案时,提到过在高中时就有在思考大话西游的实时同步,大家都笑了,这是一句缓解个人紧张情绪的话,但并不是信口开河。  《Visual Basic游戏编程21天自学通》介绍了DirectX,看上去使用它就可以写出更酷的游戏,但书中的代码片段无法编译,而且并不是循序渐进地介绍DirectX,挣扎了很久只能放弃。  在这之后,又学习了一下ASP、以及,这一方面是因为对网页开发也略有兴趣,另外一方面主要还是没有好的学习资料,有什么资料就学什么。  当我知道,做游戏应该用C/语言的时候,就开始寻找C/C++的资料,那时候没有找到合适的入门书籍,不知从哪里找来一本的编程书,一上来就是框架的消息映射,各种控件等等,让我觉得,C++真的好难啊。  学校的上机课,我都用来找资料,下载资料。在网上找到了一些简单的C语言资料,开始自学C语言,那时候最最让我头疼的就是指针了,听很多人说指针很难,所以在这方面下了不少功夫。初步掌握了C语言之后,接下来开始学习一本《C语言游戏编程从入门到精通》,虽然没让我精通,但还是跟着写了一些简单的小东西出来,学到了不少古董级的知识,例如如何用图形模式调用哪些系统中断来绘图,这些大概是最古老的像素游戏的开发技术了。  学生的时间是最多的,上课的时间,脑海里想的都是游戏编程,偷偷地看着编程书籍。高中三年过得很快,转眼就到了高考。像我这种不爱学习不认真上课的人,自然考不出好的分数,那时候对未来的憧憬大概就是,如果考得不好,那就在一家小网吧里面当当网管,修修电脑,继续这种自学编程的日子。最后高考虽然没考好,但还是考上了位于韶关的一所没有什么名气的大专学院,在那里,由于佛祖的庇佑,我的技术迎来了一个飞跃,并结识了不少益友。  大学之路  高考之后的暑假,决定系统地学一下C++,由于家里拉上了宽带,所以极大方便了我找资料,在网上找到了孙鑫老师的C++视频,通过这套视频对C++、面向对象和MFC,都有了一个初步的了解,但对很多概念都还是一知半解。  暑假很快就过了,2008年的九月份,来到了学校报到,饱受了缺乏资料之苦后,看到大学图书馆中海量的计算机书籍,仿佛几年没吃肉的人看到一盘美味的红烧牛肉!这次的兴奋仅次于得到生命中的第一台电脑。在图书馆中找了一些VC++21天自学通之类的书籍,巩固了一下C++基础,以及如何使用C++来开发游戏的《VC++游戏开发》一书,读完后尝试着用了GDI写了一些游戏,例如《坦克大战》(这个应该是第二学期做的)。另外也巩固了一下VB的基础,使用VB做了一个简单的系统管理工具,有点类似优化大师。  由于高中阶段的努力,让我自认为在同龄人中的技术已经是很不错,开始有些骄傲膨胀的时候,蚊子和志仔的出现狠狠地打击了我的&嚣张气焰&,学无止境,一旦满足于当前的技术,那便是逆水行舟不进则退。  蚊子并不是我们学校的,是一位大学同学的高中同学,同他一见如故(其实那时候尚未见面),但相似的经历,对技术的热爱,让我们有很多的共同语言。蚊子和志仔都是从高中便开始自学编程,并且学得比我好得多,大一时蚊子已经制作了不少看上去还不错的软件作品,对游戏外挂也略有研究,蚊子推荐给我的《Windows游戏编程大师技巧》,让我受益匪浅,后来此书成为了少数几本我反复翻阅多次的书。《C++Primer》和《EffectiveC++》是另外的两本,通过这些比较经典的书,我慢慢理解了C++和VC++的区别,面向对象、泛型。  志仔是一个超级邋遢的人,发型杂乱,每次见他都穿着拖鞋和大棉袄,然后挂着一条鼻涕。但很多时候看上去越邋遢的程序员越牛逼,大一的时候他就已经在研究木马之类的东西了,不是简单地使用工具,而是开发木马,终端控制,屏幕传输,视频压缩等等,都是他自己做的。对于等网页编程,他也颇为擅长,对于OpenGL和一些图形学算法也有研究,这两个家伙都自己写过操作系统(当然,不是大一的时候),毕业之后,他们变得更牛逼了。受志仔和凯文米特尼克的影响,那时候花了一段时间玩了玩黑客,但仅仅只是停留在表面,玩了一段时间发现,编程才是王道,于是丢下手上的黑客工具包,继续回到编程的正道上,有牛逼的对手一起前进,路上才有意思,这种相互竞争相互追赶的感觉非常地美妙。  大学前期基本都是围绕着C++游戏开发学习的。在大一的第二个学期,接触了汇编语言,这是一种与之前的语言完全截然不同的语言,需要运用新的思维方式,应该算面向寄存器编程,看了一些汇编教程之后,自己调用各种中断,用汇编写了一个打飞机的小游戏。在后面接触了面向对象的思想之后,就渐渐把汇编忘干净了。在五一的3天假期中,准备了泡面在宿舍闷了3天时间,把之前没看完的孙鑫视频看完了,初步理解了C++的类、MFC、多线程、网络编程。并制作了一个内网聊天工具,在网上断网之后可以和其他宿舍的同学聊聊天。  从大学开始就总是给自己制定着一堆完不成的学习计划,因为不想让自己有借口停止学习。特别是寒暑假,回家的行囊中总是塞满了计算机的书。  除了看书之外,大二还做了一些兼职,例如在勤工俭学那边帮忙送桶装水,送一桶水大概能赚5毛钱。与这种苦力活比起来,赚大钱的脑力活更适合我,辅导员给我和志仔介绍了一份兼职,维护一个PHP门户网站,每个月两三百的收入在那时看来已经颇为丰厚了,做这份工作也学到了蛮多东西,例如mysql数据库,还有网页抓取,正则表达式等等。  除了看书和兼职之外,另外还做了一些小玩意,例如用自己写的简陋的OpenGL游戏引擎做了个3D的坦克小游戏(3D模型文件的加载是自己在官网研究这种文件格式,然后手写的一个模型文件解析和渲染类),另外还学习了生命中的第一个游戏引擎&&HGE,在七夕的这天花了一个上午用HGE制作了一个《鸭子下楼梯》小游戏送给了老婆。其他还用Java、VB、C++写了一些乱七八糟的软件。  大三时,编程基础勉强还算可以了,对C/C++掌握到一定程度之后,学习其他语言都非常快。大三只在学校待了两个月,然后就提前出来工作了,这两个月里就做了两件事情。参加一场比赛和一场考试,学期开始时辅导员跟我说让我去深圳参加一个省里面的比赛,有很多学校参加,这让我很兴奋,大一入学时,就听到老师说某某学长在广东省的XX比赛中拿到了三等奖,那时心里满是羡慕和崇拜,而现在轮到我了。  我决定用HGE制作一款塔防游戏,和老婆组队(老婆是美术),第一个星期简单地学习了Lua和Delphi,然后用HGE搭建了游戏框架,使用Lua编写游戏逻辑,另外再用Delphi写了一个简单的游戏编辑工具,写到差不多的时候出现了一个重大事故,硬盘坏了,无法修复,是希捷的固件门,于是只能重新写过,幸好前些天去机房的上机课把代码拷过去看过,损失并不算太严重,但从此再也不敢用希捷硬盘了。  现在看来当年的这款作品实在是非常糟糕,但凭借着上台演说时的对答如流,侥幸拿了一个一等奖。如果志仔也来参加的话,一定可以拿出一个比我好很多的作品,但他总是神龙见首不见尾。比赛之后开始潜心准备软考,2010年的软考还是蛮难的,考的内容特别广,包括什么编译原理、网络等一大堆东西,考试时发现蛮多成年人来考的,学校参加这个考试的人不多,通过的就更少了,侥幸通过之后,就开始准备简历,打算到广州或深圳好好历练一番。  美好的大学生活就这样提前告一段落了,人总是在失去之后才懂得珍惜,工作之后回过几次母校,每次回去,看着熟悉的场景,回想起和同学朋友们在学校渡过的时光,心中总是百感交集。大学生活结束了,但另外一段苦逼的故事即将开始&&  前面五年算是一帆风顺,而接下来的经历,则充满了挫折与失败。  第一份工作  由于学历不高,还没毕业,经验不足让我吃了不少闭门羹,在大三刚开始时就开始在网上投放简历了,但基本是石沉大海。虽然没有面试邀请,我还是独自一人来到了深圳,因为对深圳这个城市很有好感(因为前面来深圳比赛的经历)。为了得到面试的机会,我不惜跑到人家的办公楼去霸王面,可惜并没有获得面试的机会,但现在回想起来,直闯人家的办公楼要求霸王面的时候,还是蛮有魄力的,虽然没有拿到面试机会,但年轻人就该如此,想做的事情就放胆去做,不要逃避,不要让自己后悔。  初来深圳时,已经在深圳做了几年游戏开发的梁师兄对我很是照顾(过来深圳比赛时认识的),在深圳晃荡了一周之后,终于否极泰来,接到了两个面试通知,面试的过程很顺利,也学到了不少东西,两边的面试官都对我挺满意的,拿到了一份转正后3K的3D客户端开发Offer和一份试用期4K的C++服务端Offer,于是我选择了后面的那份Offer,除了因为薪资高些之外,上班的地方在师兄附近(后来住的地方也在师兄附近)。  在工作的第一年里学习到了非常多的知识,网络编程和Linux服务器开发是我从未接触过的,几乎是从入门到熟练掌握服务器开发,这段时间的进步比以往任何时候都要快。在入职之前BOSS就给我描绘了一下美好的未来,C++服务端这个部门现在就你和另外一个工作一年的程序,但是马上会有3位经验丰富的大牛入职,其中有超过10年经验的大神,而且我们还有一位非常强力的技术支持&&于彤,来自博雅的服务端大神,他为我们提供了一套高并发的服务端底层框架,虽然他只是偶尔来客串一下,但却给了我非常大的帮助,也很大程度上影响了我,他的话不多,但每句都很受用。在认识的人中他的技术几乎是最好的,但也是最谦虚的,他的头衔是架构师,但他说他只是一个程序员。  首先复习了网络编程的基础,并将其搬到linux上,这是我把linux玩得最溜的一年,在于彤的指点下看完了《APUE》《Unix网络编程》《TCP/IP详解 卷一》等著作,大学时看《TCP/IP详解》如读天书,但在了解网络编程之后再看这本书反而津津有味,下班之后没有其他事情,独自回到白石洲的农民房里就是看书。为了解答疑惑、解决问题而学习比起普通的系统学习效率要高得多,因为目标非常明确。  后面在读过于彤的底层框架、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,但是淡总怂了,因为后续要制作的各种关卡需要花费的时间太多了,从关卡的设计,到关卡中每个地图的绘制,再到数值的调整,这些看上去还是需要一个专业的策划才能搞定,于是这款游戏被搁置了。之后淡总提议用这套美术资源开发一些其他的不需要关卡的游戏,不要浪费,于是我们使用这套资源开发了病毒射击和病毒消除小游戏,这两个游戏都做完了,但是玩起来感觉很单调,于是病毒射击又改成了病毒射击塔防,在病毒射击的基础上增加了很多新元素,设计了各种地形,各种道具,看上去游戏的可玩性增强了很多,但最后又回到了和病毒塔防一样的问题,关卡、场景、数值&..结果这些游戏一个都没出来。  在这些小游戏的开发过程中,总结了不少经验,那时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点,这是加班的最高记录。  最后,这款游戏在商务阶段,没有了下文,又是一个无疾而终的项目,而这些绞尽脑汁写出来的代码,又在硬盘上的某个角落,沉睡了。  临危受命  项目失败之后,又有去意,但此时已经差不多是10月份了,想着过完年再说吧。离职的主管介绍了一份不错的兼职,开发一款Cocos2d-x游戏,有点类似愤怒的小鸟吧,穗智小师弟跟我一起接了这个单子,大概花了3个月的业余时间比较轻松地完成了这款游戏,期间搭建了一个不错的物理框架,设计好,代码简洁,开发效率自然高。游戏的美术和关卡设计都挺不错的,我们签了一份5万块的外包合同,然而游戏做完之后我们只拿到了4万块,因为最后的一万块是要游戏上线之后才给,上线到Appstore时由于某个原因被打回来,然后这家公司就倒闭了&&这个项目的代码又在硬盘上的某个角落进入了沉睡。  在接外包之前,公司又开了一个新项目,这是一款精简的多人在线大富翁游戏,主要是山寨一款PC上的大富翁,我们都觉得这款游戏很好玩,把它搬到手机上肯定有戏。于是我作为后端主程开始了这款游戏的后端开发,当前端还没出Demo的时候,后端已经完成了复杂的游戏逻辑,例如各种随机事件的触发,并做了一个简单的文本界面客户端对服务端的逻辑进行了测试。大富翁的后端逻辑不同于一般的后端,一般是一个请求一个响应,但大富翁的一个请求可能触发的事件是不一定的,事件的流程也会随着不同的环境发生改变,并且中间有可能导致玩家之间的复杂交互。游戏的逻辑完全跑在后端,前端只需要执行少量的显示逻辑即可。由于进度超前,所以也有足够的时间完成外包项目。  到了发Demo版本的时间,前端的版本问题很多,延期了一两周还是没能顺利给出版本。由于突发了一些我们并不知道的紧急情况,经理对这次的延期有很大的意见,并决定亲自操刀,他仔细阅读了前端的代码,并对一些代码进行了删改,对前端的代码提出了很多疑议,并整天坐在前端小伙伴旁边看着他们写代码,要求每一行代码都写上注释,前端几乎停止了开发,每天都在写注释。游戏也已经完全跑不起来了&..  在前端小伙伴们奄奄一息的时候,经理找到了我,想让我把前端带起来,我一听吓了一跳。原计划是年前出一个Demo版本,年后一个月内出一个Alpha版本,经理希望我按照原计划把版本赶出来,在会议室中几个人对着我猛灌鸡汤,仿佛我能推平山岳,扛起这一切,把这个项目带向成功。而如果我拒绝,这个项目就进垃圾桶了,难道我做的项目又不能上线了吗????  内心挣扎了很久之后,终于把这碗鸡汤干了。干完鸡汤之后,我大概向经理提了10个条件,包括不允许经理再看前端代码,以及坐在前端程序身边看他们写代码。砍掉了一些不必要的功能。给前端同学放一天带薪假放松一下。给我一笔经费,在过年的时候将一些完不成的任务打包,明码标价,外包给前端程序去做,这些任务量并不繁重,但价格还算比较不错的,这样即可以在过年期间让项目前进,又可以避免前端同学年后回来对代码生疏了,需要重新花时间熟悉代码。各种讨价还价之后,雷厉风行地扛起了前端项目的开发,接下来Demo和Alpha版本都按照原计划完成了。虽然名义上是前后端主程,但实际上后端的工作已经完全丢给穗智小师弟了。  版本完成之后,又是各种新需求和周边系统,包括AI和托管等麻烦的功能,大概是五月份左右,腾讯的天天富翁上线了,我一看,跟我们的游戏一样,这对整个团队的打击都很大,而过年前,经理就已经提前知道腾讯会代理这款游戏了,也就是这个原因,他才亲自操刀。游戏接下来要做的功能已经不多了,但游戏的前景却是一片迷雾。之后开始对项目的前端框架各种优化总结,沉淀了一套通用的UI框架、资源管理框架以及新手引导框架。沉淀下来的框架简单易用,而且靠谱,这归功于长期基类下来的设计经验,以及在使用的过程中不断地调整打磨,还有对模糊的技术点的彻底研究,例如?Unity AssetBundle爬坑手记,只有彻底搞清楚了,才可以更好地使用它。  由于版权的问题,这个游戏最终还是没有上线。这些代码再次沉睡在了硬盘中。所以说,山寨并不靠谱,创新才是王道!  又是一段空闲期,我和淡总商量了一下,决定快速开发一款小游戏,于是我们开发了一款躲避类的游戏,类似宫爆老奶奶,为了能吸引到眼球,我们决定尝试一下色色的主题,也就是卵子躲避精子,游戏命名为《避孕达人》,经过精心的策划之后,这款游戏上了一些安卓平台。几次优化之后,我们都觉得可玩性还可以,打算就靠卖点广告来赚钱,结果到现在就赚了21块钱的广告费,其中的20块还是我自己点的广告&&  一段有趣的面试经历  接下来朋友推荐了一个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玩起来已经算是比较有意思了。直到现在,游戏终于到了最后的尾声,周边系统也基本完善,估计一两个月内就可以发布最终的版本,希望这款倾注了我们大量心血的游戏到时能够顺利上线吧,皇室冲突的成功也证明了手机上的即时策略游戏是大有可为的,如果这样一款有特色、有创意、玩法有趣、注重品质和细节的游戏都能失败的话,我真不知道怎样的游戏才能成功了。(为避免广告嫌疑,现在手上的项目就不详细介绍了,也不上图)  在繁忙的工作中,我完成了第一本Cocos2d-x书籍,这是第三次的推翻重写。每次写了一段时间之后,回过头看之前写的文章,顿时觉得惨不忍睹,必须推翻重写,或者是Cocos2d-x的接口又改了,或者是自己能力的提升推翻了之前的一些想法。总之不想将就,就得重构!就这样断断续续地写了三年多,直到最近这本书终于出版了。虽然希望做到极致,但能力有限,精力有限。中间看着Cocos2d-x的出版物逐渐多了起来,有过停笔的想法,但最终还是坚持了下来,这个过程比想象中要难得多了,但语言组织能力、表达能力都能得到很大的提升,对于要表述的技术点也清晰了很多。写书不易,经常加班的IT人写书更是不易,有了这么一个经历之后,对一些写得不是很好的书籍,我也不会去吐槽它了。大概在项目上线的时候,第二本Cocos2d-x的书也该交稿了。第一本书介绍了Cocos2d-x的基础,虽然是基础,但有很多点还是挖得比较深,例如指针、内存、纹理、渲染等。这些往往是一些初级程序掌握得不好的点,相信对于基础不扎实的同学会有很大的帮助。第二本的内容要比第一本精彩得多,听了网友紫虾的建议,把第二本写成了一本杂文集,深入总结了Cocos2d-x实际开发中的各种技术,例如跨平台开发的相关知识、实时同步游戏的前后端开发、Cocos2d-x的各种调试技巧、Shader、裁剪遮罩、加密解密、分辨率适配、Lua、Spine等等一系列实用的内容。甚至开发了一个类似U3D编辑器一样,可以实时调试Cocos2d-x游戏内容的界面工具,这些内容都是实际工作中一点点总结出来的心血结晶。在征得出版社同意的前提下,接下来会将书中的一些章节发布到博客中。  当完成书和项目之后,会有一段难得的空闲时间,可以好好陪陪家人,可以好好写写博客,可以好好踢踢球,可以把驾照考了。接下来也许会找一些志同道合的朋友继续做一些独立游戏,也许会好好学习一下如何编写操作系统,或者是研究一下Arduino,或者深入地学习一下算法,这些东西都非常有趣。
除非特别注明,文章均为原创
转载请标明本文地址:
作者:鸡啄米
&&( 10:4:50)&&( 9:52:29)&&( 10:2:43)&&( 10:15:44)&&( 10:0:30)&&( 10:29:41)&&( 9:54:25)&&( 10:39:1)&&( 10:12:57)&&( 9:44:29)
完全随机文章}

我要回帖

更多关于 游戏编程入门 的文章

更多推荐

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

点击添加站长微信