最近在想让小龙虾(openclaw)帮我做点什么,能分担一下工作是最好的,刚好有一台闲置的电脑,那就用起来吧,以后能不能帮我写点虚幻引擎代码?
硬件信息:
CPU: 支持多线程,总核心数:`nproc`=8
内存: 31Gi 总容量,可用27Gi(足够)
GPU: NVIDIA GeForce GTX 1060 3GB(满足UE4基础开发需求)
系统: Ubuntu 24.04.4 LTS (Linux x86_64)
显卡是NVIDIA GeForce GTX 1060 3GB,跑UE5基本没意义(可能勉强跑起来做2D游戏?),那就用UE4吧。OpenClaw的原生环境是 Linux,虚幻引擎也有 Liunx 版本,那就决定在在 Linux 编译一个虚幻引擎,试试小龙虾(openclaw)能不能用来写代码。
1 先安装依赖
# 更新系统源sudo apt update && sudo apt upgrade -y
# 安装基础开发工具链 (Clang 是 UE 的一等公民)sudo apt install -y build-essential clang lldb git curl wget unzi
# 安装图形与系统依赖sudo apt install -y libx11-dev libxss1 libicu-dev \libvulkan1 vulkan-tools mesa-common-dev libglu1-mesa-dev \libsdl2-dev libnss3 libatk1.0-0 libatk-bridge2.0-0 \libdrm2 libgbm1
注:UE4的编译需要用到Clang和lldb,Linux的现代图形库是vulkan。
git clone -b 4.27.2-release https://github.com/EpicGames/UnrealEngine.git
需要确保你的 GitHub 账号已经关联了 Epic Games 账号,否则无法访问源码仓库。
实际git拉取时比较慢,于是直接在release中下载了 tar.gz 压缩包:
在 ~/ 中解压:
tar -xzvf ./UnrealEngine-4.27.2-release.tar.gz
注意,在进入下一步执行引擎提供的脚本之前,需要在同一个页面下载 Commit.gitdeps.xml,并覆盖 Engine/Build/Commit.gitdeps.xml 文件。
这是虚幻引擎的依赖清单文件,它记录了构建引擎所需的第三方库(如 DirectX、PhysX、Bink 等)的下载地址和哈希值。由于 Epic 的 CDN 服务器地址变更,GitHub 源码仓库中自带的旧版本文件指向了已失效的链接,导致 Setup.sh 无法下载依赖。
3 编译引擎
3.1 执行初始化脚本
./Setup.sh # 安装所有依赖,下载相关的一些依赖库和工具库项目。./GenerateProjectFiles.sh # 这个脚本会检查系统是否有合适的 Clang,生成 Makefile/CMakeLists.txt,配置构建参数。
3.2 编译
# 在源码根目录进行编译:make -j$(nproc) UE4Editor ShaderCompileWorker UnrealLightmass UnrealPak CrashReportClient
指定必要的编译目标,例如 ShaderCompileWorker 以防它没被包含在默认目标中,实际可以不指定,如果后续编译失败再指定也行。
32GB 内存,可以激进地使用全部核心。实际上后来还是因为OOM(Out Of Memory)原因编译失败了,swap 内存应该设置为16G,因为链接同时进行,每个都需要几个G的内存,很容易失败。失败也没关系,再次执行make j4,降低了核心数量,make 增量编译更快,不需要重新执行整个构建流程,可以从上次中断的地方继续,节省时间。
Tips:由于编译的时间很长,有个技巧是,用 nohup 来进行后台编译,终端挂断了程序也没事,继续跑。
nohup make -j$(nproc) >> ue4_build.log 2>&1 &
查看进度可以:
最后检查是否编译成功:
file ~/UnrealEngine-4.27.2-release/Engine/Binaries/Linux/UE4Editor
输出应该包含:ELF 64-bit LSB executable, x86-64,说明编译正确。
也可以直接运行:
~/UnrealEngine-4.27.2-release/Engine/Binaries/Linux/UE4Editor
测试中看到的"No available video device"是因为我们在无GUI环境下运行,这是正常的。
Unreal Engine 4.27.2 已经编译完成,可以让 openclaw 用来开发项目了。
4 openclaw自己操刀的编译
实际是让openclaw自己编译成功的,openclaw大火之后,感觉打开了一个新世界,仅仅布置一下任务,它真的自己就独立完成了。后续能不能让它帮忙开发UE项目呢?慢慢调教吧。
5 注意事项
【关于clang的版本】
Ubuntu 24.04 默认 Clang 版本是clang18.1.3,据说不能编译 UE 4.27,那都是旧信息了。实际上,UE 4.27 的源码兼容 Clang 18,只需要正常编译就行,不用降级。
【推荐使用clang取代gcc】
GCC 是一个“大块头”(Monolithic),前端、优化器和后端高度耦合。而 Clang 是 LLVM 项目的一个前端。
- 前端 (Clang): 负责理解 C++/Obj-C 代码,检查语法错误,并生成一种中间代码(LLVM IR)。
- 后端 (LLVM Core): 负责把 IR 转换成不同 CPU(x86, ARM, RISC-V)的机器码。
- 依然可以使用GDB调试,虽然 LLVM 自家有 LLDB(UE 推荐使用),但 Clang 生成的调试信息(DWARF 格式)与 GDB 完美兼容。
【Vulkan】
linux的图形api用的是Vulkan,Vulkan 是 OpenGL 的继任者,它的出现是因为 OpenGL 已经跟不上现代多核 CPU 的节奏了。
【显卡驱动】
安装完Ubuntu24.04LTS版本,还需要做一些准备工作,GPU默认的是开源的显卡驱动, 务必使用 nvidia-driver-535 或更高版本的私有驱动,不要使用开源的 nouveau。设置 → 软件和更新 → 附加驱动,一开始升级总是升级出错,后来先升级软件和更新了,才最终成功升级了显卡驱动。
【调整swap分区】
swap 内存应该设置为16G,链接同时进行,每个都需要几个G的内存,很容易失败,实际编译时就 OOM 内存溢出了。再次执行make就行,可以从断点继续编译。
【科学上网】
由于Ubuntu的软件源和后续要使用的很多功能都不可避免的连接外网,提前安装好科学上网,避免网络问题各种卡主。安装了开源的Clash。
【查看硬件信息】
nproc # 查看逻辑核心数(nproc值)lscpu | grep -E "(CPU\(s\):|Thread|Core)" # 查看详细架构 # 查看总内存和可用内存 # 其中 total为总容量,available为可用内存(已扣除缓存等可回收部分)。free -h# 查看GPU 型号及显存:、nvidia-smi --query-gpu=name,memory.total --format=csv# 如果未安装 nvidia-smi,可使用 lspci查看型号lspci | grep -i nvidialsb_release -a # 查看系统发行版及版本:uname -a # 或查看内核版本: