我的码农之路(一)

--学习的目的是让你能选择,而不是被选择

一、万事皆有因

    我于2017年6月从军队退役,在军队服役整20年(18岁参军入伍,可以计算一下我年龄有多大),且并没有从事IT相关的工作。由于2017年军队改革,确定会退役很多大龄人员(刚好我就是大龄人员,又不想退役后当一个一眼能看到头的且越难越难混尤其是不太适合我的公务员,所以必须先谋下后路,找一个工作谋生。思来想去,决定先当个码农当跳板,以后再设法转行。为什么一开始要选码农,是因为个人觉得它的起点和投入低(只需要一台电脑就行了),缘由就是如此。于是我作了一点小小的准备,就是计划把《Thinking in Java》第四版(英文版)再看一遍(其实这个第四版包括第三版我都看过几次,只是每次只看到一半就结束了),结果这次仍然是外甥打灯笼--照旧,退役时仍只看了一半(但也算是打了一点点理论基础)。然后我就退役了,新的生活开始了!

二、开学季

      退役后我回家休息了一个月,于8月4号去长沙我一个同学的一个小微IT公司混下经验,这里要感谢下我的那位龙同学。去的时候我的软件开发技能几乎为零,除了能用Java写一下HelloWorld,并在休息的一个月中照搬《分形算法与程序设计:Java实现》这本书中的代码做了几个分形图片外,其它的什么都不会。20年前大学学的东西当然全部是忘光了(那时还是学的basic,pascal)。刚好这时我同学公司跟北京一公司(linkjoy)合作的项目准备从cocos2d向unity2d转型,我和他一商量就先用Unity仿Dayz游戏做一个生存类的游戏(模仿是学习的第一步),顺便学习一下Unity。于是,一个大龄青年(其实是中年)在非IT专业出身(我本科是雷达工程、硕士是导航、制导与控制专业,听起来高大上),开发经验为零,不会汇编\c\c++\ c#\javascript\php及其它的golang\python等各种听说过或者未听说过的编程语言,从没听说过框架、数据库只听说过一个access的情况下下载了一个Unity3D软件,撸起袖子准备开干了。

仿的游戏叫DayZ,主要是我一个人在学习开发。在模仿过程中也遇到了一些困难,比如不规则图形的拼接(池塘),但最主要的就是随机地图问题。大地图中的简单地物好说,居民区的随机和道路、比较大的地物的产生困扰了我一些时间。经过我反复研究原游戏地图,发现随机其实是一定规则下的随机,把这些规则抽象出来事情就明朗了许多。于是,随机居民点和它们之间的道路、还有道路之间随机的湖泊我都做出来了。但是这时居民点内的众多建筑的随机组成和排列还是难点,为此我特意电话请教了一个华中科技大学计算机系的博导(专带博士后的专家,这里感谢曹博导的耐心解答),但是他也没有具体研究过随机地图的事,不过提到了英雄无敌这个游戏中的随机地图,说随机地图都是自己先确定一个规则,然后根据这个规则产生。英雄无敌我只玩过4,并且我在2003年玩过太多次了,熟悉的很,很显然玩过这个游戏的人年纪都比较大了。那里面的随机地图我知道,除了战役,里面的关卡地图内容生成是随机的,比如《狗日子》和《海洋政治》等。我就进一步问了下,有没有通常的一般规则呢?回答是规则应该没有通用的,都是根据自己游戏自己定义的。好吧,只能自己设计了,只是后来我还是没有设计出好的随机规则,就把它先搁置了起来。

这次学习中还遇到的一个麻烦的事情就是小地图的显示,小地图会显示大地图缩略图(当然居民点、道路和湖泊位置要准确)、并且还要保持人物在大小地图上同步移动。在我研究透了大地图随机问题之后,小地图生成也不是难事了。

当然,这次还学到了一些Unity中简单动画(不是骨骼动画),平滑跑动的处理(使用协程)等其它知识。

这期间同学的小公司有一些人员变动,有一个职员甲由于家庭原因离职了,后来又招了一个培训班出来的乙,乙态度不错,只是基础差了一点,两个星期试用之后也离职了。只有一个美女小姑娘丙一直在坚守岗位。再回到我这边,8月底,我觉得把这个仿Dayz做出来不知道什么时候了,也没有具体的开发计划。于是我就准备停下不做,计划离开了。刚好他们合作的新项目(小小航海士外传)启动,要招人(前面两个离职了),于是我同学推荐了我一下,然后北京linkjoy公司那边说是要看一下代码,我就把那个未完工的仿DayZ的工程发了过去(估计也没怎么看)。然后算是通过了。9月1号,在这个全国学生开学的日子里,我也是新生进入了开学季,加入了小小航海士外传项目,正式成为码农这个大学校的一名新生(这里再一次感谢我那个同学)。

这个未完工的仿DayZ工程一直保存在我的电脑中,它不仅仅是一个留念,以后如果有开发Unity2D,它仍然具有参考意义。

Log in to comment