思绪来得快去得也快,偶尔会在这里停留
4 followers 1 article/week
死亡

早上上班的路上,在必经的一条马路,看到一个蓝衣人趴在路中间隔离带的水泥桩上。车流比较大,一晃就开过去了。我问坐在副驾驶的老婆:刚才那个人好奇怪啊。她说是啊,那个人怎么了?我说,昨天你没看到吗?他保持那个姿势已经一整天了,感觉连手指头都没动过。 说到这里,我赶紧把车靠边停下来打了 110 ,附近的派出所联系了我,说马上派人过去看看。我的心情久久不能平静。走在路上,我喜欢观察四周的细节,其实昨天就感觉不对了。路上没有血迹,我以为他/她(看不到脸)是在翻越隔离带时身体不舒服想休息一下。但一个人保持那种姿势几分钟而不动肯定不正常。如果昨天这个时候就报警或许更好呢? 如果下一次看到这样的情况,我想我会停车下来拍一拍,说不定就能救人一命了。 后面的路上,老婆和我讨论了死亡。...

Wed Apr 17, 2024 06:13
Ant Engine 的一些优化

最近一段时间都在公司内寻找项目可以合作推进 Ant Engine 的使用。我觉得自研引擎的一个重要优势在于我们可以针对具体游戏更好的做性能优化。在目标设备硬件性能允许的范畴内,把画面质量和交互体验做到更好。而同样的优化手段,在通用商业引擎上面做会困难的多,甚至无法顺利完成。 我们用 Ant Engine 制作的第一款游戏 Red Frontier 在一年前是性能完全不达标的。它在 iPhone 8 上甚至都达不到 30fps ,无法流畅游戏。很多性能问题是已知问题,比如我们用 Lua 搭建了整个引擎,一开始只考虑了引擎结构和正确性,把性能搁置在一边待后面再处理。 优化方案是一开始就想好的:借助 lua ecs 框架,把数据结构放在 C 内存中,必要时可以绕过 Lua 代码,直接用...

Fri Apr 12, 2024 09:32
重构 ltask 的任务调度器

ltask 是 Ant engine 的基础设施之一,在对 Ant engine profile 的过程中,我们发现了 ltask 的一些值得提升的地方。 我们希望尽可能的提升游戏帧率,缩短渲染每一帧的的时间。因为 Ant engine 是由很多并行任务构成的,任务调度器的策略会直接影响单帧需要的时间。 ltask 虽然和 skynet 想解决的问题是一样的:管理 m 个线程(任务/服务),让它们运行在 n 个 cpu 核心上。而它们的应用场景不同,ltask 目前用在游戏客户端,它由一两个重负荷任务和若干低负荷任务构成,优化目标是低延迟;而 skynet 主要用在服务器上,由数以千计的类似负荷的任务构成,优化目标是高负载。 低延迟和高负载在某些方面是对立的。...

Fri Mar 22, 2024 07:29
以非阻塞方式执行一个函数

在 skynet 中,服务之间并行运行,而每个服务自身的业务都是串行的。一个服务由开发者自行切分成多个时间片,每个时间片串行运行在不同的工作线程上。最常见的做法是在每个服务中运行一个 Lua 虚拟机,用 coroutine 切分时间片,这样从编写代码的角度看,任务是连续的。 这个设计的目的是,让开发者轻松享受到多核带来的并发性能优势,同时减轻编写多线程程序带来的心智负担。 用过 skynet 的应该都碰到过:当我们在服务中不小心调用了一个长时间运行而不返回的 C 函数,会独占一个工作线程。同时,这个被阻塞的服务也无法处理新的消息。一旦这种情况发生,看似是无解的。我们通常认为,是设计问题导致了这种情况发生。skynet 的框架在监测到这种情况发生时,会输出 maybe in an endless...

Thu Mar 14, 2024 15:24
关于虚拟文件系统的一些新想法

虚拟文件系统 (vfs) 是 Ant 引擎的核心模块。在 wiki 上有介绍 ,blog 上也有总结。 最近在按前段时间拟定的思路重构编辑器。在这个过程中对 vfs 有了一些新想法。短期内不打算把工作重心放到重构 vfs 上面,先记录一下。 最早设计 vfs 的时候,是从网络文件系统的角度看待它的。我把它设想为一个类似 git 的组织方式,带版本控制的网络文件系统。所以,很多设计思路都是延续这个而来。但是,经过了这些年的数次重构,我对最初的思路产生了一些怀疑。 其中,最重要的一条:在游戏运行时,游戏程序看到的 vfs 是一个树结构的不变快照。这样,它像 git 一样,就可以用一个 Merkle tree 的 hash 值就可以代表这个快照,也可以方便的通过网络同步它。 为了实现编辑器,我们在这个设计上打了一些补丁,让编辑器可以在运行时动态的修改它。而我今天反思,“不变快照”...

Thu Mar 14, 2024 15:24

Build your own newsfeed

Ready to give it a go?
Start a 14-day trial, no credit card required.

Create account