微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)

    网上火热的“微软.NET年芳15”文章,我也得写点什么嘛,毕竟我还是现任的微软MVP

image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb

 

摘录网上的“.NET 15周年”信息如下:

微软的 .NET 框架本周迎来了 15 岁生日。.NET 的第一个版本在 2002 年 2 月 13 日作为的 Visual Studio.NET 的一部分首次公开亮相。过去 15 年,.NET 框架从一个流行的闭源软件开发平台,变成了一个开源的跨平台开发工具,微软是在 2014 年 11 月 12 日宣布开源 .NET,支持竞争对手 Linux 和 OS X 的平台。微软称,Visual Studio 2017 将于 2017 年 3 月 7 日发布,而 Visual Studio 也迎来了 20 岁生日,开源的 .NET Core 也将发布 2.0版本

 

      我梳理了一下目前的.NET技术栈: 业务是基于Unity3D(跨平台游戏开发引擎),开发AR、VR 应用; 绝大部分项目采用单机版,使用的编程语言是C#(Mono.NET),不过最近交流的AR几个业务,明显用户已经不太满足单机版,有更多的需求需要用到联网的服务器功能,故技术选型就势在必行了:也算是未雨绸缪吧。

 

技术栈选型

我的技术选型有2点原则

  1. 成熟,有助于提高开发效率
  2. 人多,有坑大家一起填

这2点原则是基于第一次创业失败的经验总结。约在3年前吧,刚开始创业的时候,特别排斥C#.NET技术(互联网创业,还用C#,说出去都不好意思啊),虽然用的是Unity3D游戏引擎(C#),但是服务器选择却是非.NET倾向的。 那个时候对比了多种技术栈:

  • PHP游戏服务器
  • Node.js游戏服务器
  • C++游戏服务器
  • JAVA游戏服务器

权衡再三选择是Java,采用的是SmartFoxServer商用服务器框架,JAVA和C#非常类似、学习成本低一些。

种种原因,后来呢,第一次创业失败了,我的反思是“创业成功大部分原因是CEO的引导有方,创业失败大部分原因是CTO的选择失误导致”。

当时我没有考虑到成本意识、对一个5人研发团队,C#、Java并行的沟通风险有多大:

如果当时客户端是C#技术栈、服务器端也是C#技术栈,则可以从5人技术团队裁掉1人,节约20%人力成本,而且减少沟通后可以提高30%的开发效率,进而有效的推动产品快速扑向市场的速度,可惜这个是“事后诸葛亮”。

这个“事后诸葛亮”,我一直如噎在喉.

       不过去年在一次微软技术峰会,看到网易案例的演讲,我的眼睛亮了起来:“微软技术大神徐玉涛Tory做的分享—网易《绝代双骄》将游戏后端从Java转为新一代.NET Core,研发效率提升20%,服务器成本节省50%”–在线视频为证。

 

故对选择一款C#的服务器,以打通AR、VR客户端、服务器端,提高开发效率,生产力加速,我个人非常期待

Photon

商用

成熟

C# (Mono.NET)

ASP.NET Core

开源

 2.0还未发布

.NET Core

Unity Network Unity自带 局域网

C# (Mono.NET)

有SmartFoxServer的实践经验,故雷同的商用服务器Photon我本次做了专门的实践.

Photon支持3种类型服务器

  • LoadBalancing: 负载均衡服务器
  • MMO: 大型MMO网游服务器
  • Lite: 大厅、房间类型服务器 (相对简单一些)

Photon授权策略:免费版100个CCU (对于绝大部分AR、VR项目足以了);  商用版3500美金不限制CCU (约2.5万人民币)。

image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb1

 

云服务器选型

我的选型原则也就2点:

  1. 速度:国内访问速度快、快、快!
  2. 便宜:方便我们这种初创型公司节约不必要的成本

虽然同样是世纪互联在运营,但是早期的AZure在我心目中,网速那是非常非常的慢、价格也是高高在上(和国内的阿里、百度等云比起来,毫无优势可言),故原来使用过阿里云、七牛云,国际版高大上的AZure和AWS都未曾考虑过。

但是呢,微软MVP内部微信群、邮件组,AZure的讨论还是很多的,尤其是“自2017年2月1日起,Azure虚拟机价格大幅下调,最高降价幅度高达60%!”这则消息讨论了好几天,我也渐渐回头持续关注AZure。

通过信息搜集,我了解的AZure信息碎片如下:

Windows Azure在北京、上海部署有服务器

中国的AZure是个”国内版本”–和国际版AZure采用物理隔离方案

MySQL也是比较符合目前国内接地气的方案;

AZure新的特效,国际版和国内版部署时间约差不多是3个月至半年。

https://www.azure.cn/  是国内版本的网站

 

