Blog logoJustZht

Blog logo

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

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

 • 

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