2019.5.17

 • 

十号左右的时候来上海呆了三天,参加了 Unite Shanghai。
B361F8A2-068F-4D5E-8C86-C84F844AD24A
听了一些 session,比如 ARCore,LWRP,Houdini 和 UIWidgets,其中 Houdini 关于程序化生成和装饰地形的 session 十分有趣。第一次参加 Unite 还是蛮新奇的,此外还有一些意外收获 hhh,等八月有眉目了再说。
在上海闲逛的时候拍了几张沿江的照片,后来查看的时候想起来之前在 twinmotion 里面渲染过类似角度的东西 hhh


今年的 Google I/O 上宣布了 Android Q 正式支持 Dark Mode,因此给 Skyline 做了下适配。Unity 在 Q beta 上有一些奇奇怪怪的问题,比如 raycast 的起始像素坐标偶尔会偏离到 Int.MaxValue 外去。此外 com.google.android.material:material 目前还是 1.1.0-alpha06 版本,在 Bottom App Bar 和 FAB 的处理上也有一些奇怪的 bug,因此适配了 Dark Mode 的 Skyline 还没有推到 Alpha Channel 里去。除此之外 Skyline 下一步还会提供一个 Slice Provider。
dark-theme-skyline


五月的前半个月感觉都在到处跑,没有安心坐下来真正写东西,因此 Node Editor 并没有进展太多,而且之前写的耦合太严重,准备重构了。


2019.5.5

 • 

banner
新版 Portfolio 上线了,更新了这一年做的一些内容,比如 Node Editor DemoVortexStarry 和一些 Hackathon 项目,此外 CetaceaChina Startup Simulator 也被归类到默认不展示的 Deprecated 类别里去,因为这两个项目到最终都没有上架,也没有后续计划了。
这版 Portfolio 是基于 Vue.js 来做的一个单页,后面加上了预渲染来处理 meta 爬虫抓不到的问题,不管如何都比之前 iframe + 手动编辑 html 静态页面体验好多了。


两周多之后终于把女神异闻录 5 的一周目通关了。说起来好久没这么对一个游戏痴迷过,上一次废寝忘食地玩还是大二的时候拿着朋友借给我的 PSV,恰巧打的也是女神异闻录 4 Golden,当时走到哪里都带着玩,甚至参加复旦 hackx 黑客松时,比赛日第二天早上还在会场里玩。曾几何时我觉得现实世界里的事情都已经足够我忙的,因此对架空世界的游戏有些抵触,认为游戏里再怎么高歌猛进在现实里仍然会面对烦心事,现在看来怕是因为当时现实的阻力还没有那么大,自己也像是游戏里的人物一样有信心解决所有事情而已,而境遇和心态不太稳定的时候,再去体验女神异闻录里面高中生的奇幻日常,倒也是能让自己安心和发现趣味的一种方式。

2019.4.25

 • 

今年没有过的 WWDC Playground 作品上架到 App Store 了,叫 Shader × Node,图标就是 Playground 里面做的一个 Shader 输出的效果,只不过不好捕捉所以在 Sketch 简单重绘了下。审核的时候又和苹果的人员扯皮了一下,因为审核人员拿条款 2.1 来压我说功能和 Safari 上的 Web App 没有太大区别。我这个软件虽然功能不多(毕竟只是为 Playground 设计的一个 Demo),但在 SpriteKit 和 UIKit Dynamics 的使用也算比较深层了,拿 2.1 来拒绝上架就很打击开发者,再加上之前关于有人买代码提交奖学金过了的事情我在 Developer Feedback 开了工单但是并没有得到有效的回复,因此当时很生气,感觉 App Store 审核团队严格得无理和莫名其妙,而奖学金审核却让人蒙混过关。我对审核人员没有特定的技术知识没有异议,但是最基础的技术常识都没有的话只会劝退开发者,更何况苹果一直想推 Pro App on iPad,而 Pro App 很多时候就像是我这个 Shader Node Editor 一样是外行很难看一眼明白的东西,只有特定的人群有需求,结果审核从 In Review 到 Reject 不到三分钟,直接以功能不足拒绝掉,那苹果对 Pro App 的定义到底是什么呢。我目前也没有太多 Cocoa 相关的个人项目在维护了,对这个平台的兴趣也在日渐下降,姑且看今年 WWDC 有什么吧。

2019.4.19

 • 

