Haotian Zheng

2016.3.1

 • 

二月底开学 回到了长沙 热得冒汗 感觉都要到了夏天
EPOCH 放在电脑里面总觉得不放心 而且现在两台电脑也不好协作 于是想着用 git 传到服务器上去 但是文件数目太多 即使是用 git shell 也会在 commmit 的时候卡死 于是作罢 改为买 Dropbox 空间 扔到上面自动同步 好处是全自动 坏处是没办法做特定文件的同步规则 以及潜在的被墙风险
生日也过去了 19岁 早晨醒来看到 Twitter 客户端上飘着满屏幕的生日气球 觉得挺好玩 于是多按了几次
Fin GameWorks 算是有了一个小小的网站 http://fingameworks.github.io/ 花了一晚上乱改模板 CSS 做出来的 惨不忍睹 看来有必要学习下前端
最近在看 Vimeo 上面的一些 VFX 视频 比如特效的 breakdown 或者 工作室的 ShowReel 当然也有一些惊人的 SpeedArt 看的人心痒痒 于是跑去申请 Octane Render 的学生证书 但是 OTOY 并不支持国内教育邮箱 对方也一直没有回复

Epoch Dev Blog 3

 • 

最近在做星球的部分东西
昨天和陈叔说 我终于知道我在做什么了
Epoch将会做成一个手机版的 No Man‘s sky,但是并不具备无限的地图过程生成,也没有动物等等,除此以外,Epoch目前在做的功能和No Man‘s sky几乎一样:无缝登陆,过程生成的地表,太空战斗。
无缝登陆这块目前是没有问题,但是在Visual上表现力太差,因为登陆过程要经过一个大气层,这个大气层略高,不好处理地面的物体。No Man Sky的处理方式是加上了一个缓冲用的云层,等云散去,离地表只有一千个单位左右,做大面积的植被也不会有很多性能上的问题。但是我目前没有做这个云层,所以地面树木的生成会被很明显地看到,这个和LOD没有什么关系,就是单纯的突然冒了出来这种效果,因此估计后面我也会做这么一个trick,用云层来阻隔玩家视线,同时生成树木。
地表植被目前只做了树木和草,种类也只有四五种,我也在收集各种SpeedTree,留着后面使用。目前植被生成不是太好,代码也写的很烂,有很多可以优化的地方,主要问题有这几个:
1.草一般是做成billboard,这种模式在第一人称在地面的时候非常有用,可以用很少的物体大面积填充视线。但是这不适用于飞行游戏,飞机是要从天上飞下来的,这个时候billboard的效果就不是很好,因为billboard会让贴图一直面向摄像机所以看上去草角度有问题。解决这个问题我估计只能从改进地面Shader入手,地面贴图先用草,用2K分辨率都不过分,只要能把地面的草给模拟了就好,等到降落后,地面贴图再改成纯泥土,配合很多billboard的草,看起来应该会好些。
2.草不知为什么,并没有被Dynamic Batch掉,结果就是很多draw call,在iPad上运行的效果不是很好。但是我没法做Static Batching,因为我的草并不是真正的静态物体,一旦摄像机掠过草,草就会被移动到前方更远的地方(我还没做pool),保证摄像机看到的是很多草,这样Unity没有办法合并草的mesh,因为都是动态的。
(#Edit : 找到没有 Dynamic Batch 的原因了:我在飞船上加了一个 WindZone 模拟声速飞过的效果,导致 Speed Tree 不能 Batch(对,我的草都是SpeedTree...),关掉风就能看到几乎所有batch都被save了...我一直以为风没有关系)

3.目前树木的生成还不是依据星球的height map,因此是随机分布的,这个其实不难,但我还没写到。
4.海洋的模拟。一般海洋放一个Plane就可以了,但这是星球,是有弧度的,一般的海洋Shader搭配Sphere都会有些问题,我估计解决方式就是,把Sphere拆成一个1/4的弧面,甚至更少,在登陆过程中不断更改mesh,1/4弧面的时候Shader只有反射,保证不是很卡,然后着陆到地平线后再用很小的弧面配合带折射的Shader来做到海洋的效果。
5.天气。这个再说吧,也不是很难做的样子,和树差不多,反正是手机游戏,要求不是很高,没法做很真实,突出风格化就好。

Epoch Dev Blog 02

 • 

回家后战斗力暴跌,基本上是什么也没干。
脑子里有许许多多的计划和项目,但都只存在于我想象中。而每天最多的事情就是发呆,想着这些未竟的计划,真要开始做起来应该用什么方式。
Stillness 的 SpriteKit 重写计划往后推了一段时间 因为我发现 SpriteKit 的光影效果实在是太弱了(当然也有可能是我没有仔细研究 API) 灯光的 FallOff 聊胜于无 而 Stillness 最大的卖点就在于光影,去除光影就没什么了。但我一直在想因为用 SpriteKit 写的话 就可以提交给 WWDC 的奖学金项目,这么一说还是有动力的,只不过我需要花点时间研究下了。
Epoch 倒是开始写起来了,而且进展不错,不过项目一旦发展起来就发现,原来我以前对 Unity 不吃机器的印象也是错的,Unity 是不怎么占用系统资源,但那是相对于虚幻引擎而言。现在每次打开 Unity Editor 都要卡上十秒钟,每次修改完 Script 后预编译也是。
Epoch
而且我遇到了很多奇奇怪怪的问题,比如更新到 5.3.1 后 一个 Shader 彻底不工作,渲染的 Mesh 变粉红色了,我又不会改 Shader 这种东西,只能先替换着。还有各种 Unity 自己的 Bug,以及今天刚遇到的内存泄漏问题(现在 loadLevel 突然就爆内存),然后每次 import assets 漫长的等待(以及假死)让我明白还是不能用 Macbook 做 3D 游戏,等下学期开学还是要买工作站。

先更新到这
放点图






Epoch Dev Blog (1)

 • 

好长时间没有关于 Epoch 的消息了
放寒假后 因为工作站迟迟没有到位 而我的 Mac 性能又不足以坚持去做虚幻引擎 以及一些其他的原因 我就转换回 Unity 工作了 反正整个游戏一直处于原型的状态 两个引擎的原型版本都做过 也没有什么前功尽弃一说
Freelancer 和 Galaxy on Fire 2 这两款游戏都比较好 我在参考他们的游戏模式 顺带一说 GOF2 HD 这款当初给 iPhone 5 的游戏 现在用 iPad 玩 很明显能看出 Skybox 的分辨率不够 而且 后面的星球是一个平面的贴图 甚至都不是一个 Sphere
这两天的工作结果:




修复坚果2.5系统刷第三方Rec变砖

 •  Filed under Smartisan, 坚果

情况如下:
系统挂了 进入不了Recovery
开机黑屏自动进fastboot 自然adb也挂了
不过fastboot devices有显示设备
fastboot flash recovery的时候 出现如下错误:

target reported max download size of 268435456 bytes
sending 'recovery' (16384 KB)...
OKAY [  0.517s]
writing 'recovery'...
FAILED (remote: unknown reason)
finished. total time: 0.522s

解决:

使用fastboot boot 加载一个系统的Recovery 然后进入系统Rec后就简单多了 开启sideload 后刷进去老版本的坚果Smartisan OS

2016.1.11

 • 

现在在北京T2的肯德基里面 吃着第二份餐

swift大会。
见到了KevinZhow,人挺逗,黑人技术和Martin一个级别的,hhhh,其实要不是上学我挺想去他们那写unity。
见到了MartinRGB,把我黑得太惨了。如果暑假Martin还在RavenTech我就去那里实习。
见到了Cee,和菊苣一个房间~。
见到了烧碱,今年估计还有很多机会去杭州hhhh。
此外,见到了梁杰和SwiftGG的很多人,比如爱画画的MMoary,也算是正式加入了很污的翻译组,哈哈哈。
唐巧大大采访了陈叔和Martin(这个过程Martin还不忘黑我,hhh)。
我没买到喵神新书 不过和喵神拍了合照,挺激动的。喵神这次的ppt很有趣 :-) 此外喵神还对stillness提了些建议,感觉可以寒假做个新版本了。
陈叔是作为大会工作人员一直在忙(当然一直和martin互黑),然后今天结束后很早就睡了。

