75 lines
4.2 KiB
Markdown
75 lines
4.2 KiB
Markdown
---
|
||
title: UE5 Ubantu & Docker 部署
|
||
date: 2023-09-12 18:20:39
|
||
excerpt:
|
||
tags:
|
||
- Ubantu
|
||
- Docker
|
||
rating: ⭐⭐
|
||
---
|
||
# 前言
|
||
本文假设系统已经安装完Docker,并且读者已经将镜像拉取完毕。并且假设此电脑装有显卡,且显存在3G以上(切记:AI专业显卡无法启动UE)。
|
||
- 文档地址:https://docs.unrealengine.com/5.3/en-US/quick-start-guide-for-using-container-images-in-unreal-engine/
|
||
- 镜像地址:https://github.com/orgs/epicgames/packages/container/package/unreal-engine
|
||
|
||
# UE安装
|
||
不同于Windows与Mac系统,Linux没有提供Epic启动器,但可以直接下载官方编译好的版本。各版本下载地址:https://www.unrealengine.com/en-US/linux
|
||
# UE镜像选择
|
||
- [runtime](https://github.com/orgs/epicgames/packages/container/unreal-engine/111082761?tag=runtime)
|
||
- [dev-5.3](https://github.com/orgs/epicgames/packages/container/unreal-engine/125977937?tag=dev-5.3)
|
||
- [dev-slim-5.3](https://github.com/orgs/epicgames/packages/container/unreal-engine/125977946?tag=dev-slim-5.3)
|
||
|
||
镜像主要分为runtime以及dev两种类型(slim为瘦身版)。主要的区别在于runtime是为了运行UE打包过的项目,带有图形显示环境。dev则带有一个对应版本的虚幻引擎,此引擎为源码编译版,官方也提供执行编译&构建镜像资料,有需求可以自行编译,一般这种镜像是为了编译、打包、测试项目或者执行CPU操作所用。
|
||
|
||
官方的runtime容器用的是第三方制作的镜像(也可以算是官方的,github的ReadME说是参与了官方容器的开发):
|
||
- https://github.com/adamrehn/ue4-runtime
|
||
- https://hub.docker.com/r/adamrehn/ue4-runtime/tags
|
||
更多信息可以参考这位大佬的网站:https://unrealcontainers.com/docs/obtaining-images/write-your-own
|
||
|
||
本人因为项目需求使用`ue4-runtime:22.04-vulkan-x11`镜像。该镜像会将镜像内的UE窗口直接映射到系统桌面上,可以方便得查看错误。
|
||
|
||
PS.dev镜像因为带有引擎,需要下载20~30G,只建议肉身翻墙或者高级科学上网工具者使用。但即使肉身翻墙,10GB的那个包下载速度依然特别慢。最终解压完的镜像大约有60多G,小空间的VPS也不好整。
|
||
## 问题解决
|
||
### Docker提示没有可选设备驱动
|
||
>docker: Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]
|
||
|
||
解决方法,安装nvidia-container-toolkit。
|
||
```bash
|
||
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
|
||
sudo apt-key add -
|
||
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
|
||
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
|
||
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
|
||
sudo apt-get update
|
||
|
||
sudo apt-get install -y nvidia-container-toolkit
|
||
sudo systemctl restart docker
|
||
```
|
||
|
||
### 构建带有UE的图形环境
|
||
简单的做法就是下载一份Linux版本的UE之后将目录映射进容器,比如:
|
||
```bash
|
||
sudo docker run --gpus=all --rm -e DISPLAY -ti \
|
||
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
|
||
-v /home/user/Linux_Unreal_Engine_5.1.1:/home/ue4/UnrealEngine \
|
||
-v /home/user/Project/:/project \
|
||
adamrehn/ue4-runtime:22.04-vulkan-x11
|
||
```
|
||
|
||
后台运行:
|
||
```bash
|
||
sudo docker run --gpus=all -d --restart=always --privileged=true -e DISPLAY -ti \
|
||
-v /home/user/Linux_Unreal_Engine_5.1.1:/home/ue4/UnrealEngine \
|
||
-v /home/user/Project/:/project \
|
||
adamrehn/ue4-runtime:22.04-vulkan-x11
|
||
```
|
||
之后可以使用docker exec让项目启动。
|
||
# 进入容器
|
||
![[UEDocker_进入UE容器.png]]
|
||
使用第一个命令构建容器后,会进入容器,并且可以通过输入命令行进行操作,主要的命令有:
|
||
- 生成解决方案:/home/ue4/UnrealEngine/Engine/Build/BatchFiles/Linux/GenerateProjectFiles.sh /project/XXXX.uproject -game -engine -rocket -progress -VSCode
|
||
- 编译项目:/home/ue4/UnrealEngine/Engine/Build/BatchFiles/Linux/Build.sh Development Linux -Project="/project/XXXX.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE
|
||
- 启动项目:/home/ue4/UnrealEngine/Engine/Binaries/Linux/UnrealEditor -logs "/project/XXXX.uproject"
|
||
|
||
**为了防止生成解决方案失败,可以把项目目录与UE目录设置权限。**
|
||
PS.实际是因为Ubantu系统版本可能与容器系统并不相同,所以需要重新编译一下,才能运行项目。 |