2015年个人工作总结

      2015年,对于我是很关键的一年,因为我离开研发团队1年零8个月后,又回归了。 同时也结束了外企优雅的工作生涯,加入到一个Unity3D的手游创业的小团队中,继续日常8小时的编程工作–自学和职业还是不一样的,职业接触的面不一定广、但是对技能要求的深一些。

     另外,自从2013年开始,个人技术博客网站走过了2013、2014、2015三个年头,这个网站也是象征我从传统IT行业往互联网行业转型的心路缩影,对了,现在互联网叫互联网+了。

    还有,研发管理经验是不分行业的,无论做电信行业OSS研发,还是Unity3D手游研发,靠谱的Team Leader都是一样的:他不能为公司挣钱,但是能够为公司省钱—每保质保量的完成一个项目,节约1个月时间,会节约7.5万人民币(1.5万/人月 *5 人)。 尤其在创业公司,不仅仅是钱的问题,靠谱还能够为公司赢得创业最宝贵的竞争力:时间。 例如,8月份发布产品,比11月发布产品,看起来3个月,对于大公司而言差别不大(1、2个合同订单的事情),但是对小公司而言,则很可能会决定公司的生死存亡!

而做好Team Leader这个岗位,可归纳为如下的要点:

不要求Team Leader:

  1. 技能牛B
  2. 长得帅
  3. 性情平和