后面的事情。
再过四个小时飞回长沙。
再过一天去补考大物。
再过几天回到北京参加Uber的hackathon。
然后应该是回家。不过也有可能去厦门,某些外包方面的事宜。
还有很多计划中的,个人或团队的Project。
有趣的生活。

坚果手机使用记

 • 

型号: 坚果手机 (标准版)32G 红色背壳
订购时间: 2015年最后一天
价格: ¥799

使用了一个星期 简单谈下坚果手机的优缺点
为了避免不必要的麻烦 我说下 我这个体验更多地是以一个 喜欢折腾的 视角来写的 因此并不一定适合所有人


TL;DR. :

如果你和我一样 身份是开发者 是想看下锤子的 额 怎么说 设计风格吧 那么请买台 Nexus 后自己安装锤子桌面 看腻了就可以随时卸载 干净利索

如果你是设计师 没有像我一样奇奇怪怪的手机用法 只是想体验下 Smartisan 我觉得很适合

如果你是打算买一台给父母/老年人 那么你可以在红米和坚果之间选一个 坚果给老年人用的好处很明显 界面拟物风格 学习成本很低 而且如果你还凑巧有另一台锤子 可以用远程遥控


Pros:

  • : 锤子桌面 算是坚果手机最具有溢价的内容了 使用体验不错 主要体现在桌面的交互和重新绘制的图标上
  • : 背壳设计 漂亮的设计 而且并没有不耐脏一说 虽然我用的时间很短 但是我用电子产品以不爱惜著称 以我的使用风格来看 并不会变脏或者纳垢 因为本身纹路就非常浅
  • : 相机 满足需求 甚至锐度有些出乎我的意料 当然我估计是因为我用惯我那个相机进水后自带柔光滤镜的 iPhone 了 所以看其他手机相机都很清晰 因此这点不是很确定

