Blog logoJustZht

Blog logo

2019.3.29

 • 

Year of Pilgrimage 的故事走向大致想好了,但是什么时候开工还不清楚,因为目前的事情也够多,也够好玩的了。
比如最近在用 Marklight 写一个商用项目的 UI,Marklight 是一个 vuejs 写法的自带双向绑定的 Unity UI 框架,非常好用,但是后来开发者不再维护了,自己只能修修补补凑合着在当前这个项目里用。原本想去看看 Dear IMGUI 有没有 Unity 的移植,然后这几天发现了 Unity 的 UIWidgets,貌似是一个将 Flutter 的 Dart API 移植到 Unity C# 的项目,开发进展也特别神速,同一套代码也支持 EditorWindow 和 GameView 共用,因此动了心思想去研究下,顺便把 Swift/ObjC 版本的 Node Editor 移植上去,结合 Unity 本身的渲染特性做一个 PBR Master Node,简直完美。
这几天也久违地更新了下 Skyline,当然还是只限 beta channel。我逐渐地接受了 Unity 目前还是不适合做 App 的现实,不过 Flutter on Unity 这种框架和 DOTS 技术栈的出现还是给了我点信心,当然一时 Asset Store 内的素材和各家 SDK 都不会大规模迁移到 DOTS 上罢了。
Skyline 之前关于位置更新用的是一个基于 RxJava 和 GMS 的 Wrapper,虽然能用但是在耗电和灵活性上还是有些问题,后来写 Vortex 的时候用了 WorkManager 发现貌似更方便,因此把位置更新的代码更改为了 Awareness Snapshot API + WorkManager 触发。Skyline 在 1.0 版本使用的是 Mapbox 的 Unity SDK,在做 2.0 的时候我替换为了支持多家提供商的 Online Maps,中间也给 Online Maps 的开发者提了一些 bug 直到 Online Maps 3 正式发布,因此 Skyline 2.0 目前的地图和网格更新就是 Online Maps 来做了。虽然内存问题一直没解决,但是我已经放弃相关的努力了,因为我想了下,我也就只是用了 1.5 - 2 个 Facebook 的内存量而已,虽然并不光鲜但对比起来也还好 🤔。
此外,Fin.fm 已经连续直播一周了,虽然歌曲 id3 内引号 escaping 的 bug 还没来得及修,所以我只挂了一个简单的脚本让服务端崩溃后立即重启而已(x。
最近主要在玩异星工厂,这款游戏的厉害之处就是让我永远没有对自己的建造满意的时候,总是会有各类走线上的考虑不当,所以总是在收集资源改进走线,简直就像是在写代码一样,因此退出游戏的时候也是特别空虚,因为感觉这么多时间不如用来在真实世界里写代码了。

2019.3.27

 • 

一晃过了一个月。这个月里面完成了 ObjC 版本和 Swift 版本的 Shader Node Editor,然后基于 Swift 版本进一步修改成了为 iPad 提供 VJ 编程的 Shader + Node Playground 提交到了 WWDC Scholarship 2019 申请。关于为什么我今年还能申请奖学金有一些朋友比较迷惑,这里说明下我延期毕业了,博客里之前也有写过这个事,延期毕业直接或间接地导致了很多东西,比如毁约腾讯 offer,加入和离开 RCT Studio,以及目前能够继续参加 WWDC 奖学金。
Node Editor 是我之前比较感兴趣的一个方向,之前在 Unity 上用过 Shader Forge 和 ASE 这两款可视化着色器编辑软件,在做 China Startup Simulator 的时候也利用 IMGUI 写过节点故事线编辑器,总的来说 Node Editor 是一个新手友好的可视化逻辑表达方式,使用也挺广泛的,Max7,Houdini,Unreal Blueprint 中都有应用。关于编写 iOS 版本的 Node Editor 起因主要还是之前内测了 Shade 的时候也想自己写一个,顺便 WWDC 快来了,这样。Objective-C 的版本用了三到四天,写起来也比较流畅,Swift 4.2 的版本就比较麻烦,花了一周,在调用 objc_getClassList 的反应上也比 Objective-C 慢很多,总体写起来也很烦,各种 guard 和 let,也许是我不太会用 Swift 吧。顺带一提,苹果的 Playgrounds Author Template 挺好用,比自己手动拷贝或者 cat *.swift > 方便多了。
除了准备奖学金,这个月还和苹果中国的教育部门的 Doris 老师一起去中南民大做了一次宣讲,感触也挺多。武汉的大学貌似都比较先进一点,学生工作室挺多也都受学校关照,想了想 NodeX 和中南自己的苹果实验室,只能说大环境如此也没办法,我也逐渐地接受了在大学教育上认命这个设定。

2019.3.2

 • 

finfm
如果你现在访问我的 YouTube 主页的话,会发现一个 24/7 Live 的音乐直播(如果 VPS 上的程序还没炸的话),这就是一直想做的 fin.fm 的简陋版本了。大三开始一直想做一个个人的 24/7 个人电台,但没有时间真正做起来,这之间 Noon Pacific 都已经成为一个厂牌,YouTube 上借助直播功能的 Study/Relax radio 也是各种爆炸式出现,我也想办法终于试验性地跑起来了一个,姑且当作给自己的生日礼物吧。
之前想用 OBS + VNC 直接直播桌面,后来发现 VPS 没有显卡是不支持 OBS Studio 的,因此作罢,用了 Live Stream Radio 仓库。

2019.2.25

 • 

改了下 Nginx 配置,现在访问博客的 http:// 会 301 到 https:// 版本了,和 fincher.im 的行为一致。
在 Cee 的帮助下做了一份新的单页简历:网页版 + PDF
事情没办成几个,有点垂头丧气。
花了一小会用之前那套 NSWindow 的办法写了一个半透明的 Demo,只有一个 DVD Logo 在屏幕里弹跳:

dvd

2019.2.9

 • 

和猫猫聊最近上映的《流浪地球》电影,给猫猫推荐了几本之前自己看过的小说,顺便翻出来了 07 年科幻大会的纪念册。纪念册是我大表姐当时在成都帮我带的。
我表姐是真的铁杆科幻迷,现在她家应该还有 02 年左右的科幻世界杂志,以前也经常借我科幻书看。后来我去读寄宿制学校,就渐渐不再看科幻了,而表姐作为家里这一辈的长女,自然压力也大很多,我作为排行最小的男生,大家庭里自然有允许我随意出去闯荡的共识,但在我表姐身上,就会有很多琐事和赡养的责任压着,也许因此到最后她回到了家乡定居结婚。小城市自然眼界受限,很久以前表姐经常追美剧,还带我看 Glee,现在自然时间没有以前多了。
很久之前我算是个原教旨主义的小科幻迷,对刘慈欣和三体系列火起来之后冒出来的各种妖魔鬼怪感到恶心,颇有点像是爆红的小众乐队的粉丝的心态,而后来我觉得原教旨是很难区分界限的,而对于本土科幻生态变好中出来的奇怪事物心态也不用如此严苛,我也没必要因为先看过什么就让自己显得高人一等。大学这几年我也在很多事情上表现出了类似的反省,加上我开始信奉时间都应该用于创造,因此最后我到了另外一个极端的态度,就是我几乎不表态,我觉得主动发声毫无意义,在朋友圈和推特上也不怎么说话了,有适合说出来的事情我就在博客上写写,有人想来看就来看,我也不会主动让别人接受我的主见。但最近半年我个人经历的事情之后,再想起来表姐之前的那些科幻杂志,我觉得我还有这么一个奢侈的接受外界事物和评论的机会,而很多人也许都没有我这样的闲时间去折腾什么服务器,Netflix 和 Youtube 或者在一个对新观念开放的城市呆着,因为现实的引力实在是太重了,而科幻这种东西怕是最脱离现实的一件事了。到最后,我也没必要对自己那么严苛,倒是可以对外界的表态更有主见一些。

IMG_5213

2019.2.8

 • 

小学的时候在素描老师家学画画,在门口削铅笔时一个高中或者大学模样的女生上来探头看老师不在又走了,过会老师从屋内出来问我发生了什么,我说:“有个女的走了”。素描老师笑着说,“不要说女的,要说女生”。

2019.1.30

 • 

成绩出来了,没什么大问题的话就能结束延期毕业了,但是据说双证要等六月份才能拿,因此只好等着。如果真的能有什么文书证明我六月份才算毕业,我倒是可以今年再去投一次 WWDC Scholarship,项目功能我都想好了。
考完在家等待的这几天去了次北京见朋友们,去了次合肥见猫猫和高中同学。然后感冒了在家闷头打了几天游戏,主要在打 They are billions 和皇牌空战 7。答应朋友的一个项目到现在也没动工太多,自己的项目也都废着。就在下午还收到一封邮件,当前版本的 Google Places SDK 已经被宣布 deprecated,Skyline 2.0 在使用的 Place Picker 特性也一同废弃,暂时从文档来看谷歌还没有提供一个价格合理且方便的替代 API。虽然 Skyline 2.0 在编写的时候留了个心眼做了一个基于 Mapbox API 的 fallback,但这么一搞我真的头都要大了,而且新版 Places SDK 的计费简直就是抢钱,而我真正想花钱使用的 Google Maps Unity SDK 又不开放给独立开发者和小公司使用。
才考完学校的科目没多久,我就又要为面试而复习准备了。朋友帮我内推的岗位是 iOS 的,而我这一年间除了 WWDC Scholarship 项目貌似并没有写太多 iOS 相关的内容,反而是都在忙乎着写 Android,Unity,Vuejs 的应用,因此现在又要赶着看 iOS。

2019.1.18

 • 

考完了,也回到了家,在长沙的期间老师对我也多有关照,希望这次能一把过了。
Vortex 投递到了 Product Hunt 上,但这次运气不太好的是没有被归类到默认列表里,因此得到的 vote 少的可怜,结合之前提交的几个作品一起看,感觉 PH 对于移动软件和游戏类默认的权重会低很多,也不会显示在主页列表上。
考完了自然开始算计后面要做的事情,原本想先打上一两天游戏放松下,但是盘点了下自己的好几个项目都拖太久了:

  • Skyline
    • 目前软件部分的位置更新代码是基于 GMS 的位置订阅 + RxJava2 来做的,后来写 Vortex 的时候用了 WorkManager,感觉这种后台执行的效果更好也更灵活一些,因此打算迁移到 WorkManager 上
    • 2.0 的官网目前的 Changelog 页面还是假的,我还在想这个页面是跳转到之前用户指南页面上比较好还是继续用 vue.js 和 markdown 解析器实现一个手动的生成器(即整个 changelog 就是一个 markdown 纯文本,使用 --- 操作符来分隔每个 release,虽然用户端访问时 CPU 会高一点但是方便我自己不需要服务器存这些结构数据了)
    • 2.0 的官网目前的 Presents 页面二维码功能能用了,但三维查看器还没做,这部分其实就是把 1.0 的 three.js 官网移植过来,之前的 1.0 主要内容就是写了一个基于 three.js 的运行时的 terrain mesh 生成器,然后基于 render texture 做了一个手机模型的 mockup,屏幕贴图的内容动态从地形相机更新。2.0 在此基础主要的改进会是:1)会基于 url 的坐标参数动态生成 2)提供平板和手机两个手机 mockup 随时切换。
    • Unity 的一些收尾问题,比如到目前 Present 状态下手势都是半禁用的,我需要在 Mapbox 之外自己再实现一个手势识别的逻辑接管这类动态的需求。
    • 上次拆包 B-Reel 的 Pixel 3 自带动态壁纸,发现他们的 wallpaper.xml 里面有一个神奇的字段:androidprv:supportsAmbientMode="true",关于这个 Ambient Mode 的文档近乎没有,只有 AOSP 的代码里能看出一点点相关的解释,即会在 Always On Display 的前几分钟展示动态壁纸,然后转为全黑的默认状态。我后来在 Vortex 里面也加了这个字段,感觉还挺棒,但 Vortex 是一个对解锁(UserPresent)事件不敏感的动态壁纸,而 Skyline 本身在这块就有一些相应的解锁动画,我不确定开启 Ambient Mode 后会不会对之前的解锁判断造成干扰,所以真要实现进去还是要费一些功夫。
  • Flint
    • 目前来看要做全平台同步最好的办法还是 Realm + Dropbox,这块之前只写了 iOS 的部分
    • 之前用的邮件收发库不支持 Gmail 验证,因此需要做一些适配
  • Shader Store
    • 也算上架三个动态壁纸了(Android 俩 Windows 一个),现在想做一个一劳永逸的全平台动态壁纸库,服务器只存文本格式的 shader 文件,不需要其他的素材,mesh 尽量都在 shader 内过程生成(比如用 SDF)
    • 客户端在展示的时候尽量调用手机能用的传感器传入 shader 的 uniform 里(比如 Android 上可以传入启动器的页面页码,电量,天气温度,陀螺仪,Windows / Mac 上可以传入鼠标坐标和网速之类),然后 shader 依据当前平台提供的可用数据做一些可视化
    • iOS 端只有生成 live photo 的功能,毕竟 iOS 太受限了
    • 为什么叫 Store 呢,因为和一个朋友聊了下后觉得这个东西也许可以做成类似于主题商店一样的东西
  • Epoch
    • 总感觉地形 Shader 太费资源了,但是目前自己又不会写,因此只能考虑在 overdraw 上下手把星球背面的 Mesh 找个办法在运行时 cull 掉,最近在看基于 SRP 的运行时解决方案

