diff --git a/01-Diary/本周事务/协助构建ue-runtime镜像请求.md b/01-Diary/本周事务/协助构建ue-runtime镜像请求.md new file mode 100644 index 0000000..32ede31 --- /dev/null +++ b/01-Diary/本周事务/协助构建ue-runtime镜像请求.md @@ -0,0 +1,105 @@ +# 问题 +使用Ubantu官方安装的系统编译的v8环境放入Puerts插件后可以正常运行;使用 adamrehn/ue4-runtime:22.04-vulkan-x11镜像下载编译环境后,编译v8环境并且放入puerts插件,运行后会报错。初步认为是编译环境有问题所致。可能是因为参与编译的libatomic.so.1库是32位的。 +![[Puerts启动错误.png]] +# 需求 +1. 参考 adamrehn/ue4-runtime:22.04-vulkan-x11,重新构建容器 +2. 安装下列环境以进行Puerts的V8环境编译 +```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 +``` + +```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 +``` +**修改过的编译脚本**: +```sh +WORKSPACE=/home/user/Projects/backend-nodejs +HOMEPATH=~ +VERSION=$1 + +cd $HOMEPATH +# git clone https://github.com/nodejs/node.git + +cd node +# git fetch origin v$VERSION +# git checkout v$VERSION + +echo "=====[Patching Node.js]=====" +node $WORKSPACE/node-script/do-gitpatch.js -p $WORKSPACE/patchs/lib_uv_add_on_watcher_queue_updated_v16.16.0.patch +node $WORKSPACE/node-script/add_arraybuffer_new_without_stl.js deps/v8 +node $WORKSPACE/node-script/make_v8_inspector_export.js + +echo "=====[Building Node.js]=====" +export CC=clang +export CXX=clang++ +export CXXFLAGS="-stdlib=libc++" +export LDFLAGS="-stdlib=libc++" + +./configure --shared +make -j8 + +# 这后面可以的可以不要,执行需要libnode.so.93 libnode.so +mkdir -p ../puerts-node/nodejs/include +mkdir -p ../puerts-node/nodejs/deps/uv/include +mkdir -p ../puerts-node/nodejs/deps/v8/include + +cp src/node.h ../puerts-node/nodejs/include +cp src/node_version.h ../puerts-node/nodejs/include +cp -r deps/uv/include ../puerts-node/nodejs/deps/uv +cp -r deps/v8/include ../puerts-node/nodejs/deps/v8 + +mkdir -p ../puerts-node/nodejs/lib/Linux/ +cp out/Release/libnode.so.* ../puerts-node/nodejs/lib/Linux/ +cd ../puerts-node/nodejs/lib/Linux/ +ln -s libnode.so.93 libnode.so +cd - +``` + +## 原容器存在问题 +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 +运行UE用: +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 +``` + +# UE项目测试方法 +将编译出来的libnode.so.93 libnode.so放入/home/user/Projects/AIMotionRender/Plugins/Puerts/ThirdParty/nodejs_16/lib/Linux 目录下,之后就可以启动容器 + +编译命令: +/home/ue4/UnrealEngine/Engine/Build/BatchFiles/Linux/Build.sh Development Linux -Project="/project/AIMotionRender.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE + +启动命令: +/home/ue4/UnrealEngine/Engine/Binaries/Linux/UnrealEditor -log "/project/AIMotionRender.uproject" + +启动过程没有报错就可以了。 \ No newline at end of file diff --git a/03-UnrealEngine/流程管理与部署/UE5 Ubantu & Docker 部署.md b/03-UnrealEngine/流程管理与部署/UE5 Ubantu & Docker 部署.md new file mode 100644 index 0000000..884ac08 --- /dev/null +++ b/03-UnrealEngine/流程管理与部署/UE5 Ubantu & Docker 部署.md @@ -0,0 +1,153 @@ +--- +title: Untitled +date: 2023-09-12 18:20:39 +excerpt: +tags: +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]]问题解决 +``` +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镜像选择 +- [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环境编译 +```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 +``` + +```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 +``` + +## 原容器存在问题 +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 diff --git a/03-UnrealEngine/流程管理与部署/Ubantu平台Puerts的编译.md b/03-UnrealEngine/流程管理与部署/Ubantu平台Puerts的编译.md new file mode 100644 index 0000000..634e42a --- /dev/null +++ b/03-UnrealEngine/流程管理与部署/Ubantu平台Puerts的编译.md @@ -0,0 +1,7 @@ +--- +title: Untitled +date: 2023-09-15 15:50:48 +excerpt: +tags: +rating: ⭐ +--- diff --git a/03-UnrealEngine/流程管理与部署/UnrealEngie Docker部署.md b/03-UnrealEngine/流程管理与部署/UnrealEngie Docker部署.md deleted file mode 100644 index 84f6549..0000000 --- a/03-UnrealEngine/流程管理与部署/UnrealEngie Docker部署.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Untitled -date: 2023-09-12 18:20:39 -excerpt: -tags: -rating: ⭐ ---- - -## 生成Project -/media/user/b932eaa2-225b-4a27-aecd-eccf5eeb32dc2/UE/UE5_1/Linux_Unreal_Engine_5.1.1/Engine/Build/BatchFiles/Linux/GenerateProjectFiles.sh /media/user/b932eaa2-225b-4a27-aecd-eccf5eeb32dc/Projects/AIMotionRender51/test.uproject -game -engine -rocket -progress -VSCode - -## Start Project -/media/user/b932eaa2-225b-4a27-aecd-eccf5eeb32dc2/UE/UE5_1/Linux_Unreal_Engine_5.1.1/Engine/Binaries/Linux/UnrealEditor -logs "/media/user/b932eaa2-225b-4a27-aecd-eccf5eeb32dc1/Projects/AIMotionRender/AIMotionRender.uproject" - -## Build -/media/user/b932eaa2-225b-4a27-aecd-eccf5eeb32dc2/UE/UE5_1/Linux_Unreal_Engine_5.1.1/Engine/Build/BatchFiles/Linux/Build.sh Development Linux -Project="/media/user/b932eaa2-225b-4a27-aecd-eccf5eeb32dc1/Projects/AIMotionRender/AIMotionRender.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE - -## UE Docker -### 问题解决 ->docker: Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]问题解决 - -``` -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-dev 5.1 -sudo docker run --gpus=all --rm -ti -v "/media/user/b932eaa2-225b-4a27-aecd-eccf5eeb32dc2/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 /media/user/b932eaa2-225b-4a27-aecd-eccf5eeb32dc2/UE/UE5_1/Linux_Unreal_Engine_5.1.1:/home/ue4/UnrealEngine \ --v /media/user/b932eaa2-225b-4a27-aecd-eccf5eeb32dc2/Projects/AIMotionRender:/project \ -adamrehn/ue4-runtime:22.04-vulkan-x11 -### Startup -cd /home/ue4/UnrealEngine/Engine/Binaries/Linux \ -./UnrealEditor -log "/project/AIMotionRender.uproject" -/home/ue4/UnrealEngine/Engine/Binaries/Linux/UnrealEditor -log "/project/AIMotionRender.uproject" - - diff --git a/08-Assets/Images/ImageBag/Images/Puerts启动错误.png b/08-Assets/Images/ImageBag/Images/Puerts启动错误.png new file mode 100644 index 0000000..8960c8c Binary files /dev/null and b/08-Assets/Images/ImageBag/Images/Puerts启动错误.png differ