2013,对我来说,这是特殊的一年,因为在这一年,我步入30岁了.无论如何,这都是无法被忽视的.
总的来说,2013年总共只做了3件事情:
1.脱离了这家为之奋斗多年的公司,5年,这对于职业生涯来说,不长也不短;
2.开发了几款游戏,并完善了游戏引擎.计划中,这件事情本该在2010年做的事情,当然,现实总不会如人意的;
3.开发了一款音视频解决方案,支持P2P以及服务器中转,支持H264,AAC.
关于第一件事,我不愿多说,个中滋味,只有当事人自己才能知道.对于这五年,如果非要做一个评价,那只有一句话可以表达:往事不堪回首.当然,这么说,并非就是说这五年是一无是处,不是这样的.任何事情都是有好的一面和不好的一面.
不好的一面是,这个项目做得并不轻松,而且也并没有向着健康的方向发展,各种原因,我只能说,现实并不是那么单纯和纯粹的.
好的一面是,我有了一个长足的提高和提升,这正是我想要的.很高兴的一点是,我很好的认清了一个人.失败并不是一件坏事情,在失败中,我们能够得到许多的教训和经验,所以失败要趁早.失败,也并不可怕,可怕的永远都是爬不起来.失败了,就要爬起来,吸取教训,再来.否则,再多的失败也是没有意义的.
关于第二件事,这个游戏引擎是一个2D的游戏引擎,当初是基于HGE改的,然后吧,我这人看的引擎又颇多,所以其中杂糅了许多其他游戏引擎的东西.比如Ogre3d,CEGUI,popCap,GameBryo...每个引擎都有好的和不好的东西,而有的时候,好的东西又不是合适的.所以,这一过程是纠结而又痛苦的.
我当初用了一个月的时间作出了引擎的雏形,并用它开发了一个连连看.其时,引擎并不是完善的,发生了一些不愉快的事情,整个进程就停滞了下来.今年初,我研读并重构了之前手下人拿引擎开发的游戏,对引擎进行了一个补足和改进.这时候,游戏引擎才算是一个完整的游戏引擎.
任何一个游戏引擎和框架,如果没有经历过一两个应用程序开发的考验,它就不是一个好东西,它不过是一个空中楼阁,站不住脚的.不论是引擎也好,应用程序也好,它们只有在应用当中才能发现自己的不足,才能找寻到改进的动力.像GameBryo,cocos2d,它们都是一个游戏的开发产物,它们更为讨好开发者,尽管如此,他们也还是有需要改进的余地.
现在的游戏引擎,跨平台也变成了考量的一个标准.后面,引擎的跨平台也是要做的一件事情.当然,这需要需求来推动,如果有这个必要的话,我就会做这个事情了.
关于第三件事,前不久有人问我的职业是什么.我说我是:互联网娱乐开发者.就是因为我掺和了一下音视频的领域,在此之前,我会说我是:网络游戏开发者.当然,我对这一领域的关注也不是从今年开始的,很早,至少四五年前,我就开始在读libjingle的源代码,去年开始在读webrtc的代码.虽说,这是一场没太大信心的战,但是,至少我是有所准备的.
最开始,我在和编解码器在较劲.
最开始支持的视频编解码器是:DivX和xvid.但是显然他们是不适用的,后来发现H264是行业标准.H264可以说是xvid升级版,在高压缩率下能够很好的保证画面质量,所以H264不成行业标准,舍我其谁.
音频编码器最开始只支持iLBC,但是音频又区分为:语音和音乐.这样两种质量水平.像iLBC和Speex都是这样的语音级别的编解码器,也就打打电话聊聊天就可以了,如果你想要听音乐,唱K,抱歉,他们的质量就不行了.这时候就需要AAC这样的编码了.
最终确立的标准音视频编码是:H264+AAC.为了达到一个合适的码流,比如音频,我总共听了好几百组的录音,最终确定了其参数.视频我都不知道我折腾了多久.我是发扬了愚公移山的精神,最终总算是把这一块给搞定了.
搞定了编解码器,这还不算完,这还只是一个开始而已,网络传输这一块的水更深,折腾了好几个月,首先支持了基于UDP协议的RTP/RTCP协议,然后还要做重传啊.总之还是发扬的愚公移山的精神,把能够试的方法都试遍了,这样做有一个好处,好的不好的都清楚明白了,之后最终要怎么做,就可以做到了然于胸了.不过,这一块还没结束,我觉得是远远没有结束,之后要走的路还很长.
在这里要感谢Google,他们开源了webrtc,这是一个巨大的宝库.它使得音视频这一块的门槛降低了下来,虽然这样说,不过它实在是太复杂了,要把webrtc给吃透也并非轻易之举.所幸我花费了好几年的时间读libjingle,故而webrtc读起来也就相对轻松许多了,可是这块领域实在是太大了,要吃透它还是需要很长时间.而且,我也暂时没有打算要完全的把webrtc应用到项目中,因为webrtc是重型的,而我的项目本身是轻量级的,只需要取其精华就够了.
做这一块,最大的收获是,我更为深刻的理解了TCP和UDP.有段时间,我试着用TCP传输,虽说最后的结果是:这条路是行不通的.但是这次尝试中,我发现了我TCP服务器底层的好几个隐藏已久的bug,只有在高负荷下才会出现的bug.另外还有一个深刻的觉悟,UDP想要不丢包,那是痴人说梦.准确的说,互联网通讯想要不丢包,那是不可能的.
2014年,我还有很多艰难的路要走,而且人生以后的路也会有许多的艰难困苦.但是我始终信奉着:艰难困苦,玉汝于成.只要心中怀着斗志,不服输,不气馁,没有什么是克服不了的.
华丽的辞藻说再多也是没用的,我这人也不是那么喜欢说花哨话,因为我深知,话说得再漂亮,也不能为我的人生改变什么,也不能帮我解决任何问题,唯有脚踏实地,勤奋努力,一步一个脚印的走下去,这才是王道.
2012和2013年,因为一些事情,我变得极度的消极.而且这种消极到现在都还没有完全的根除,人的一生就这么长,不能够总这样消极下去,不经意间,人生就到了尽头.到死的时候,自己还因为消极而一事无成,糊里糊涂的过一辈子,那绝对不是一件好的事.
2014年,我必须要做回我自己,我必须要为我这仅有的一生去写出一份满意的答卷.
2014年,没啥好说的,唯有加油!