游戏引擎技术点滴

[按] 在上个月 [2016-12-17] 的 2016 金山技术开放日上,俺做了一个游戏引擎相关的分享。结束之后,俺断断续续地在零碎时间里把分享的内容整理了一下,为每张幻灯片配上了简单的文字注解,就形成了这篇小结。

参与了现场交流的同学可能会发现,这篇文字版跟现场版相比,虽然幻灯片保持原状,但文字注解部分略有出入 (增加的内容主要是第二部分“评估,运用和改造”,这一部分在现场时因为时......

Unity 协程运行时的监控和优化

协程 (Coroutine) 是大部分现代编程环境都提供的一个非常有用的机制。它允许我们把不同时刻发生的行为,在代码中以线性的方式聚合起来。与基于事件与回调的系统相比,以协程方式组织的业务逻辑,可读性相对好一些。

Unity 内的协程实现是传统协程的简化——在主线程内每一帧给定的时间点上,引擎通过一定的调度机制来唤醒和执行满足条件的协程,以实际上的分时串行化执行回避了协程之间的通信问题。但由于种种因素,协程的执行情况对程序员而言相对......

VR 的未来五年 - Michael Abrash 在 Oculus Connect 3 上的回顾与展望

[按] 本文刊发于《程序员》2016年12月,转载请与该刊物联系。

年度 VR 盛会 Oculus Connect 3 上,Michael Abrash 和 John Carmack 和往年一样带来了精彩的演讲。和以往一样,Abrash 的发言 以前瞻性的研究和底层技术发展趋势为主,而 Carmack 的发言 一如既往地更关注在当下的平台上 (主要是移动 VR),通过工程化努力可以把交互和应用做到什么程度。

本篇主要包含了与 Michael Abrash 的演讲相关的内容。

回顾

开始之前,我们先简单回顾一下 Abrash 在近三年前 (2014年1月) 的 Steam Dev D......

无压应对信息过载 - 2016 效率小结

tl;dr ("Too long; didn’t read.")

信息过载是我们每天都要面对的问题。有趣的是,随着信息鉴别,过滤,处理能力的提高,我们往往不自觉地会延展自己的信息渠道(新 app、新 feed 和新的公众号,等等),接着让自己陷入更大的信息漩涡——明明是效率提高了,吞吐量增大了,为什么好像每个人都更加不堪重负了?

......

Unity 游戏的 string interning 优化

Unity 游戏的 string interning 优化

问题描述

在开始之前,先说一下这个问题为什么很容易被忽视吧。

通常情况下,我们难以注意到运行着的 Unity 程序内 string 的实例化情况。这些字符串的创建,销毁的时机是否合理,是否存在有重复 (相同内容的字符串),冗余 (存有已不再有意义的垃圾字符),低效 (capacity 远大于 length),以及泄漏 (没有在期望的时机及时销毁) 的情况就更容易被忽视了。由于 string 没法随时像普通的 Unity 对象那样通过调用 Object.GetInstanceID() 来查看实例id,我们不太容易感知字符串对象的实......

知识共享许可协议
本作品由Gu Lu创作,采用知识共享Attribution-NonCommercial-NoDerivatives 4.0 国际许可协议进行许可。