在Azure上搭建Photon服务器(C#.NET)

image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb2

 

未来AR产品软件框架是这样的,服务器端需要搭建游戏逻辑Photon、以及资源更新AssetBundle–更新资源。MySQL目前是国内很多公司的标配–社区版免费。

 

image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb3

Photon运行方式很简单,选择服务器实例,启动应用即可,符合GUI操作习惯。

 

image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb4

AZure虚拟机,提供了C盘,直接把需要的软件和数据,通过远程桌面拷贝过去即可,windows Server 2012英文系统,还是挺方便的。

 

几个有用的小技巧:

  • TT模板:database first–自动生成模型代码

原创文章来源: 使用T4模板生成MySql数据库实体类

注意在VS2015下,需要把.ttinclude后缀修改为.tt才可以。 同时,需要修改 数据库连接为你自己的 9 var connectionString = @"server=127.0.0.1;uid=root;pwd=12345678;charset=utf8;";

AZure开5505 UDP端口

  • 前端、后端C#链接类快捷方式:节约成本的王道

image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb5

即,直接可以实现前段和后端复用模型实体代码、传递的Code枚举代码,以减少文档重复工作量。

以关键的OperationCode为例,如果前端是C#、后端是Java,则无法做到代码级别复用,即需要写文档来约束。而相同的C#代码后,注释好.cs文件,前端和后端是同样的代码,则沟通起来畅快了很多。

public enum MyOperationCodes : byte
    {
        /// <summary>
        /// LoginOperation
        /// </summary>
        LoginOperation = 100,

        /// <summary>
        /// EchoOperation
        /// </summary>
        EchoOperation = 101,

        /// <summary>
        /// GameOperation
        /// </summary>
        GameOperation = 102,

        /// <summary>
        /// ChatOperation
        /// </summary>
        ChatOperation = 103,

        /// <summary>
        /// ChatOperation
        /// </summary>
        CCUOperation = 104,
    }

  • MySQL ORM (Dapper框架):

    我选择了轻量级、火热的Dapper(stackoverflow网站就用它来做ORM),而且开源。 image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb6

    使用SQL部分代码如下:

Db aa = DbInit();

 
var a3 = aa.Query<device>("select * from device where uuid=@uuid", new { uuid = "aabb636238694579824398" });

 

device dv = new device
{
     UUID = "aabb" + DateTime.Now.Ticks.ToString(),
     DeviceModel = "IOS",
     DeviceName = "Iphone 5s",
     RegisterDate = DateTime.Now.AddDays(-1),
     UpdateDate = DateTime.Now,
     TokenID = DateTime.Now.Ticks.ToString()
};
long ret = aa.Devices.InsertOrUpdate(dv);

var a1 = aa.Devices.All();

    • Json序列化工具:newtonsoft

    本来Unity5.3已结自带了Json序列化API,但是有bug,Json序列化可能为空,就选择了”老朋友”newtonSoft.dll了。

    • AZure开通端口
    • 应用跑起来后,端口一直不通,需要AZure开通端口–首先在Windows Server里面开通端口(TCP\UDP),然后再AZure里面开通:网络接口–网络安全组–入站安全规则、出站安全规则。

     

     

    PhotonLab 源码:https://git.oschina.net/xifarm/PhotonLab

     

    参考

    1. 时间飞快–连微软官方都开源了208个源码库
    2. 岁月在挑灯夜战中走过:亲历的软件框架
    3. 我的微软.net演进路线图
    4. 荣获2015微软.NET MVP称号!
    5. 写在.NET 15周年之际——致那些仍然爱着.NET的中国程序员们 来自微软MVP Tony Qu微信
    6. .NET 十五岁,谈谈我眼中的.NET 来自微软MVP  张善友的博客》

    VR 2016年元年小结:Vision VR/AR Summit Asia 2016

       上周,Unity官方组织的Vision VR/AR Summit Asia 2016成功举行。本次活动,对VR 2016元年来说,如同”冬天里的一把火”, 现场有超过1500人在场,足足2天的干活分享。下面以个人视角进行解读:

    Unity3D、移动VR、VR 趋势、ARVR未来

     

    • Unity3D

    Unity3D作为VR使用最多的2个引擎之一, 继续发挥领跑角色。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb

    不过,Unreal目前使用人数较2016年初而言,增加了不少。

    未来Unity3D在移动端VR、AR会占据绝对地位,而在主机、PC VR方面,其和Unreal的距离越来越小。

    同时,由于竞争机制,Unity也加快了在VRAR中的产品迭代,如Unity 5.6原生集成了Google Cardboard、Daydream,并在移动端支持了Linear 颜色空间,且Unity下个版本会原生支持Vofuria等。这些新特效对ARVR开发者而言,绝对是好消息中的好消息的。

     

    • 移动VR

      移动端市场在爆发:小米公司、Google公司站台表达了观点,移动VR才是王道,大家请站好队。

    无独有偶,12月15日,华为和小米选择同一天发布了自己的VR设备.

    小米VR眼镜正式版评测:199元就值得买了吗?

    华为全面布局VR,Mate 9 Pro助力VR生态发展

    Daydream View评测:史上最舒适的VR头显

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb1

     

    在移动VR中,我个人对DayDream尤其看好,上个月还专门撰文 《DayDream, 移动VR 2.0里程碑: 概述》。 唯一可惜的是,都快1个月了,国内还没有卖Daydream手机的,除了Google亲儿子Pixel外。

    不知道华为、小米们,能否在2017年Q1出Daydream设备呢–直接可以在Daydream View使用的。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb2

    • VR 趋势

    在14号晚,Vision Party中,一位老友随意谈到:

     

    VR最近咋样了?  我看好像都要跪了。

     

    诚如是, 今年VR如过山车一样,年初3~4月份如火如荼,年底10月份后就”低调”很多了,相反很多看衰的新闻层次不齐:业内曝光n个企业裁员、融资不利等等。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb3

    如通过百度指数看,最近VR关键词搜索量,几乎是今年最高峰的30%。网络大数据流量上,也间接佐证了VR、AR行业的2016大起大落事件。

     

    从技术迭代周期看,VR较AR成熟度搞一些,目前VR在爬坡阶段:完美的无线VR解决方案在研发中。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb4

     

    2017年的预测–来自HTC vive的从青口述。 他认为目前的确是VR寒冬,但是2017年发展会非常好,尤其是VR范教育方向,会爆发。

    HTC不仅仅有Vive的PC端解决方案,其还代工了Pixel daydream手机,故HTC也具备移动VR的潜力。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb5

     

     

    • ARVR未来

    微软不老:HoloLens依然大放异彩。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb6

    微软在ARVR上,明显较Google、Apple公司发力要明显一些。如目前的HoloLens,和明年年初携手6个厂家(华硕、宏碁、联想、惠普、戴尔、3Glasses)推出的PC VR方案,均说明了“朕一天不死,尔等永为太子”。

    核心是Windows 10系统的holographic,目标剑指VR底层操作系统。

     

    比尔盖茨:“对一项新技术,人们往往高估2年内的变化,而低估接下来10年内的变化。”

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb7

     

     

    一个好的社区,是有温度的社区。

    每次参加会议,30%是为了听、看、学习,其他70%是为了和老友聊天。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb8

     

    参考: Unite Beijing 2015大型活动

    DayDream, 移动VR 2.0里程碑: 概述

         VR设备, 断断续续使用了很多个; 尤其是最近半年,主要是PC VR方面项目. 以前对移动VR不感冒,这几天试用了一下DayDream, 眼前突然一亮, 就如同年初首次使用HTC Vive眼前一亮的感觉. 没准Daydream会是一个不错的移动VR的里程碑,故写文章记录一下。

     

    这里列出我使用VR设备的里程碑时间:

     

    1. Cardboard: 2014.8
    2. Oculus Rift DK2: 2015.4
    3. HTC Vive: 2016.2     【PC VR 主力产品】
    4. PS VR:2016.3
    5. Gear VR:2016.3
    6. Oculus CV1:2016.8
    7. DayDream:2016.10  【Mobile VR主力产品】

     

    PC VR的主力产品,在国内目前主要是HTC Vive了,因为其佩戴舒适性、Room Scale空间定位、以及VR APP对国人的友好型(不用爬墙下载软件,这点非常赞), 周围做To B开发的团队,大多使用HTC Vive设备进行调试。

    不过,依然要吐槽一下,HTC Vive大约有3个地方不令人满意:

    • 硬件设备太贵:电脑 + HTC Vive,几乎1.5万硬件成本
    • 运营成本高: 如果要使用Room Scale空间定位技术,为了安全,需要旁边有人守护。
    • 占地面积大:线下体验店,5m*5m,才能有1台Vive设备,导致人流吞吐量小,资本回收慢。

    故,这些硬伤很蛋疼,虽然国内jd能够实现211直达送货,但HTC Vive的硬件销量依然不佳,可能80%的销售是卖给开发团队的开发机器吧。

     

    现在,让我们把目光转移到移动VR,早期教育市场的Cardboard,随着Google推出Daydream,Cardboard已经慢慢要退出历史舞台了。对程序员庆幸的是,技术栈是一样的,故,还是很期待Daydream在未来半年能给VR大潮助力的。 Gear VR之所以我不看好,是因为完全被三星高端手机给绑架了,而我看好DayDream是因为中国的小米、华为、中兴手机都会在未来半年推出Daydream手机,而在Android手机时代,中国力量已经在全球占据60%了(全球Top5的Android手机厂商,其中中国就有3家)。

     

    何为Daydream?

    image  DayDream, 移动VR 2.0里程碑: 概述 image9 thumb

    Daydream是Google推出的Android 7.0操作系统的一部分 (Daydream-Ready), Daydream包括3个部分:智能手机、头戴设备和手柄,以及应用,即从Android操作系统底层对移动VR做了优化。自然,谷歌先宣布了自己的两款Daydream-Ready手机Pixel&Pixel XL (HTC代工),以及售价79美元的Daydream View 头显。

    Daydream,有几点很有可能会火爆市场,甚至实现 ”移动VR 2.0里程碑”:

    • Daydream集成了移动VR的“鼠标”功能,通过DayDream View控制器或者Android APP
    • DayDream从底层解决了移动VR渲染时延问题,据说可以<=20ms,体验大大提升
    • Daydream获得了手机厂商大力支持(要使用移动VR酷炫功能,迫使用户换最新骁龙821的手机)
    • Daydream会获得Unity官方大力支持,当年Unity火的一塌糊涂,就是因为手游啊.

     

    1 Gear VR将支持Xbox无线手柄,向Daydream开战

     

    2  HTC推出VivePort M移动VR商店

       本周,HTC正式推出Viveport M开发者测试版,通过完成Viveport在移动端和线下渠道的布局。目前,Viveport M已经开放开发者测试版本,Vive注册开发者可通过Viveport后台系统进行下载,而消费者版也将于年底前正式上线。

     

    3 Oculus VR新方案(Santa Cruz):

     

      Oculus 一体机 Santa Cruz:inside-out 空间追踪技术(不用连接任何线缆和电脑的一体机)

    image  DayDream, 移动VR 2.0里程碑: 概述 image thumb

    备注:微软的AR设备HoloLens也是采用inside-out 空间追踪技术。

     

    昨天和一个朋友聊,他说,现在让人现在花5000元买一个高端PC主机的动力,远远不如花5000元,去买一个高端手机有诱惑力。

    仔细想想,以5年前国内手游市场崛起为例,这句话还是很有道理的。

    校园里的开学季:杂谈人的成长

           过去的3年,曾经在9月份的开学季,写过2篇“开学季”博客,针对程序员、学习、学生做了一些成长的点评。

    2013年 《开学季:学校是学校,学习是学习

    2015年 《又到了入学季,谈谈软件研发的团队建设

    而2016年的开学季,我身处学校里面(中国农大.VR实验室),切切实实的亲历了开学季: 人的成长,未来的前程,实际上,从入学时,已经确定了:态度决定一切。

    你的未来诉求,你的做事态度,整个过程,由量变到质变,会无形之间影响到结果。 例如,在中国的研究生,有个不成名的规则,大部分时间会在实验室里面半工半读,也会领到工资,这种“打工形态”20年前如此,目前也是如此。    尤其是软件、计算机系的学生,几乎就是个程序员,起早贪黑的加班加点干活:需求策划、美术沟通、写代码、测试、项目验收等等。  这个事情,本无可厚非,但是你仔细观察的话,会发现学生无形间会分为2类风格:

    • 有的学生,主动、积极参与,虽然拿的薪资是职场的1/n,但是无形间,能力水平已经非常高了。
    • 有的学生,被动、消极逃避,“天生我材必有用,未来天天写代码,何必当下写代码”。

    image  校园里的开学季:杂谈人的成长 image thumb

    这个对吗?

    我觉得很对,“书上学来终觉浅,绝知此事要躬行”, IT行业的,不会写代码和写代码的人对职业发展是有质的区别的,你可以写代码,但是未来可以切换到不写代码的工作。而且,会写代码和不会写代码,会让你多1倍以上的就业、创业机会。  再说了,北京目前写代码的程序员,月薪2万、3万的比比皆是,相对10年前1万元收入,写代码已经很“高大上”了。  

    而,所谓的纯理论研究,或者说搞科研,在中国的土壤其实并不深厚:资金限制、人才断档,短短半年,能做出什么靠谱的理论研究成果呢?  搞学术研究和理论研究,需要重视领军级人才,这个换算为货币就是10倍收入,才可激发基础、理论研究投入。 如早年在北邮曾经蹭课,听到老师讲到,在民国时候,一个黄包车一个月收入3~4快大洋,鲁迅一个月收入44块大洋,也就是说一个大学教授的收入应该是出租车(滴滴、Uber)司机收入的10倍,才可以全身心投入理论创造、学术研究; 而北京Uber司机收入1万,有几个教授收入能够超过10万呢?  如是而已,老师也得生活啊。

    即来自,则安之:学生们从五湖四海,聚集到北京这个人才核心,不管你当年是学霸还是全校top 3,这些已经随着高考、考研过去了,下面开始,是要低头读书、有机会多多参与实战项目~~考虑考虑2年后百万人才的就业压力(创业压力): 娃娃,要赢在起跑线上

    人与人之间,不能起疑心,一起疑心,处处都是毛病。

    郭德纲和曹云金:无论家务事如何,做徒弟的和老师比起来,总是要低调一些的。你入了这个门,就要处处以师为尊,师傅有师傅的规则和家法,而且世界上的事情也没有100%公平的。很多道理,等你当了老师、等你当了领导,就能够明白老师、领导的为难之处了—巧妇难为无米之炊是也。

    研究生生涯,非常短暂,2年后:创业、找工作,到那个时候令人兴起一种曲终人散的惆怅; 故珍惜现在,上课的同时,多多参与实战项目吧。 最后,我想对学生们说:“立志在我,成事在人。” 师傅领进门,修行在个人。

    Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》

         很高兴,能有机会回报Unity技术社区:我和雨松MOMO担任UUG北京站的负责人, 组织Unity技术交流和分享活动。

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb7

    本次北京UUG活动场地–微软大厦

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb8

    成功的UUG离不开默默无闻的付出:提前2小时到场的志愿者

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb9

    雨松走到那里, 都会有Unity3D 粉丝合影

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb28

    UUG活动正式开始,  雨松首先上台致辞

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb29

    什么是 Unity User Group?

    Unity在西安、南京、厦门等全国所有城市招募UUG领袖啦! 作为Unity User Group的组织者,我们希望你:

    • 热爱Unity, 热爱开发,愿意与更多Unity开发者分享这份热爱。
    • 有号召力,擅长组织线下活动,为本地的Unity开发者提供定期交流的平台。

    根据各地区UUG的活跃情况,Unity将为UUG组织者授予官方的UUG荣誉头衔,并根据UUG运营的实际情况为高质量的UUG活动提供相应的资源与宣传支持。

    如果你认为自己能胜任地区UUG领袖,请将简历以及相关的活动组织经验发送至:uugchina@unity3d.com

    王世元 分享的话题《TVR的游戏研发与设计之路》

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb31

    议题简介:使用Unity开发VR游戏的优势;从《再现甲午》、《星际穿越》、《Ace Banana》、《MIXIP》、《FlndingVR》的简介、游戏风格、游戏交互方式以及VR特性的利用进行经验分享。

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb32

    周日下午, 200人的场地坐的满满的

    王明杨 分享 话题《使用Unity开发一个虚拟影院》

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb33

    议题简介:通过一个移动VR影院的范例介绍Unity中将视频作为Texture的原理,在VR中开发沉浸式观影体验。

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb34

    制作VR虚拟影院的4个步骤

    潘博航 分享 《虚拟现实交互设计》

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb35

    议题简介:从交互设计角度探讨VR内容设计。将阐述Unity开发者目前阶段可能遇到的问题和限制,以实际的案例经验总结探索 VR 内容的交互形式和未来的可能性。

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb36

    大家耳熟能详的的VR消费级输入设备:HTC Vive、Oculus、PSVR

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb37

    《2016,VR元年》:你们是规则的制定者!

    北京UUG合影留言

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb27

    北京站大合照来一张。前排好多美女.

     

    北京UUG部分花絮

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb21

    开心的抽奖环节

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb23

    为你的热情点赞: 专程从天津赶到北京参加UUG活动开发者。

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb24

    Unity官方小礼品–人手一份

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb25

    坐在第一排的某童靴的笔记—好认真啊。

    image  Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》 image thumb38

    会后部分讲师和UUG组织者合影,从左到右:潘博航、宣雨松、王明杨、王文刚刘玥

    一个女学生,对Unity特别感兴趣,摘录自她分享的朋友圈:

    “我是个门外汉,Unity刚入门,听起来有点吃力,但是,我觉得今天UUG最大的亮点就是分享的内容比较多比较丰富,特别是最后那个哥们分享了很多听起来很牛的东西,虽然我啥都没听懂。

    但是感觉应该很实用。

    参加UUG,  没错,下次活动还要来。”

    备注:

    再次北漂66天: 记第一次BP (商业路演)

       

    周日得空,在附近的圆明园转转,一路上美景不错, 只是出门太早了,不到7点半就到公园了。

    image  再次北漂66天: 记第一次BP (商业路演) image thumbimage  再次北漂66天: 记第一次BP (商业路演) image thumb1

          这两张照片不错,我挺喜欢的,左侧是小桥流水,画一样的景观; 右侧是“正大光明”四个字–古人的文化很深厚,这四个字都很好,合一起天衣无缝,也符合我对团队组织制度的惯性思维。

     

    再次北漂66天

    一转眼来北京66天了,再次北漂,不知不觉已经过去2个月了,刚来北京的时候还是春寒料峭、现在马上行将进入北京盛夏节奏了,好快。对于团队,我采用的是目标驱动、里程碑节点,希望充分调动每个队员的内驱力,携手前行,当然内核是以诚相待。

    上次回西安探亲,有人问,你们加班多不?

    我想说,VR、AR创业团队,不加班是不可能的,但是也不是天天加班,我们采用的劳逸结合的办法加班,大约会加班30%负荷,同时周末加班可用于调休,项目告一段落希望大家可以多抽空陪陪家人,创业路上,不仅仅是辛苦,还需要健康和家庭快乐做后盾才行。

     

    第一次BP (商业路演)

          以前,在西安组织过OpenParty,最多时候有90多人。也讲过技术沙龙分享,故还有一些临场历练–能讲东西、有气场。 故虽然是第一次BP,但是却没有怎么紧张,下面不就坐了100个人嘛,别当她们是投资人和CEO们,就当是100个程序员不就行了–呵呵,我就是这么自我阿Q安慰的,故还是比较冷静的。

     

    http://www.longvrtech.com/

    北京龙威尔总部位于北京上地虚拟现实基地,硬件研发和生产团队位于上海和深圳,核心高管
    来自加拿大、美国海归及本土精英,与海外多家VR内容制作公司达成紧密合作。
    龙威尔科技,为好奇的年轻用户提供随时随地最新潮的沉浸式VR娱乐体验,让VR与
    你,触手可及。

    本次BP标题为“龙威尔科技–VR领域的YouTube + App Store”.

    image  再次北漂66天: 记第一次BP (商业路演) image thumb2

    这张图,具有里程碑纪念意义,第一次代表创业公司对外进行公开展示,故我收藏了它。 同时也修改了微信、QQ、微博等头像,以激励自己努力前进,珍惜当下。

    今天在路上,我在想,很多时候人生真的如乔布斯所说:

    “you can’t connect the dots looking forward;

       you can only connect them looking backwards”

     

    在过去三年,我曾经在西安业余以自愿者身份,组织和进行过多次技术对外分享,除了积累一些朋友资源外,也无形锻炼了出公共场合下的临场演讲能力,这个对做技术的人才来说,除了技术、管理积累,是很难能可贵–因为你可以和各个不同的人高效沟通,达成共识,推动工作有序进展的。没有想到,3年后,这些软实力“本领”慢慢发挥光和热。

    朝中有人好办事:多谢 @helen 的鼎力协助,给安排了时间窗口进行BP。

    image  再次北漂66天: 记第一次BP (商业路演) image thumb3

     

    备注:

    我在西安组织活动的2篇记录博客:

     

    我在西安的小儿子也已经60多天大了,时间,好快。

    Unity3D for VR 学习(11): 后期屏幕渲染特效(Image Effect)

    Unite ShangHai 2016 Keynote中,《Adam》的图形技术介绍,令人印象深刻:可以与电影效果相媲美、近乎次时代大作、好莱坞大片效果的3分钟实时渲染的短片,淋漓尽致的展现了Unity 5.4的奋发图强,和对VR开发者的潜台词–“相信Unity 5.4,VR没错的。”

    本文就Image Effect进行实践,所用版本是Unity 5.4.0b14 beta版本。

    image  Unity3D for VR 学习(11): 后期屏幕渲染特效(Image Effect) image thumb11

     

    下载Image Effect插件

    Unity内置的特效,已经于2015.12.10免费开源了:CINEMATIC IMAGE EFFECTS (PRE-RELEASE)

     

    • 下载方式2:bitbucket 开源社区   cinematic-image-effects          为了持续增强Image Effect的功能和提高性能,官方还设立一个论坛版块:

              Forums>Unity Community Support>Graphics>Image Effects

     

    部分渲染特效实践

    使用渲染特效,非常简单,直接在Camera添加组件即可—下载完Image Effect插件后,导入Unity即可使用。

    image  Unity3D for VR 学习(11): 后期屏幕渲染特效(Image Effect) image thumb12

     

    Screen Space Reflection屏幕空间光线追踪反射(SSRR)倒影效果image  Unity3D for VR 学习(11): 后期屏幕渲染特效(Image Effect) image thumb13
    Screen Space Ambient Occlusion (SSAO)  屏幕空间环境遮挡特效 —模拟全景漫反射

    image  Unity3D for VR 学习(11): 后期屏幕渲染特效(Image Effect) image thumb14

     

    反|抗锯齿(Anti Aliasing | SMAA).

    image  Unity3D for VR 学习(11): 后期屏幕渲染特效(Image Effect) image thumb15

     

    Bloom 泛光 场景变得梦幻

    image  Unity3D for VR 学习(11): 后期屏幕渲染特效(Image Effect) image thumb16

    色调映射 ToneMapping【HDR模式有用】–  [和Bloom混合使用]

    clip_image001  Unity3D for VR 学习(11): 后期屏幕渲染特效(Image Effect) clip image001 thumb

    深入学习文档

    Unity自带的英文文档,非常好,下载Unity的时候直接安装一下,遇到问题,点击问号,即可打开本地的英文文档,便于深入快速学习。

    image  Unity3D for VR 学习(11): 后期屏幕渲染特效(Image Effect) image thumb17

     

    然后,输入Image Effect关键字搜索,即可打开Unity内置提供的特效帮助–有图、有文字说明,学习还是挺方便的。

    image  Unity3D for VR 学习(11): 后期屏幕渲染特效(Image Effect) image thumb18

     

    后期屏幕渲染原理

    屏幕后期渲染,使用的是Graphics的Blit方法,他和相机的Render方法不同之处在于Blit在屏幕上做了一个和屏幕大小一样的平面,用第三个参数(材质—Shader)进行从当前面到新面的替代。 即Blit是在渲染一个平面,而Render在渲染一个物体。

    Graphics.Blit函数

    public static void Blit(Texture source, RenderTexture dest, Material mat);

     

    MonoBehaviour.OnRenderImage函数

    void OnRenderImage(RenderTexture sourceTexture, RenderTexture destTexture)

     

    Shader文件:写一个顶点片段shader

    #pragma vertex vert_img
    #pragma fragment frag

     

    备注:

    • 参考文档 《Unity 5.X 从入门到精通》
    • 参考文档 《Unity Shaders and Effects Cookbook》
    • demo Git地址:Shader_ImageEffects

    Unite ShangHai 2016 (Unity3D开发者大会)

         拜Unite ShangHai 2016 大会所赐,又一次来上海–上次来上海是2007年做TD-SCDMA扫频仪数据接入工作的; 一晃,9年过去了,上海变化挺大的。

     

    上海.印象

    10号起来,在附近溜达溜达,静安公园、蔡元培雕像

    image  Unite ShangHai 2016 (Unity3D开发者大会) image thumbimage  Unite ShangHai 2016 (Unity3D开发者大会) image3 thumb

    路过了约3公里上海街区,周日上午都8点半了,马路上人很少且干净,还是上海人小资啊。

     

    晚上和杭州赶来的某著名物联网公司CTO胡键,一起共进晚餐,顺道吹吹牛。

    我们两人4年前是在西安OpenParty认识的,后来一起组织西安的IT活动,如《“西安IT人的社交圈”11月的活动总结》。   近半年,无独有偶,在“万众创业、大众创新”的时代,他从西安出走,带队来杭州专注物联网行业创业; 我则选择离开西安,在北京专注VR。

     

    上海人过马路很讲规矩:通过红外线检测,然后声音警告行人站在台阶上

    image  Unite ShangHai 2016 (Unity3D开发者大会) image thumb1

    这一点,值得赞,可以极大加速路口车辆通过; 还可以保障安全

     

    上海豫园–城隍庙街区

    image  Unite ShangHai 2016 (Unity3D开发者大会) image thumb2image  Unite ShangHai 2016 (Unity3D开发者大会) image thumb3

    其中:左侧图片的西洋镜(拉洋片),这个小玩意算是中国最早的VR虚拟眼镜了吧。

     

    Unite 大会(KeyNote)

    上海是周一KeyNote大会,明显人数较去年北京活动少了很多,还是Unite换了新的CEO,控制成本吧。

    参展商也少很多,估计是北京的1/5参展商规模, 且会场外空间相对比较小,不利于排长队进行体验.

    image  Unite ShangHai 2016 (Unity3D开发者大会) image thumb4

     

    Unity 5.4 VR性能优化增强30%

    image  Unite ShangHai 2016 (Unity3D开发者大会) image thumb5image  Unite ShangHai 2016 (Unity3D开发者大会) image thumb6

     

    Cinematic Image Effects 电影CG渲染效果—Realtime

    image  Unite ShangHai 2016 (Unity3D开发者大会) image thumb7

    image  Unite ShangHai 2016 (Unity3D开发者大会) image thumb8

    这个案例的亮点是连保守的日本marza工作室都用起来Unity做CG动画电影,间接反映出Unity在图像处理上面往AAA级画质发展的雄心和实力。

     

    Unity大中华区核心工作:服务支撑

    image  Unite ShangHai 2016 (Unity3D开发者大会) image thumb9

    就我个人经验而谈,网速才是服务背后的支撑。如Asset Store下载插件,很慢。

    另外,听说官方也在搞Unity中文版。这个需求,我个人倒不是特别想要–少bug、性能提升更关键。

     

    Unity Labs:Unity法国的精英团队。

    image  Unite ShangHai 2016 (Unity3D开发者大会) image thumb10

    最近在聚焦VR中设计VR场景(VREditor):人带上VR头盔,用Touch手柄进行VR场景编辑。

     

    VR(虚拟现实)火热依旧–2016

    4.10号  VR有一天时间培训课,400+人参加

    4.12号 全天有VR重点技术课程,2000+人参加

    而整个Unite 大会才3天,从时间上看,2/3在谈论关于VR的技术和案例,从北京到上海,都是一个字:火。

    去年大会的主发言人–Unity 大中华区boss 符国新(Allan),去年开完Unite北京大会,就立马离职创业了,选择就是VR方向,呵呵。

     

    2015年参加Unite 北京大会,启蒙了我的VR认知

     

    image  Unite ShangHai 2016 (Unity3D开发者大会) image18 thumb

    2015.4 我首次听到关于VR、AR的演讲—原Unity亚太技术总监郭振平先生激情演讲

     

    image  Unite ShangHai 2016 (Unity3D开发者大会) image11 thumb

    2015.4 雨松MOMO粉丝们合影; 雨松左侧妹子是其女徒弟—小七不乖(现任Unity官方社区运营官)。

     

    image  Unite ShangHai 2016 (Unity3D开发者大会) image15 thumb

    2015.4 非常高兴的和Unity创始人David Helgason 合影留念

     

    小结:

    1. Unity开发者大会,对推动Unity技术在中国蓬勃发展功不可没,2012年Unite入华,目前已经5年了。
    2. VR技术的普及,因为Unity引擎在手游行业培养海量人才,故才得以爆发。
    3. 目前国内,VR、AR技术工作,80%的人选择的是Unity的引擎,人才基数多、迭代快。
    4. Unity 5.4 看起来不错,在画质渲染上,VR效率上,比较期待正式版发布。
    5. 相对上海精细小资,我更喜欢北京的大气浑厚:VR创业公司,北京占全国60%
    6. 拿着Android手机,出门佩戴充电宝是必须的,要不然高能量的PPT不拍照记不住。
    7. 参加开发者大会,不仅仅是听讲座,和网友见面也是必须的
    8. Unity官方今年在中国会大力推线下社区,加大走群众路线

    参考:

    去年大会博客链接: 《Unite Beijing 2015大型活动

    小议风风火火的移动科技互联网创业大潮 (含VR)

    最近遇到一些事情,和2015年初非常类似,追忆加自我总结吧。

     

    移动互联网创业大潮,过去5年是O2O(含手游),未来5年是R+(VR、AR),这个是大趋势,不过能坚持到成功的企业十之一二也。你奋斗了,不学习和交点学费,不一定能成功,这个是道。

    招3个人,没有事情干,每月都是大把大把银子支出,太贵、太浪费;

    要不先招1个,先干着,等用的时候再招。

    这句话,是任何转型做移动互联网科技创业公司老板会说的一句话。

    因为之所以存在有人没有事情干,是因为提纲挈领的关键人才没有到位:

    • 懂技术
    • 懂业务
    • 懂沟通
    • 懂管理
    • 被信任
      其中最关键的是沟通、和信任;前者需要对上、对下交流,随机应变和视大局。 而信任,是短期内很难具备的事情,要经过1、2个产品的磨合和拓练—遇到困难和问题如何处理、遇到分歧如何处理。

    科技研发有其特殊性,我自2005年从业到今,100%时间在IT行业,见得多了自然就懂了。

    对人才招聘、训练的前瞻性,有比较深的了解。临时抱佛脚的方式,不适合IT科技研发团队工作方式。

    如果是楼下的水泥工,150元*天,随用随到,干完活有可验证。

    但如果是涉及技术和研发,需要提前3个月布局,关键岗位要提前6个月布局。 假如对于研发团队,从网上招几个人,临时组个团队,2个月出产品,且能够大范围配合市场商用,这个经历我没有过,且这种仗我是不敢打的:对老板负责、对团队负责、对个人负责。

     

    2个历史小故事:

    左宗棠西征–三年不参左

        胡雪岩,我高中时候的偶像级人物。他和左宗棠相得益彰,使得财力加军事为国争光,这个故事在晚清腐败政治下是为数不多的让我对慈禧这个政治家叫好的历史故事。

     

    网络摘录:

    海防与塞防之争–《复陈海防塞防及关外剿抚粮运情形折》

    “别的不说,光是朝廷那帮大臣,每当左宗棠遇到实际困难,进军稍慢,就会出现各种非议,“按兵不动”“拥兵自重”的帽子纷纷飞来。

    慈禧太后为了免他的后顾之忧,和朝中大臣们说三年之内不准参左宗棠的奏折说他的坏话。

    一个平凡的人,坚持自己的梦想,最终成就国家的大业,这份忠诚与执着,在历史的关键处焕发出了最夺目的光芒。

     

    现实的例子:“民不患寡、而患不均”

    上周在北京,参加高中老同学孩子的周岁生日,遇到另外一个同学的同学。她做医疗的,在某大公司待了7~8年,对目前老板投资的O2O移动互联网的医疗子公司,颇有微词:”把我们多年积累的财富, 烧了1年了,还在烧—投入大、盈利少。”

    我在想,这种话,是否老板能听进去,当一个人想做一些事情,一般喜欢听自己喜欢听的话;更何况是乾坤独断的老板! 一般而言,非移动互联网行业的老板已奋斗了N年了,早已经听惯了顺耳话。 自己认为移动互联网方向对,就一个猛子直接杀过去,用已有公司的钱来补贴新的创业公司;而已有公司的员工待遇和新公司待遇之间的不平衡,会导致一些非议和反作用力–存在一些风险。

     

    王翦灭楚

     

    公元前224年(秦始皇二十三年),秦王政召集群臣,商议灭楚大计,王翦认为“非六十万人不可”,李信则认为“不过二十万人”便可打败楚国,秦王政大喜,认为王翦老不堪用,便派李信和蒙恬率兵二十万,南下伐楚。王翦因此称病辞朝,回归故里。

    后20万大军全军覆没。

    秦王不得不道歉重新启用王翦,果60万大军灭楚国

     

    例如,在组建团队中,关键技术岗位不能仅1个人担任,这个对团队而言非常危险,3个月后他走了,团队怎么办?养兵千日用兵一时:团队是需要磨合的,1~2个月磨合期还是要有的,能够及时找到靠谱的团队成员,这个有季节性。 我过去有组建4次技术团队的经验,就北京“金三银四”,过了4月中旬,招聘寥寥无几,且总不能一个Leader经常去刷新招聘、面试吧,这个也是很分心思的地方。

     

      科技公司的前期,CEO的80%精力在招人,搭班子、对人才“选、用、育、留”。 运营、市场、盈利模式、资本对接,这些都很重要但是不紧急;既然是科技公司,看准方向,先搞出1~2个产品,再说不迟。

     

    2016年,VR属于移动互联网大潮中一个翘楚,对于要做技术的公司–VR内容、VR硬件、VR平台,要做好不挣1分期而要烧钱6个月的基本心理准备。

    之所以叫科技性创业公司,我认为3点是立国之本:

    • 制度:规则、组织结构、考核隶属关系、岗位定义、新员工培训。
    • 研发:研发占据了公司初创80%成本,不是重要,是太重要。
    • 市场:情报、市场调研、采购、售卖、推动公司前进和对外的眼睛、耳朵。

    备注:

    1. 我粗略估算,以20人北京创业科技公司烧钱预算 (理想情况):
      • 办公场地和硬件:  3万*12月 + 20人 * 2万  + 3000元 * 20人 * 12月 = 148万
      • 10人研发团队: 2.5万*10人*14月= 350万
      • 10人市场后勤: 1.5万*10人*16月= 240万

         总共约需要 738万。 (去年底和一个朋友聊,说北京年约需要600~900万,数字基本吻合)

    2. image  小议风风火火的移动科技互联网创业大潮 (含VR) image thumb3

    3. 这里的薪资,请勿对号入座:人均1.5万、人均2.5万,不是发到员工手里的,是考虑了公司整体公摊后的成本,参考2009年北京IT外包市场数据。
    4. 对于沟通,抱怨是最好的情报,没有之一。

    Unity3D for VR 学习(10): Unity LOD Group 组件

    LOD (Level of Detail), 远小近大思想。

    LOD,在Unity中是用到了空间换时间的优化方法:即程序加载2套模型,导致包会增大;在运行时刻,远处的用面数少的模型–模糊一些,近处用面数多的模型–清晰一些。 类似的原理,还有纹理的MipMap设置。

     

    Step1: 美术制作2份模型

    针对需求策划,美术需要对同内容的2份,一个命名为***_LOD0 面数多的高模; 另外一个命名为***_LOD1面数少的低模。 高清晰度网格(L0D:0,当摄像机最接近时),和一个低分辨率网格(L0D:1,当摄像机较远)

    保持这2个模型,远远望去,差异不太大即可,后面会用到平滑切换。

    Unity5 允许多个LOD,如可加载3套模型:高模、中模、低模,原理雷同,这里主要说2个模型的情况。

     

    Step 2: 程序添加LOD Group组件

    image  Unity3D for VR 学习(10): Unity LOD Group 组件 image thumb1

    找一个空GameObject,添加LOD Group;

    然后点中LOD0,选择Add 高模***LOD0;

    然后点中LOD1,选择Add 低模***LOD1;

     

    Step3:设置LOD Bias

     

    依据Unity输出质量要求,设置LOD Bias,如图设置为1,是因为QualitySettings设置为Good。

    image  Unity3D for VR 学习(10): Unity LOD Group 组件 image thumb2

     

    然后就是在Editor中,通过拖放LOD Group的摄像机来调试,先看看视觉上是否合理;可修改LOD0、LOD1方框的范围。

    最后,通过写代码控制Camera,模拟真实环境,让策划和美术一起评审,确定

    1. LOD0、LOD1模型是否合理
    2. LOD0、LOD1模型过渡是否自然,不要太突兀就行

     

    参考文档:

     

    VR博客目录:

    1. Unity3D for VR 学习(1): 又一个新玩具 暴风魔镜 4(Android)

    2. Unity3D for VR 学习(2): 暴风魔镜框架探索

    3. Unity3D for VR 学习(3): 暴风魔镜PC Input小改造–自己动手、丰衣足食

    4. Unity3D for VR 学习(4): 自绘摄像机的视口区域锥体

    5. Unity3D for VR 学习(5): VR Gaze Input

    6. Unity3D for VR 学习(6): 再次温故知新-3D数学

    7. Unity3D for VR 学习(7): 360°全景照片

    8. Unity3D for VR 学习(8): Unity Shader概述

    9. Unity3D for VR 学习(9): Unity Shader 光照模型 (illumination model)

    10.   Unity3D for VR 学习(10):  Unity Lod Group 组件