Cons:

  • : 系统稳定性 拿到手后升级 Smartisan 2.5版本(基于 Android 5.1) 结果手机无限重启 这对于我来说不算什么太大的事情 因为我能进recovery刷回 Smartisan 2.1版本 不过对于很多不是熟悉安卓操作的人来说 如果手机出现这类情况就只能送修 刚到手就出毛病这种事情实际上是很打击信心的 我当时也很烦躁 甚至想退掉这款手机
  • : 割裂感 界面的确是漂亮 不过很多时候安卓定制 UI 都会遇到一个情况 你做再多的风格化定制 也是不可能变成 iOS 的 特别是像锤子这种设计风格和谷歌官方完全割裂的东西 就算你重绘了几万个 icon 也只是沧海一粟 而且系统软件和很多 MD 风格的第三方软件虽然图标统一了 进入界面后还是完全不一样的交互逻辑 特别是锤子学 MIUI 改了系统控件的风格 比如 toast 变成了淡黄色背景 在 MD 软件上显示 toast 时这种割裂就更加明显

其他&后续
前面说给父母用不错 为什么不直接推荐父母用 iPhone ?
我推荐过 特别是现在安卓的确不如 iOS 安全 不过我的父母并没有接受
我爸从功能机用到 Windows Mobile 再用到 Android 可以算是父母这辈人里面的 Power User 了
但问题就出现在这个 Power User 的定位上 很多时候 iOS 的使用是傻瓜化的 这反倒让我爸的思维定势没法习惯 比如:我爸习惯于自己动手转码电影 自己刻盘 这些操作都是一个内容产生者的身份 而不是消费者的身份 而内容产生者是强调掌控的 因此我爸在手机上也是习惯于获得对手机的掌控
比如通过 360 的内存加速球来获得掌控感(虽然那个加速球并没有什么用)
我妈接触过 iPad 后其实能看得出挺喜欢 iOS 的操作 不过扁平化的风格让她第一开始也有很多困惑 比如什么可以按 什么没法按 不过在接受程度上比我爸好很多
那么对于我来说 坚果手机就是一个不错的选择:本身是安卓 我爸可以按照自己的喜好装音乐和电影 然后开开加速球 而且风格是拟物 我妈很适合用 她用MIUI的老版本就很顺手 相信Smartisan这个交互反馈更突出的系统也很顺手

