墨影闲谈

一个开发出身的DevOps工程师 · 代码有理性,文章有温度

游戏构建:Unity 构建(三):Scriptable Build Pipeline——用最小改动,换最大缓存提升

1、那个让构建时间砍半的东西 上一篇我们讲了 AssetBundle 的两代接口演进——从第 0 代「手写代码收集资源、不自动处理依赖」,到第 1 代的两条路线(标记包名 / AssetBundleBuild[] 代码定义分包)。 虽然第 1 代的 BuildAssetBundles 解决了依赖处理的可靠性问题,但它有两个硬伤。第一,增量构建的效率...

2024-03-23 build

游戏构建:Unity 构建(二):AssetBundle 两代接口——从手写打包到自动依赖,经历了什么?

1、没有 AssetBundle 的日子 在讲 AssetBundle 的接口演进之前,先想象一下:如果 Unity 没有资源动态加载机制,游戏怎么做? 答案很简单——把所有资源都放在工程里,构建时全部打进安装包。 这听起来好像也没啥?但你想一个真实手游,场景几十个,角色几十个,每个角色几张贴图、一个模型、好几套动画……光是贴图可能就几百上千张。...

2024-03-16 build

游戏构建漫谈(零):从 Java 到 Unity/Unreal,我重新理解了「构建」这个词

1、换了个行业,换了对「构建」的理解 去年我换工作了。 从互联网行业跳到了游戏行业。开发语言从 Java 换成了 C# 和 C++。IDE 从 IntelliJ IDEA 换成了 Rider 和 Visual Studio。 坦白说,技术栈的切换比想象中顺利——毕竟编程语言说到底都是相通的。但有一个东西,让我结结实实地震惊了一下。 构建系统。 ...

2024-01-13 build

构建工具(十一):构建系统全景图——从 make 到 Bazel 该怎么选

1、先讲个故事 有个人想煮一碗面。 第一次,他烧了水、切了菜、下了面、调了酱。每一步都自己动手。这像手敲 gcc 命令。 后来他把步骤写在了便签上,每次照着做。这像写了个 shell 脚本。 再后来他发现,如果菜已经切好了,就不需要重新切。于是他在便签上加了判断。这像Makefile。 再后来他请了个厨师,只需要告诉厨师「我想吃面...

2023-08-05 build

构建工具(八):交叉编译——在你的 x86 电脑上编译 ARM 程序

1、你会遇到这个需求 某天,你可能会遇到这样的场景: 要在树莓派(ARM 架构)上跑一个程序,但树莓派性能太弱,直接在上面编译慢得令人发指 你是做嵌入式的,目标板是 ARM 芯片,根本没操作系统,更不可能在上面装编译器 你想给 Android 或 iOS 设备编一个 native 库 这时候你就需要交叉编译(cross compi...

2023-07-23 build