diff --git a/.obsidian/plugins/various-complements/data.json b/.obsidian/plugins/various-complements/data.json index 9f6c8f3..e913e68 100644 --- a/.obsidian/plugins/various-complements/data.json +++ b/.obsidian/plugins/various-complements/data.json @@ -47,94 +47,6 @@ }, "showLogAboutPerformanceInConsole": false, "selectionHistoryTree": { - "406387721": { - "406387721": { - "currentFile": { - "count": 1, - "lastUpdated": 1690193982464 - } - } - }, - "使用其他框架?https": { - "使用其他框架?https": { - "currentFile": { - "count": 1, - "lastUpdated": 1690635291419 - } - } - }, - "UsingReactUMG": { - "UsingReactUMG": { - "currentFile": { - "count": 1, - "lastUpdated": 1690971735176 - } - } - }, - "编译插件后进入工程,点击工具栏的": { - "编译插件后进入工程,点击工具栏的": { - "currentFile": { - "count": 1, - "lastUpdated": 1690972218475 - } - } - }, - "json,": { - "json,": { - "currentFile": { - "count": 1, - "lastUpdated": 1690972883636 - } - } - }, - "JavaScript": { - "JavaScript": { - "currentFile": { - "count": 1, - "lastUpdated": 1691039171629 - } - } - }, - "html#msg40636": { - "html#msg40636": { - "currentFile": { - "count": 1, - "lastUpdated": 1691299621696 - } - } - }, - "Protocol,一种基于OSC的虚拟偶像动作输出传输协议。": { - "Protocol,一种基于OSC的虚拟偶像动作输出传输协议。": { - "currentFile": { - "count": 1, - "lastUpdated": 1691462131984 - } - } - }, - "c++17带来的代码变化": { - "c++17带来的代码变化": { - "internalLink": { - "count": 1, - "lastUpdated": 1691473679060 - } - } - }, - "js-examples": { - "js-examples": { - "currentFile": { - "count": 1, - "lastUpdated": 1691644835357 - } - } - }, - "输入输出什么,怎么对接,原理简述": { - "输入输出什么,怎么对接,原理简述": { - "currentFile": { - "count": 1, - "lastUpdated": 1692104361523 - } - } - }, "FBXSdk": { "FBXSdk": { "currentFile": { @@ -142,6 +54,14 @@ "lastUpdated": 1692677847729 } } + }, + "enabled": { + "enabled": { + "currentFile": { + "count": 1, + "lastUpdated": 1694787633996 + } + } } } } \ No newline at end of file diff --git a/03-UnrealEngine/流程管理与部署/UE5 Ubantu & Docker 部署.md b/03-UnrealEngine/流程管理与部署/UE5 Ubantu & Docker 部署.md index 884ac08..b9e3c8b 100644 --- a/03-UnrealEngine/流程管理与部署/UE5 Ubantu & Docker 部署.md +++ b/03-UnrealEngine/流程管理与部署/UE5 Ubantu & Docker 部署.md @@ -1,18 +1,36 @@ --- -title: Untitled +title: UE5 Ubantu & Docker 部署 date: 2023-09-12 18:20:39 excerpt: tags: -rating: ⭐ +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 -## 桌面版问题解决 ->docker: Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]问题解决 -``` +# 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) @@ -21,133 +39,32 @@ 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镜像选择 -- [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则带有一个对应版本的虚幻引擎,此引擎为源码编译版,官方也提供执行编译&构建镜像资料,有需求可以自行编译,一遍这种镜像是为了编译、打包项目所用。 - -https://github.com/adamrehn/ue4-runtime -可以参考这位大佬的网站:https://unrealcontainers.com/docs/obtaining-images/write-your-own -# 编译命令 -## 生成Project -/home/user/Linux_Unreal_Engine_5.1.1/Engine/Build/BatchFiles/Linux/GenerateProjectFiles.sh /home/user/Projects/AIMotionRender/AIMotionRender.uproject -game -engine -rocket -progress -VSCode - -## Start Project -/home/user/Linux_Unreal_Engine_5.1.1/Engine/Binaries/Linux/UnrealEditor -logs "/home/user/Projects/AIMotionRender/AIMotionRender.uproject" - -## Build -/home/user/Linux_Unreal_Engine_5.1.1/Engine/Build/BatchFiles/Linux/Build.sh Development Linux -Project="/home/user/Projects/AIMotionRender/AIMotionRender.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE - -## UE Docker -### UE-dev 5.1 -sudo docker run --gpus=all --rm -ti -v "/media/user//home/user/Projects/AIMotionRender:/project" ghcr.io/epicgames/unreal-engine:dev-5.1.1 - -### UE-Runtime -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/Projects/AIMotionRender:/project \ -adamrehn/ue4-runtime:22.04-vulkan-x11 - -#### 编译Puert -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/Projects/AIMotionRender:/project \ --v /home/user/node:/home/user/node \ --v /home/user/Projects/backend-nodejs:/home/user/Projects/backend-nodejs \ -adamrehn/ue4-runtime:22.04-vulkan-x11 - -sudo apt-get install clang -sudo apt-get install libc++-dev -sudo apt-get install libc++abi-dev -sudo apt-get install make -curl -sL https://deb.nodesource.com/setup_16.x | sudo -e bash - -sudo apt-get install -y nodejs -cd /home/user/Projects/backend-nodejs/node-script -npm install -s commander -sudo apt-get install git -/home/user/Projects/backend-nodejs/linux.sh - - -root 用户 -sudo docker run -u 0 --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/Projects/AIMotionRender:/project \ --v /home/user/node:/home/user/node \ --v /home/user/Projects/backend-nodejs:/home/user/Projects/backend-nodejs \ -adamrehn/ue4-runtime:22.04-vulkan-x11 -#### 编译v8 -/home/user/Projects/backend-nodejs/linux.sh - - -### Startup -cd /home/ue4/UnrealEngine/Engine/Binaries/Linux \ -./UnrealEditor -log "/project/AIMotionRender.uproject" - -/home/ue4/UnrealEngine/Engine/Binaries/Linux/UnrealEditor -log "/project/AIMotionRender.uproject" - -### Compiler -/home/ue4/UnrealEngine/Engine/Build/BatchFiles/Linux/Build.sh Development Linux -Project="/project/AIMotionRender.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE - - - -## UE Docker - - - - -# 需求 -1. 参考 adamrehn/ue4-runtime:22.04-vulkan-x11,重新构建容器 -2. 安装下列环境以进行Puerts的V8环境编译 +### 构建带有UE的图形环境 +简单的做法就是下载一份Linux版本的UE之后将目录映射进容器,比如: ```bash -sudo apt-get install clang -sudo apt-get install libc++-dev -sudo apt-get install libc++abi-dev -sudo apt-get install make -curl -sL https://deb.nodesource.com/setup_16.x | sudo -e bash - -sudo apt-get install -y nodejs -sudo apt-get install git +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 -# 下载编译脚本,脚本需要手动修改一下 -cd /home/user/Projects/ -git clone https://github.com/puerts/backend-nodejs.git -cd /home/user/Projects/backend-nodejs/node-script -npm install -s commander -/home/user/Projects/backend-nodejs/linux.sh +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" -## 原容器存在问题 -adamrehn/ue4-runtime:22.04-vulkan-x11存在的问题: -1. 缺少相关编译环境。 -2. 没有设置环境变量不知道root、ue4账号密码。 -3. 参与编译的libatomic.so.1库是32位的。 - -经过测试使用官方镜像安装的Ubantu可以正常进行编译(UE项目以及Puerts v8环境),并且可以正常打开项目;原容器可以编译UE项目,但因为编译的Puerts v8环境有一些问题导致无法运行Puerts。 - -## 启动命令参考 -```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/Projects/AIMotionRender:/project \ -adamrehn/ue4-runtime:22.04-vulkan-x11 - -编译v8环境用: -sudo docker run -u 0 --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/Projects/AIMotionRender:/project \ --v /home/user/node:/home/user/node \ --v /home/user/Projects/backend-nodejs:/home/user/Projects/backend-nodejs \ -adamrehn/ue4-runtime:22.04-vulkan-x11 -``` \ No newline at end of file +PS.实际是因为Ubantu系统版本与容器系统并不相同,所以需要重新编译一下,才能运行项目。 \ No newline at end of file diff --git a/03-UnrealEngine/流程管理与部署/Ubantu平台Puerts的编译.md b/03-UnrealEngine/流程管理与部署/Ubantu平台Puerts的编译.md index 634e42a..bcc743f 100644 --- a/03-UnrealEngine/流程管理与部署/Ubantu平台Puerts的编译.md +++ b/03-UnrealEngine/流程管理与部署/Ubantu平台Puerts的编译.md @@ -5,3 +5,62 @@ excerpt: tags: rating: ⭐ --- +# 前言 +本人使用的版本是[Unreal_v1.0.4](https://github.com/Tencent/puerts/releases/tag/Unreal_v1.0.4)的Nodejs版本 + +# Linux上的编译问题解决 +1. FileSystemOperation.cpp + 1. `#include "HAL/PlatformFilemanager.h" => #include "HAL/PlatformFileManager.h"` +2. Compile PesapiFrameworkLoader.mm error: Objective-C was disabled in PCH file but is currently enabled + 1. 将PesapiFrameworkLoader.mm的后缀名改成PesapiFrameworkLoader.cpp + +### UE-dev 5.1 +sudo docker run --gpus=all --rm -ti -v "/media/user//home/user/Projects/AIMotionRender:/project" ghcr.io/epicgames/unreal-engine:dev-5.1.1 + + + +#### 编译Puert +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/Projects/AIMotionRender:/project \ +-v /home/user/node:/home/user/node \ +-v /home/user/Projects/backend-nodejs:/home/user/Projects/backend-nodejs \ +adamrehn/ue4-runtime:22.04-vulkan-x11 + +sudo apt-get install clang +sudo apt-get install libc++-dev +sudo apt-get install libc++abi-dev +sudo apt-get install make +curl -sL https://deb.nodesource.com/setup_16.x | sudo -e bash - +sudo apt-get install -y nodejs +cd /home/user/Projects/backend-nodejs/node-script +npm install -s commander +sudo apt-get install git +/home/user/Projects/backend-nodejs/linux.sh + + +root 用户 +sudo docker run -u 0 --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/Projects/AIMotionRender:/project \ +-v /home/user/node:/home/user/node \ +-v /home/user/Projects/backend-nodejs:/home/user/Projects/backend-nodejs \ +adamrehn/ue4-runtime:22.04-vulkan-x11 +#### 编译v8 +/home/user/Projects/backend-nodejs/linux.sh + + +### Startup +cd /home/ue4/UnrealEngine/Engine/Binaries/Linux \ +./UnrealEditor -log "/project/AIMotionRender.uproject" + +/home/ue4/UnrealEngine/Engine/Binaries/Linux/UnrealEditor -log "/project/AIMotionRender.uproject" + +### Compiler +/home/ue4/UnrealEngine/Engine/Build/BatchFiles/Linux/Build.sh Development Linux -Project="/project/AIMotionRender.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE + + + +## UE Docker diff --git a/08-Assets/Images/ImageBag/Images/UEDocker_进入UE容器.png b/08-Assets/Images/ImageBag/Images/UEDocker_进入UE容器.png new file mode 100644 index 0000000..2588f95 Binary files /dev/null and b/08-Assets/Images/ImageBag/Images/UEDocker_进入UE容器.png differ