我用坚果做什么?(我对坚果的需求定位?)
我 iPhone 的流量不够 买个双卡手机 拿来插卡当随身Wi-Fi
装些奇奇怪怪的 iPhone 上没有的软件
用这个手机听音乐 因为我的 iPhone 实在是没有空间可用了
在我换 iPhone 之前 做一个备用机 当作衔接和过渡

这个手机接下来要怎么用?
我也不太清楚 先用到我寒假回家 然后看父母有没有兴趣接手 不过如果界面对他们不是很吸引的话 他们估计宁愿继续用 Galaxy Note 毕竟手机性能不是一个等级的
我尝试过把坚果当 Nexus 用 不过并不行 光是 root 就有些费劲 首先要刷第三方recovery 然后刷superSU 然后你才能考虑去安装Xposed
不过系统定制(限制)的东西太多 我现在想用Google即时桌面都没有办法 因为按home键并没有出现选择默认Launcher的窗口 只能认为锤子做了一些限制 虽然肯定可以突破 但是太费劲了 我懒得搞
(我是喜欢折腾 不过我对折腾的定义是 按照喜好发挥手机的最大效用 而如果系统做了如此之多限制 那么其实并没有折腾的必要了 因为有这个时间 完全可以买台 Nexus 了 上手即rooted 然后后面的事情才叫折腾)
照这么看 我估计还是需要一台 Nexus

一个奇怪的氛围
另外 记一个很奇怪的事情
锤子论坛里面对root的反应很奇怪
凡是类似的帖子下 都会有人说 没必要root 这个手机不需要root 你root就没保修了 甚至有人说 你不要为了root而root
这和 XDA-developer里面的氛围很不一样 甚至和一般品牌手机论坛都不一样 我只能认为 这里的人不爱折腾
我是不是可以进一步认为 坚果手机原来就是给老年人用的 而不是像宣传里面是给年轻人用的
我用手机是我的自由 你提醒我root后不保修一次就行 我自己知道我在做什么
我需要用Xposed Greenify 甚至偶尔玩下zANTI 这些东西都是要root才能发挥作用的东西 即使这是个老人机 我花了钱买的 我想把它改装成超级计算机都不需要人来管我

如果要写小说的话

 • 

有朋友和我说,她一直想写以自己为蓝本的小说,但是总是半途而废。
实际上,我以前也有过类似的念头。所以我很能明白为什么半途而废。
小说毕竟是一种作者手动梳理出的现实,其内容是经过筛选的。而少有作者能把平淡的生活描绘的有趣,大部分作者在筛选的过程中都只能尽力把激动人心的事情聚合在一起,因此看上去足够吸引人,但永远不会发生在自己身上。
因此,有的人会为自己的生活不够精彩而苦恼,认为没有什么可以写的。
不过如果作者越是在意这点,那么作品就越是会不可避免地堕落下去。如果要以自己为蓝本写东西,就要克服很多夹杂着自我感动的情感,而如果很在意自己有什么可以写的,在思索中就很有可能凭空自我感动起来,但这种感动是不能传递给读者的 —— 自我感动是情绪堆积起来的,因此是短暂的,也是个人化的。
因为自我感动很短暂,所以很多人隔一段时间看以前自己写的东西,都会觉得很矫情,包括我在内。又因为自我感动是个人化的,所以作者很难分辨出什么才是构建出这种感动的要素 —— 如果不能把真正构建情感的事物一一写下,或是写了一堆无关的事物,读者就不可能通过文字构建出相似的情感,这种语境上的相似既然不能构成,便也无从让读者真正地理解自己的感动,换句话说,会让读者觉得矫情。
那么如何解决这种事情呢,一个是就当做在平平淡淡地写日记,不用极力搜寻情感式的东西。事情有不有趣其实还是看个人如何看待。
另一个就是什么也不写,本来也就没什么好写的,如果你也这么觉得的话。当然我没有这么和我的朋友说,但我目前是觉得我没有把普通事物描绘得有趣的能力。
那我为什么还在我的博客上不停地写东西呢,正是为了不让自己愈发地无趣,毕竟谁也不希望自己沦落到给键盘都没话说的地步,多锻炼还是好的。

