读《Blood, Sweat, and Pixels》—— Crunch 之外有什么?

We hold these truths to be self-evident,
我们认为这些真理是不言而喻的,

that basically, we want to make games and create experiences our way,
我们希望以自己的方式制作游戏和创造体验,

without any kind of fiscal, creative or political constraints from on high,
不受任何财政、创意或政治上的高压约束,

since we believe that’s the best way to do it.
因为我们相信这是最好的方式。

We want to benefit directly from the success of our endeavors and share that success with the people responsible for it.
我们希望直接从我们的努力中受益,并与那些为此负责的人分享成功。

—— Bungie 2007, breaking away from Microsoft

Continue Reading »

今天重新看了神谷英树 23 年 10 月离开白金工作室的访谈

他穿着四叶草工作室的衣服啊!

读《我看见的世界》

我不认为 ImageNet 会把现有的算法变得更好。

我认为它会让它们过时。

—— 李飞飞

Continue Reading »

曼谷的夏

Gap 的第一站,选择了曼谷。

Continue Reading »

莎蒂停顿了一下又说道,“自从开始教书,我总在琢磨,我们是多么幸运的一代,诞生在那个时代,我们很幸运。”

“怎么说?”

“这个嘛,如果我们出生得再早一点,制作电子游戏就没那么容易。我们接触电脑的机会更少,我们会属于把软盘装进塑料密封袋、开车带着游戏到店里去的那代人。

如果出生再晚一些,互联网就会更加普及,值得利用的工具也更多,但是说实话,到那时电子游戏已经变得复杂,这个行业变得太专业化了。我们不可能凭一己之力完成那么多工作。以当时的资源,我们做出的游戏不可能被奥珀斯这样的公司看中,也不可能把一五设计成日本人,我们会为自己不是日裔而畏首畏尾。而且我猜,由于互联网的存在,我们会得知有多少人在做跟我们相同的事情,我们会感到难以应对。

当时的我们有太多的自由空间,创意方面的也好,技术方面的也罢。没人监督我们,就连我们自己都没在监督自己。我们拥有的只是高得离谱的标准,以及你完全理想化的信念——认定我们能做出一款了不起的游戏。”

——「明日传奇

最近的周赛,就没有不 outage 的,是越来越多的失业大军来 DDoS 吗?

周赛遇到了一道数组中所有 pair 的绝对值求和的问题 2731. Movement of Robots,直觉上 O(N^2) 的方式会 TLE,后来转换思路,发现有序数组用 O(N) 就可以做到了。

直觉上的做法,是在模拟 abs 运算:

1for i in range(N):
2    for j in range(i + 1, N):
3        res += abs(nums[i] - nums[j])

通过归纳这个过程,可以发现:

1N1 - N0, N2 - N0, N3 - N0, N4 - N0
2         N2 - N1, N3 - N1, N4 - N1
3                  N3 - N2, N4 - N2
4                           N4 - N3

对于 index i, 在 - 号左边会出现 i 次,因为有 i 个数比它小;在 - 号右边会出现 N - 1 - i 次,因为有 N - 1 - i 个数比它大。 那么我们可以直接用乘法计算了:

1sum(
2    nums[i] * (i - (N - 1 - i))
3    for i in range(N)
4)

那么为什么只有对有序数组才能得到这样的 O(N) 优化呢?

因为要求的是 abs,如果出现了逆序我们不知道某一步应该是 Ni - Nj 还是 Nj - Ni,会导致计数错误。

流媒体是如何播放的

之前计划模仿「在浏览器中输入 google.com 并按下回车之后发生了什么?」来具体描述一下流媒体播放的详细过程,但是因为一些客观因素,对音视频的挖掘需要暂时搁置了,所以写这篇文章对流媒体的播放先做一个笼统的介绍。

Continue Reading »

在做 JNI 的时候,Kotlin 与 Rust 传递复杂结构,需要手动赋值每一行属性,非常繁琐。 想到也许可以用 Protocol Buffer 作为中间载体,依赖自动生成的类。

效果倒是可以,input 和 output 都使用 ByteArray 了,两边各自反序列化一次就行。 但是吧,10 个属性的结构,在 Rust 下面生成的文件也就 60 行,在 Java 里有足足 2500+ 🤯

Protobuf java generate to large methods

只能说,凡事皆有代价。

分享一些优化观影体验的工具们

年初把自己的观影记录从豆瓣切换到了 Trakt1,不知不觉 Trakt 标记的电影和剧也有接近 80,豆瓣之前标记的有 1400+,算下来总共差不多 1500 了。

一方面感叹自己还是爱电影的,另一方面也意识到为了更好地看电影,之前折腾了一些工具,做个总结吧。

Continue Reading »