开通博客一个月,本想着以自己的学习速度多少能保证不超过一周的发文空档,结果整个三月份到今天之前没来碰过博客,看起来这半个多月本菜鸟没任何进展,其实就是没有任何进展。实在要安慰一下自己的话,这么长一段时间笔者做的事情就是:为了完成自己一直以来的梦想苦学非web的跨领域新技术,结果学到有点门路时发现自己在另一个领域继续学习着web技术。
简单说说笔者的梦想,那就是游戏开发。笔者中学时期是最典型的的网瘾少年,所在的地方非常抓学习成绩,在父母老师洗脑下也在稳步学习数理化,但每周一天的放学时光全都会用来玩游戏,初中玩CF、地下城,高中玩LOL,大学头两年则是剑灵。笔者可以说是玩遍了21世纪头15年国内流行的所有游戏,这对学习数理化或者说考试成绩绝对是有影响的。不过笔者觉得自己对游戏的热爱没有半分不对或是后悔。这部分内容要是再展开会扯到上一代人与笔者这一代人的观念的冲突以及教育体制和社会道德上去。
大学时光笔者花了一年来体验大学校园的社交活动,剩下三年都拿来学写代码了,入了这一行看清楚的一件事是:沉迷网络与沉迷游戏在上一代人眼里是一个概念,但游戏开发在整个it圈里的比重似乎比想象中要小很多。真要回想回去,也分不清自己当初究竟是喜欢在计算机上使用各种软件工具畅游互联网,还是为了在游戏世界里当上全服第一了。入了写代码的坑之后,也一直没有去接触游戏开发,大学里没有安排游戏方面的课程,倒是把Android跟WPF都试了一遍水,虽然现在精通的方向是web,对原生的开发好歹也都略知一二。
但笔者对游戏开发一直都有一点小执念,毕竟自己被游戏策划玩了这么多年,也想看看这游戏策划是如何来做游戏决策的。这也是标题回到原点的大原点,有两年没时间去怠惰沉迷打游戏,在这个月居然就下定决心要去看看游戏开发了。
接下来简单概括一下笔者这半个多月学到的游戏开发的皮毛。
1. 不只是写代码
游戏开发绝不只是靠写写代码就能完成的,其从0到1入行的门槛之高的一大原因就是这短短四个字背后涉及到的东西贼多。或者说程序员写的代码在一个游戏的开发流程里,只不过是其中小小的一环而已。
笔者去年就有粗略学习过Unity引擎,但是学习过程却颠覆了双手都摆在键盘上准备大展拳脚的我,看了很多东西都还不知道究竟使用这玩意儿到底有程序员什么事儿。做的事情都是把一个个元素拖到场景里面,最后才建一个C#文件,简单的对场景里拖好位置的角色进行控制。
2. 不写代码
上周笔者看了一周Unreal引擎的手册,全都是关于场景的搭建,愣是没有需要写代码的地方,原本还担心大一必修课学的那点C++基础不够用,结果这货居然可以直接用其蓝图概念来开发游戏脚本,纯鼠标操作也没问题,如它文档所说,只为快速设计出原型的话,瓦全不写代码也能创造出一个基于UE4引擎的大型游戏来。
3. 游戏元素制作
游戏开发流程里,每个元素的模型啊贴图啊都是由各自岗位的设计师美工来制作的,专门负责搭建场景的人只要把这些素材拖到场景里面就可以了,而我们写代码的跟这些做模型的级别一样,写好角色啊场景的驱动脚本后拖进场景里具体的组件上来使用。
4. 服务器开发
还好游戏服务器给笔者带来了熟悉的感觉,虽然其语言换成了C或是golang,好歹还是比较接近其他软件的服务器的,在接近的同时更要追求性能,保证安全性与实时性,要求再多,好歹是只能使用代码来实现了,总不会以后连服务器都可以让美工来画吧!
最近的一周笔者开始专注于Cocos2d这个国产游戏引擎,笔者已经接受了一个事实:如果非要自己一个人写个游戏出来的话,就乖乖去学学绘图,切图,建模,电音好了,对还得写小说给游戏带来一个有丰富爱恨情仇内容的世界背景。比较清新的信息是Cocos2d的一个新的开发方案居然可以用JS来写游戏脚本,通过这种方式来跨全平台。
起初的担忧是:使用JS来写游戏,浏览器端还挺有趣的,难道原生端也都是弄个壳套上webview?还好现在看完其文档后多少看到了点门路,其在浏览器端使用JS来驱动html5画布,在原生端有一个编译过程来生成原生的工程,仅是使用JS来开发而已。这倒是挺新鲜,难不成真可以写写JS就在全平台都发布出个游戏来了。
不过这个暂时的结局看着还挺不错的,笔者现在可以一边继续web领域的深入,一边使用Cocos2d来学习游戏开发。等时机成熟,再从Cocos2d转到Unreal这些大家伙上去,毕竟虽然引擎不同导致其开发方式不同,但游戏开发的流程本身还是大同小异的。
这半个多月去游戏领域转了一圈,竟然又回过来写起了Javascript,一个漂亮的回到原点。