Mark Brown又更新了。这位Game Maker's Toolkit的主理人,专门扒游戏开发里的那些"怎么可能做到"的黑科技。这次他盯上了二十多年前的一个老问题:Rockstar是怎么把一座4公里宽的完整城市,塞进PS2那可怜的32MB内存里的。
说实话,现在聊优化有点应景。显卡价格居高不下是一方面,但另一方面,老游戏里的那些技术神操作,回头看反而更让人服气。不是怀旧滤镜,是真的想不通他们当年怎么想的。
GTA3的自由城,不是那种切地图加载的伪开放世界。你从波特兰开车到斯汤顿岛,中间没有读条,没有黑屏,就是一路开过去。城里到处都是独特的建筑模型、路面纹理、NPC造型,整个数据包加起来大概130MB。而PS2的内存,连这个零头都装不下。
答案其实不复杂:流式加载。你往前开,后面的东西就卸掉,前面的东西实时往里塞。现在听来是常识,但2001年把这个机制跑在PS2上,还要保证不卡顿、不穿帮、不掉帧,完全是另一回事。
我更好奇的是决策过程。当时肯定有更省事的方案——做分区加载,或者砍城市规模,或者复用大量素材让城市看起来千篇一律。Rockstar选了最难的那条路,然后真做成了。这种选择在今天的开发环境里还挺少见的,现在讲究的是"先上线再迭代",能省则省。
视频里应该还有更多细节,比如具体的LOD切换策略、音频流的优先级管理、怎么在玩家察觉不到的时候完成内存置换。这些技术现在看可能过时了,但解决问题的思路没变:在硬约束里找空间,而不是抱怨约束太硬。
顺便一提,Brown还cue了两期老内容,一期讲游戏里的镜子是怎么骗人的——Telltale的《行尸走肉》连后视镜都是假的,另一期讲《生化危机1》怎么处理拐角视野。都是那种"玩家玩了几十小时都没发现"的 trick,挺适合下饭看的。
最后说个有点讽刺的。GTA6定档今年11月19日,但新闻里跟着的是"Rockstar员工报告高强度加班"的消息。二十多年前那批人能在32MB里造出一座城,现在团队规模和技术预算都翻了几十倍,交付压力反而更大了。技术进步了,但做游戏的某些困境好像没怎么变。
热门跟贴