这几天看到 WWDC 有人提交不是自己的代码然后获得了奖学金的事情 Twitter Link 1 Link 2,实在是不知道要说什么了。在苹果开发者的帮助页面上开了一个工单,不过事已至此估计也没有翻盘的机会了,准备后面收拾收拾 ObjC 和 Swift 版本的 Node Shader Editor 开源并上架到 App Store 上。
提交 WWDC 的时候我在表单的 Comments 里面写“像是失去了魔力一样,而我只能接受自己并不总会有魔力的事实”。这一年来的确也是做什么什么都不顺,因此自然会有这类考虑,也变得有些迷茫了。后来和爸妈商量了下,下半年准备留学出国,如果这个阶段的时间比较轻松的话也可以再试试一些公司的面试,一边工作一边准备出国的考试。
最近玩了不少主机游戏,比如 Drive Club,神秘海域4 和女神异闻录5。听了 Velvet Light

2019.4.17

 • 

WWDC 2019 的奖学金结果出来了,结果我没有过。毕竟自认为 Shader Node Editor 这个作品的创意和完成度都是很高的,很莫名其妙了。
基于 Unity 和 UIWidgets 的 Scripting Node Editor 目前已经能运行基本的逻辑了,比如在 MonoBehaviour 内的 Update 打印 Hello World。在此之上我更新了下 UI,写了一个给 Unity 在 macOS 上的插件来修改 NSWindow 的标题属性,fullSizeContent 和 mask 从而实现了一个近似于 Chrome 的效果,这个截图里面除了 window control 以外窗口的其他内容都是 Unity 和 UIWidgets 绘制的:
Screenshot-2019-04-17-at-20.16.15

2019.4.8

 • 
Skyline

Skyline 上少数派的评测啦,欢迎围观。然后发现少数派报道过 Vortex,不过我当时应该在准备微软的面试,所以没注意 🤔。说到这个,也许六月份还会再试一次微软面试吧 hhh。

Node Editor

这几天给 Unity 上的 Node Editor 项目加了一个 Chrome 一样的多标签控件,原因是 Flutter 自带的 Scrollable Tab 会给 Tab 和 Container 都同时加上一个滑动手势识别,而作为 Container 的 Node Canvas 本身也有 Pan 的手势识别,因此就冲突了,因此自己写了一个针对桌面平台的 Scrollable Tab 控件,后期整理下也许会作为 Unity Package 开源在 GitHub 上。

2019-04-08-17.39.03

音乐

最近听了 Discogs Mix 072 - DJ MamabearMaybe It's Time

2019.4.6

 • 

这一个月几乎都在写 Node Editor,在个人写着图个好玩的 ObjC 和 Swift 的 Shader Node Editor 之后,我又在给目前参与的一个商业项目写一个通用的 Scripting Node Editor 组件,基于 Unity 和 UIWidgets,目前是这样子:
Screenshot-2019-04-06-at-01.07.23
Screenshot-2019-04-06-at-01.07.30
UIWidgets 用起来比较爽的主要原因当然是和 Flutter 相同的 API,以及对许多移动软件开发中常用但游戏开发一般很少考虑的点做了补充,比如 Navigator 可以 push 和 pop UI 层级这种东西在 UGUI 里是没有开箱支持的,而 Flutter 里是内建了很多相关的组件。除此以外 UIWidgets 还能同时运行于 GameView 和 EditorWindow,也为商业项目的内部工具开发和测试带来了很多好处。Unity Shanghai 这边对 UIWidgets 的支持力度也出乎我的意料,因此也打消了我对于项目正统性和长期支持的一些顾虑,直接用在了商业项目里(当然一个原因也是我实在用不下去 Marklight 了)

最近在考虑 Epoch 要不要先做一个 low poly 的版本,但是肯定也是没什么时间去做的,自己要做的项目排期怕是都排到明年了,目前来说个人项目中更要紧的似乎是更新 Portfolio 以及上架 Mac Live Wallpaper Toolkit 到 Unity Asset Store 上去。

有的时候在回想自己这四五年的决定,虽然很多事情干的还不错,但是很多关键的事情上还是办的太胆小了,因此逐渐把自己逼的无路可走,要是再来一次的话也许会更自信和激进一点,也不会在人情上考虑太多。当然人也是会眼界越来越高的,自然越看越觉得之前的自己是窝囊,只希望能逐渐找回之前的状态罢。

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 和中南自己的苹果实验室,只能说大环境如此也没办法,我也逐渐地接受了在大学教育上认命这个设定。