(我发现我今天少有地用了标点符号。)

Substance

 • 

今年最后一个周末是在西湖边上度过的 和陈叔一起 在美院参加hackathon
简介下结果 遇见了来自四川的做电子音乐的一位老师和他的学生 以及美院的一位读博的学姐 然后一起做了一个很有趣的项目 大致可以见 iOS 部分 Github 地址
写了一个风格很漂亮的iOS端应用 见识了电子音乐专业的软件和技术 认识了一些有趣的人 而且拿到了二等奖(需要提及的是 这次比赛没有一等奖)
附带一说 对美院整体印象很不错 有时候在想如果当时没有停下来素描 走艺术生那一条路 是不是有可能变化很大


这一年下来 我发现我其实是一个很不安分的人 相对于呆在学校上课 我更喜欢做有趣的事情 然后就会有很多冲突
父母之前一直希望我能在学校好好读书 但令他们沮丧的是 我在大学就没怎么认真读过书 大一参加了学长的创业公司 大二频繁出去参加hackathon 学校的事情我能逃就逃 然后我就挂了几门科 我其实也觉得挂科无所谓了 既然我有真正喜欢的事情去做 学校的事情算什么呢
然后 让我觉得比较宽慰的是 我的父母也很开明地适应了我的变化 只要求我能拿到中南的毕业证就行
父母总是说用人单位还是要看毕业证的 这话其实在他们的语境下是成立的:中小城市的企事业单位肯定是要大学毕业证的 不过我并不打算去这类地方发展 真正适合我的地方也许并不需要毕业证 而是拿出 github 和 dribbble 页面就能进公司
其实这还涉及到一个问题 就是你是否能够牛逼到让公司直接要你的地步 而现实中的一个共识是 大多数人都肯定是平庸的 在不能确定自己是不是那种天才的时候 我想大部分人肯定选择最稳妥的方案
但是很有可能事实是这样的 天才并不一定天资聪颖 而是天才选择了不保守的道路 所以才成为了他人口中的天才 毕竟 承认自己天资不够 总比承认自己不够勇敢更加容易些
话归如此 这个世界还是成王败寇的 选择不保守道路然后挂掉的人其实也大有人在 至于能不能成功 完全靠自己


然后就是 大二暑假的实习 如果没有大变化的话 就已经确定了
其实我内心还盘算着能不能整个大三都呆在北京 需要考试再回学校 对于我来说 我已经知道自己目前喜欢做什么 擅长做什么 而学校对于我来说并没有太多用处 —— 我的技能不是上课习得的 我的兴趣爱好也不是学校引导建立的
参加hackathon 在公司工作 做些三维和游戏 或者写开源的东西 都是远比学校有趣的事情
学校是一个短时间内看不到成果的地方 只有理论 —— 而我恰好是那种信奉 quick hack 的人 什么事情都是不看理论先实践一番 有需要的知识再查找 我并没有觉得我这种方式有什么错
很多人说你现在学的知识都是给后面做储备 但是我不明白这是什么逻辑 —— 这是说毕业就不能学了么 自学的能力在哪里?现在学的知识要留到以后用 那么为什么必须现在去学习?
更为重要的是 学校本身是一个眼界有限的地方 —— 这并不是说学校的资源有限 而是说 真正能接触到学校资源的人总是少数 学校里各类名额总是仅有的那么几个 导致很多时候学校里大部分人并不能得到足够的机会去一览更高的境界 因此总体上 学校学生的眼界是极其落后而有限的 呆在这种环境 不如出去多见识


说实话 三个月前我是不敢想象我现在能够认识这么多大神 当时还是一个小透明一样的
然后参加hackathon 写开源 竟然加上了很多以前默默关注的人 有时候觉得很多变化不过一两个月
所以说 事情顺其自然 反倒会有所进展


我和陈叔(加了高斯模糊) 哈哈哈