以及之前的博客里面提到过 Google Fi 送了一个 Google Photo Book 的兑换码,前几天终于寄到家了。照片集的名字填的是 Year of Pilgrimage,希望以后也能用这个名字做一款自传性质的游戏出来。
Google Photo Book "Year of Pilgrimage"

2019.1.11

 • 

又回到了长沙,如果考试过了延期毕业也就能结束了。
刚刚知道 Jason Mraz 今年五月份在上海有演唱会,然后 Yung Bae 貌似三月份北京上海深圳也有,再加上我已经买了五月份 Unite Shanghai 技术大会的票,总体感觉上海是个不错的地方,既然没办法密集地请假去上海不如直接在上海工作,因此来年工作估计主要往上海偏移看看了。
总体来说一月份到目前为止挺乱的,十二月不满股权最终分配和公司交涉未果,很不爽一月初办了手续就走了,然后在家复习考试内容,同时自己还有几个项目想做,受制于复习所以没动。然后中间也有朋友在和我聊外包和内推机会,我也很感激。面试也是要准备的,特别是我这种搭积木为特长的程序员,其实很难说出来到底自己的能力在哪里,而真的要刷算法这种硬通货也要等下半月了。
总的来说我的这三年就是不停地折腾,一时风光一时难过,一时高兴一时消沉,基本上每半年一个来回,倒也挺有趣的。