要求Team Leader:

  1. 组织动员能力强
  2. 责任心强
  3. 谦虚的学习和反省能力强
    吐槽一下;

     

    1  创业公司的合伙人制度决定了公司的成败! 一般而言,选择大学同学、较熟悉的同事,则成功的概率高(有共同的理念和做事原则的默契度)。

    2  网上凑人未经过严格考核的“试用期”、10年不见的发小、传说中幼儿园同学关系,这些合伙人“组成”的创业公司大多会生死未卜!(开公司不是玩过家家的事情)

    3 原因很简单:嘴上说的,仅占50%,能不能和得来,得靠“试用期”— 先磨合3个月,试试看嘛!

    例如我曾经招聘过的一个程序员,其简历上吹NB,做过5个大项目,仅工作5年,貌似已经精通C#、C++,管理团队超过10人+….., 我K,项目目前正缺这样的人才–将才,好像是老天爷赐给你的似的; 给其争取到offer后,入职,在一起工作了1个月,才发现人才水的厉害,真的不是我嫉贤妒能呀,后来在试用期内不得不“挥泪斩马谡–辞退掉”— 我良心上也不安,寝夜难眠,但是为了团队大局利益考虑,砍!

    2015年的个人“大事记”:

    • 2015年1月:第三次系统学习Unity3D编程技术,体验了500元在线教育,效果–酷。
    • 2015年4月:赴北京参加Unite Beging 2015大会–游学、交友、自省
    • 2015年5月:最后一次参与组织技术大会 开源中国.西安
    • 2015年6月:入职西安**(一个创业仅3个月的棋牌手游公司),做全职Unity3D职业程序员
    • 2015年7月:荣获微软.NET MVP 2015
    • 2015年8月:系统自学Android开发,并和Unity3D完美应用,完成了多个插件模块接入
    • 2015年9月:公司岗位小调整,我“擢升”研发的Team Leader,同时兼任Unity3D程序
    • 2015年10月:VR/AR见闻(4月份黑人类社区上线;2015.10月份西安高调举行AWE Asia大会)
    • 2015年11月:系统自学IOS开发,并发布Unity3D在MAC下的ipa版本,完成Unity3D的跨平台实践

    2015年,博客写了30+篇

    今年博客网址(www.xifarm.com, www.codepiao.com)已经满2岁了,累计总发布博客112篇。

    2015年,书读了12本吧,有据可考的2015年书单如下:

    • 《iOS编程(第4版) 》  读完,并在11月份实践1.5个月。
    • 《Android 编程》 读完,并在8月份实践
    • 《小狗钱钱》本来是给儿子购买的,结果我自己悄悄先看完了。
    • 《火星救援》小说,电影当时还未来得及看,故看的Kindle的电子书。
    • 《游戏改变世界 》游戏行业一本重要的哲学书籍,游戏不仅仅是玩物丧志的事物。
    • 《Unity 2D游戏开发从入门到精通 》  2D游戏必备书籍
    • 《Sun 公司核心技术丛书:Effective Java中文版(第2版) 》 JAVA程序员必备
    • 《安德的影子》、《安德的代言》、《安德的游戏》 科幻三部曲
    • 《幽灵舰队 》 科幻小说大作
    • 《时间移民》 ,《三体》拿到雨果奖后,我看的又一部大刘的科幻小说。呵呵,我还抢注了“执剑人”的域名www.zhijianren.com
    • 《通关!游戏设计之道 》 雨松朋友圈推荐过的一本游戏设计的书,写得不错。
    • 《NGUI 实战教程》: NGUI未商用过,但是这本书,写得真好–有内容,的确是干货一本。

    历年个人工作总结链接:

    2013年总结
    2014年总结

    2016年个人的愿景:

    继续从事靠谱的Unity3D技术研发工作。

    在做好手游日常工作的同时,业余时间也会涉猎VR、AR技术的预研:demo。

    同时,会参加Unite Shanghai 2016大会–继续和全国的大牛们学习、交流、切磋。

    Unity3D项目实战笔记(12):手游优化之异步策略

         前面曾提到过《prefab的插件方式》,结果大量使用prefab,导致几个重要的prefab非常重! 也导致了游戏加载“卡顿”,一点点分析得知,是因为Resource.Load(*.prefab)导致的,对于框架的Prefab,把他做的很大,实在不是什么好主意的:一级界面在prefab上即可,点击二级界面在动态加载,即大prefab化小,以减少用户体验明显的“卡顿”现象。

        我的实践如下:

    Step1:优先采用协成

    private IEnumerator FinishProcessBar()

    {

    //Step1: 100%进度条

    finish = true;

    //Step2: 停止0.2s

    yield return new WaitForSeconds(0.2f); //在100%进度条上,停止0.2f

    //Step3: 切换页面

    Controller.Get().PushNext();

    }

    但是有问题,仅仅这个方法是无法解决问题的,因为:

    Coroutines aren’t async whatsoever – they’re completely synchronous with the main unity thread。

    Coroutines 往往是主线程里面的,无法实现C#中的多线程效果。

    Step2:查Unity自带的函数  Resources.LoadAsync

    Unity4.5.3 新增的函数,可以动态异步加载资源,如prefab、大图片、声音文件等,使用也很简单。

    req = Resources.LoadAsync("/Prefabs/Func1");

    yield return req;

    LLWindow = (GameObject)GameObject.Instantiate(req.asset); //5s

    LLWindow.SetActive(false);

    这里结合了协成和系统异步加载函数,完美解决问题.

    类似的方案, AB也采用了– AssetBundle.LoadAssetAsync

    还可以异步加载场景—Application.LoadLevelAsync

     

    Step3: 异步策略后,善后的事情

    我在prefab的Enable函数中,多次用到了GC.Collect函数,希望尽快让Mono.NET及时回收不用的内存,但是这个却会导致手游卡顿现象–在红米测试机上体验,故得删除之:

    GC.Collect(); 频繁调用,启动会导致程序"卡顿"

     

    另外,“启动黑屏2~3s”问题:

    打包Android APK包的时候,选择Script debuging、profiler、Development Build模式,也会导致启动“卡顿”,且包会增大2M ==》 调试完毕后后,及时记得去掉这些选项。

    最重要的,一定要有一个打包的文件夹,开发的和打包时2份不同代码,也省的每次切换配置可能导致的这种手误错误。

    Unity3D项目实战笔记(11):Unity 2D会用到的知识点小结

         全职编程Unity 2D手游已8个月了,已经上线了1款,还有1款正在研发中,预计1月中旬上线,这里小结2015年做的2D手游棋牌项目部分2D知识点。

    (考虑到我是研发,故这里仅列出了用到的知识点,不会涉及公司研发的细节–毕竟签署过保密协议的,呵呵.)

    image

     

    注:服务器用的是商业化比较不错的SmartFoxServer、JAVA、MySql搞的,稳定性非常不错。

     

    • UI: 一般考虑UI布局,可使用TK2D、NGUI或者UGUI的解决方案,经验是不要混合使用。 这3种UI方案,均提供UI auto layout的; 另外,字体也是UI的重点考虑要素,有ttf动态字体方案和bmfont图片字方案,不考虑特色特色方案情况下,ttf一般不用过多考虑—用Unity做的手游,输入文字、输入数字是很蛋疼的事情,故动态字体绝对是鸡肋功能,使用概率非常非常低。
    • 物理: Unity从4.6开始加大了对原生2D的支持,故提供了2D特有的组件,主要是物理组件。如Collider 2D,Rigibody 2D, Joint 2D等。
    • 动画: 2D下的动画主要是用多张图片做帧动画,例如牌型动画。 也有一些特殊需求是骨骼动画–例如人物动画。 TK2D和UGUI提供的帧动画,非常简洁。
    • Sprite: 中文翻译为精灵,也就是图片;这个是2D中除了UI外最重要的界面元素了,一般有九宫格的切图需求,还有就是可采用TexturePackager进行图集打包压缩。
    • Advance: 项目进行过程中,对于有项目实战经验而言,有些事情要提前考虑和布局了,如AssetBundle的应用–涉及到服务器设计架构,以及粒子和shader的应用。 另外在项目的中期要考虑手游的优化–以k为文件大小的优化apk包大小。这里吐槽一个事情,Unity5.*开始,Android下默认支持X86和Arm架构,导致空包有18M大小,但是国内很少有Android的X86设备–据说小米平板是,故为了减少包大小,方便运营推广裁剪了X86版本,缩小了8MAndroid apk文件大小。
    • 公共规范:和具体编程关系不大,但是决定了团队合作的默契度。 项目的组织,规范好文件和文件夹是非常重要的事情,能提高沟通效率。另外在和美术团队沟通的时候,定好约束,如960*640 2D横板的美术标准。因为2D上,Unity已经很强大了,这里也引入了一些第三方插件—DOTween、VP_Timer、PoolManager。

          学习Unity2D知识,都知道和能够上线一款产品,差距还有有的,要不,一般公司招聘会特别标明–成功上线一款手游的实际开发经验呢。

     

    手游推广:  扫描二维码,下载《坑王争霸》手机版(Android、IOS):

    http://www.pgyer.com/wakeng

    image image

    谢谢大家下载支持,指教的和报bug的,请QQ联系我:21372550。

    Unity3D左右出击:Unity 2D新功能发布会、Unity VR大师课程

       做为Unity3D技术的从业者, 非常关注一举一动—Unity3D大中华区. 如自从11月中到12月中,短短的1个月时间,对于Unity3D大中华区, 发生3件大事, 可以说算是三把火:

     

    11.23日 唐嘉隆任Unity大中华区总经理

           这种重大的人士变迁,对外企大公司而言,应该是内部有了一些“地震”了,要不中国这边的boss都换了。据说国内手游、VR市场火热,2015年Unity已经有2名内部骨干出去创业,或者加入创业公司了。 全球450万Unity程序员,中国占了40%,热火程度可见一斑。

           新的干部队伍应该会有较大的作为的。目前看已经稳住阵脚了,以方便我等广大的Unity程序员们的心里:减少内耗、服务好开发者先。

     

    12.15日  Unity VR大师课程

             从资本、技术角度看,VR、AR是未来5年的战略制高点,这一点Unity非常清楚,自从5.2开始,Unity已经支持了全球4个重要的VR硬件头盔–原生支持;这次举行VR聚会,将会进一步增强Unity在VR行业的领头羊角色。 目前全球跨平台开发VR的IDE工具,Unity占了约70%,另外的对手主要是虚幻引擎,这次Unity在北京开会,有主动求战的意味,毕竟牛B的虚幻在国内行事低调的多。

              看好Unity在VR、AR领域的领头羊角色:跨平台、免费、Android、PC、IOS多平台快速demo原型。

     

    12.17日 Unity 2D新功能发布会

              尽管Unity以3D著名–其Unity3D.com网站为公司官网的。但是在手游时代—包括2015年,主要的手游还是以2D为主,据说手机上3D手游开始看起来很酷,但是巨大的耗电量\发热\玩时间长了晕等硬伤, 只能是手游的一个宣传噱头,很多公司是2D\2.5D为主的—我了解的.  而在2D上,Unity在4.*前无原生的2D支撑,一般依赖第三方插件,如TK2D

               2D手游,Unity的劲敌为触控科技的 cocos2d x。  本次高调举行Unity2D新功能发布会,属于和cocos2d x 主动求战PK,以弥补2D的先天不足。

     

    • 做2D手游,首选 cocos2d x, 然后是Unity 2D
    • 做3D手游,首选Unity3D,然后是虚幻引擎
    • 做VR技术,首选Unity3D,然后是虚幻引擎

    故,如此对比,cocos2d x必然要逊色不少,而Unity3D固然问题很多,但是却是2D、3D、VR技术全栈也,有利于一个靠谱程序员的更长的生命周期—不用频繁更换技术架构和技术知识储备了。

     

     

    小结一下,我的Unity技术栈,如图所示:

    image

    1. Unity3D技术: 2013.6月份开始了业余了解Unity,做demo,翻译了14篇Unity技术文章
    2. Unity2D技术: 2015.6月份开始了全职Unity程序员,做的是2D棋牌手游。
    3. Unity VR技术: 计划2016年业余玩玩,前几天采购的暴风魔镜4 预计春节前能到货。