从Sketch到AE/Prototype

 • 

前言

我不清楚其他人是怎么做的 因为我是个野生的做UI的 算不上设计师 不知道真正设计师圈子里面怎么做这个事情... 我就记录下我是怎么做的

设计一个图-导出到AE或原型工具-调整-出GIF

这个是我做原型的Workflow 当然如果要开始写代码的话是另外一套 在导出这个环节有些差异 也有相似

设计一个图-导出到xasset-代码实现-录屏出GIF

好了 代码实现就先不谈 先说AE和原型工具 而原型工具里面 我比较喜欢Principle
主要是 我对于原型工具的要求:
1. 不能只做到简单的Button/Push/Pop(说的就是你,Axure)
2. 而是要能够实现基本的一些效果 比如有Drag/Scroll/Page/补间动画
3. 但是呢 我又不想写代码来做这些事情 写代码很烦呐 而且我要说写代码 不如直接上ObjC咯 为什么还要学js(说的就是你,Framer.js)
那么分类如下:

比Storyboard都弱的腊鸡: Pop/Axure/Flinto  
不写代码还能做些好玩的: Principle/QC/Keynote
要写我不会的Scripts的: Avocado/Framer

好 那么看Principle/QC/Keynote 这个完全是个人喜好了
MartinRGB说QC很接近程序员思维 但是我看QC的时候 刚好是我学iOS之前 所以我当时觉得很难 就放弃了 转而直接看iOS...
然后Keynote的话 用好“神奇移动”功能可以做得很屌 但是Keynote的线性逻辑(只有上一张和下一张 不能够像Storyboard那样有多个逻辑连线)不容易用来做实时交互 所以我一般用Keynote来做幻灯片吓唬只见过Prezi的老师用
那就谈Principle(有点安利的感觉)这个软件基本逻辑也是靠Storyboard 但是又有Keynote那种在两张图之间的补间过渡动画 还有自带的Scroll功能 我觉得刚好能做些快速的原型 实践下想法
什么?你说AE?...AE太强大了 放在最后说(逃


在Principle/AE里模拟 最主要的就是把层级关系做好了 导出需要的图片 或者在之前就做好相应的遮罩 这样在后面的软件中就不用费心思考虑了
比如这两个动画...

案例一:用Principle

https://dribbble.com/shots/2378742-Quick-Navigation-for-Android
这个怎么做呢 首先考虑下如何把元素分开:
1.页面内容直接用一整张图就好 但是记得不要把状态栏和底部的三个按钮给一起导到图里面 因为从GIF里面可以看到 它们的运动轨迹是不跟随页面内容的(状态栏一直保持在最上面 底部按钮也是各自的轨迹)
那么我们就准备三个不带状态栏和底部按钮的图作为页面内容:

2.底部的三个按钮 明显返回键和其他两个是不一样的 所以分开导出 (黑色底色为了看清楚)

3.导出状态栏 (灰色底色为了看清楚)

4.Page分页标记(三根竖线 随便画一下 没图)

图片元素区分/整理到这就OK了 其实只要整理做好了 后面导入Principle就很容易做了 这个动画只要四个Board就能完成


案例二:用AE

https://dribbble.com/shots/2388889-Battle-Map-Concept
这个其实需要考虑到图片整理的地方很少 因为很明显 主要界面是个3D的 还有炫光 这个是你用任何现有的原型软件都做不出来的 只能上AE 带三维摄像机 带Optical Flare来做
主要要说的地方 就是Navigation Bar这个透明效果(translucent) 这个没法用Sketch画出来导出 因为Sketch的Background Blur效果是对于当前图片静态产生的 但是AE里面一旦Bar下面内容有变化 Bar的透明效果就必须要动
简单说下怎么做实时的translucent效果

使用调整图层 放一个在图层最上面 设置蒙板为整个Navigation Bar的大小 然后添加高斯模糊 这个时候 整个translucent效果是白色的
如果要设置translucent的tint color 就要在调整图层上面再加一个形状图层 颜色就是你的tint color 比如这个例子里面是黑色 然后设置透明度为66%左右 就OK啦