2018.7.29

 • 

FKJ Beijing Live

去北京看了场 FKJ 的演出,应该是北京首演了。

FKJ 是这两年来最喜欢的音乐家,说来有趣,我的 Skyline 动态壁纸 就是听着他的 Skyline 写出来的,软件名字也因此或多或少地顺手叫了 Skyline。
之前这个票价让我觉得有点太便宜了(或许是早鸟票的原因),毕竟是大佬来华。初到现场时以为不会有太多人,哪知道排了两层楼的队伍,组织有些不利等到了十点才正式开始。至于 Live 怕是不可言说只能亲身感受,最后返场的时间也超长,把 Vibin Out 和 So Much to Me 都演了,十分满足。
顺带一提,暖场的 HFigures 也不错,还专门搜了下,Deep Diving 挺好听,喵喵也喜欢这类 Jazz hiphop。

Skyline LWP

2.0 正在编写。的确还是跳票了,由于学校的考试,课设,延期毕业,个人的办签证,去北京处理东西等其他事项,2.0 从三月份拖到现在,让我自己都有一种赚了钱就跑的感觉,但是这么就太不厚道了,而且 1.0 版本问题的确很多,于是最近有些空,完全重写了下。
这次仍然没有摆脱 Unity,原因是 Android 上暂时没找到一个现代的的对开发友好的 Scene Graph / 游戏引擎:

  • ViroCore API 设计非常适合有 SceneKit 经验的人,但是暂时不支持自定义着色器,因此没办法做到根据高度图实时 Vertex Offest,而如果手动构造 Mesh 的话为啥不用 Unity 有现成的 Mapbox SDK 呢?
  • Rajawali 太老了,以及文档不够
  • libGDX 是一个跨平台的引擎,然后生成的 Gradle 项目是 Native 和游戏主干分开的,我试了一会还是觉得太憋屈了
  • UrhoSharp 配合 Xamarian 差点就成功了。Urho3D 本身功能强大,但是死在了不知道怎么用 C# 绑定去把 UrhoSharp 的视图扔到 Wallpaper.Engine 里面去
  • Sceneform,谷歌亲生框架,但是目前只能在 ARCore 里面用
  • Ogre,emmm 我忘了,反正应该也是觉得用起来难受

因此,在没一个能打的情况下,Skyline 2.0 还是用了 Unity,不过这次带了 LWRP ,期许能对移动设备更友好一些。

至此,图形前端还是 Unity,但 UI 部分完全是 Android 原生了,再也不会有因为 Unity UGUI 导致的奇怪的横屏布局问题。
之前 Unity 和 Android 对于每个功能都是单独写接口做传递,维护到后面就会有很多问题,比如状态的同步,回调的处理,异步调用因为 Unity 在后台 inactive 导致的阻塞等。因此这次使用了一个全局的 JSON 同步状态。为了避免之前为了每个属性在两边都 getter / setter 写面条代码的问题,这次在 Unity 端写了一个通过 Attribute 定义属性到 JSON 路径的映射功能,运行时在解析 JSON 后直接用反射查找属性 setter 调用,方便了很多,不过也因此选不了 il2cpp 作为 scripting backend,只能使用 mono。但其实也没什么,毕竟 il2cpp 对于我来说较为突出的优点在于 arm64 支持,但 Mapbox 的 Unity SDK 内嵌了一个 SQLite Wrapper 目前是只有 x86 和 armv7 库的,因此 arm64 显得聊胜于无。总之,stay tuned,以及希望我这次不要像之前为了一个宣传片直接跳票两个月