2018

 • 

Screenshot-2018-12-31-at-22.21.56
想打开后台写一篇 18 年的总结,然后发现 17 年的还留在草稿里面,过的也真是快啊。不过再看 17 年的很多担心的确也都解决了,因此倒也无需担心未来的很多事情。

1 月 | 拿到了百度的离职证明。Skyline 在 Google Play Store 应用总榜前五呆了一周,赚了 1.5 万刀。
2 月 | 处理售后,一直在修 Skyline 的 bug。被拉到一个区块链的项目里面莫名其妙地做了一会 Logo 和网页设计。知道了要延期毕业的消息。
3 月 | 回学校,和同学做一个学校的外包。
4 月 | 拍毕业照。做毕设。宜家 hackathon 第一名。和学校关于分数的事情扯皮。学校外包做的一言难尽。获得了 WWDC 奖学金。
5 月 | 面签被审查。每天都在刷大使馆结果。和同学继续做学校外包。湖南大学 Hackathon 第二名。
6 月 | 答辩。院级优秀毕设。又接了一个外包。上了 61 的 interview。
7 月 | 正式延期毕业。去上海玩。去北京看了 FKJ 的演奏会。
8 月 | 在家。和猫猫去三亚玩。
9 月 | 一个让所有人都不开心的事情。毁约腾讯校招 offer。
10 月 | 来北京加入新公司。
11 月 | 去洛杉矶,咕咕咕了丁老板的设计聚会。碰到了加州山火,在宾馆看了一周的火灾报道。在写 Skyline 2.0。见到了 Cee。黑五购物了一下。
12 月 | 参加陈叔婚礼。新公司进入了 YC 19W。回长沙一趟处理学校的事情。和猫猫一起去了上海看展,然后也去 Unity 上海总部参加了活动。因为股权分配问题从新公司离开了。