近期,在社区RISC-V SIG、Godot SIG和FAQ SIG的共同努力下,成功实现Godot开源游戏引擎在openKylin 2.0 RISC-V版本上的原生编译与流畅运行,进一步扩展openKylin RISC-V游戏生态。

SIG 成果!openKylin RISC-V 版本成功编译运行 Godot 4.3插图
openKylin 2.0 RISC-V SpacemiT K1

以下为编译指南,在这里,特别感谢Github开发MBCX的RISC-V交叉编译方法,为SIG工作开展提供帮助和参考!

 

01基础准备

  • 编译Godot至少需要4G内存,如果不足请开始swap,文中演示设备是8G内存。

  • 前往openKylin官网下载安装openKylin 2.0 RISC-V镜像,此处演示使用的是SpacemiT K1(进迭时空Muse Book),请大家下载安装对应板卡的镜像

 

02克隆源代码

克隆Godot 4.3源代码:

sudo apt install gitgit clone https://github.com/godotengine/godot.git -b 4.3-stable --depth=1

 

03安装编译依赖

安装Godot编译依赖:

sudo apt updatesudo apt install -y \  build-essential \  pkg-config \  libx11-dev \  libxcursor-dev \  libxinerama-dev \  libgl1-mesa-dev \  libglu1-mesa-dev \  libasound2-dev \  libpulse-dev \  libudev-dev \  libxi-dev \  libxrandr-dev \  libwayland-dev

其中,openKylin 2.0的build-essential中gcc和g++版本默认是12,需要使用update-alternatives修改默认版本,切换到gcc-13和g++-13。

# 安装gcc-13 g++-13sudo apt install gcc-13 g++-13sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100# 输入gcc-13对应的数字序号sudo update-alternatives --config gcc# g++也是相同的步骤。sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 100# 输入g++-13对应的数字序号sudo update-alternatives --config g++

SIG 成果!openKylin RISC-V 版本成功编译运行 Godot 4.3插图1

切换到GCC-13

Godot项目使用SCons构建,SCons是一个开放源代码、以Python语言编写的自动化构建工具,在openKylin使用pip包安装程序安装SCons。​​​​​​​

sudo apt install python3-pipsudo pip install scons -i https://pypi.tuna.tsinghua.edu.cn/simple --break-system-packages

检查SCons版本:​​​​​​​

openkylin@openkylin:~/godot$ scons -vSCons by Steven Knight et al.: SCons: v4.8.0.7c688f694c644b61342670ce92977bf4a396c0d4, Sun, 07 Jul 2024 16:52:07 -0700, by bdbaddog on M1Dog2021 SCons path: ['/usr/local/lib/python3.12/dist-packages/SCons']Copyright (c) 2001 - 2024 The SCons Foundation

安装mold和Clang-17:

sudo apt install mold clang-17

检查Clang版本,并确保编译器后端为GCC13,应该有如下输出:​​​​​​​

Selected GCC installation: /usr/bin/../lib/gcc/riscv64-linux-gnu/13openkylin@openkylin:~/godot$ clang -vOpenkylin clang version 17.0.6 (9ok4)Target: riscv64-unknown-linux-gnuThread model: posixInstalledDir: /usr/binFound candidate GCC installation: /usr/bin/../lib/gcc/riscv64-linux-gnu/12Found candidate GCC installation: /usr/bin/../lib/gcc/riscv64-linux-gnu/13Found candidate GCC installation: /usr/bin/../lib/gcc/riscv64-linux-gnu/8Selected GCC installation: /usr/bin/../lib/gcc/riscv64-linux-gnu/13

 

04开始构建

cd进入源码目录构建:

cd godot

指定目标架构为`rv64`,启用Clang作为LLVM编译器前端,指定链接器为`mold`(GNU ld无法正确链接)并同时禁用链接时优化。

arch="rv64" use_llvm="yes" linker="mold" lto="none"

启用fb文本服务器后端(Godot有两种文本后端,fb和adv):

module_text_server_fb_enabled="yes"

同时可以禁用一些在RISC-V设备可能没法正常工作的Godot模块。构建脚本会自动禁用,所以此步骤非必要。​​​​​​​

# 禁用Theora视频编码支持module_theora_enabled="no"# 禁用去噪模块module_denoise_enabled="no"# 禁用光线投射模块module_raycast_enabled="no"# 禁用Xatlas纹理展开模块module_xatlas_unwrap_enabled="no"

使用以下命令构建Godot编辑器:​​​​​​​

scons -j8 arch="rv64" use_llvm="yes" linker="mold" lto="none" \     target="editor" platform="linux" \     precision="single" module_text_server_fb_enabled="yes" \     module_theora_enabled="no" \     module_denoise_enabled="no" \     module_raycast_enabled="no" \     module_xatlas_unwrap_enabled="no"

使用以下命令构建Debug导出模板:​​​​​​​

scons -j8 arch="rv64" use_llvm="yes" linker="mold" lto="none" \     target="template_debug" platform="linux" \     precision="single" module_text_server_fb_enabled="yes" \     module_theora_enabled="no" \     module_denoise_enabled="no" \     module_raycast_enabled="no" \     module_xatlas_unwrap_enabled="no"

使用以下命令构建Release导出模板:​​​​​​​

scons -j8 arch="rv64" use_llvm="yes" linker="mold" lto="none" \     target="template_release" platform="linux" \     precision="single" module_text_server_fb_enabled="yes" \     module_theora_enabled="no" \     module_denoise_enabled="no" \     module_raycast_enabled="no" \     module_xatlas_unwrap_enabled="no"

SIG 成果!openKylin RISC-V 版本成功编译运行 Godot 4.3插图2

编译Godot

05运行Godot

cd进入bin目录:

cd bin

运行Godot编辑器,openKylin 2.0镜像默认使用wlcom(基于Wayland协议),IMG的GPU可以使用GLES,因此需要加上启动参数:

--display-driver wayland opengl_es3

如果设备可以外接AMD GPU可以尝试用GL(比如SG2042):​​​​​​​

chmod +x godot.linuxbsd.editor.rv64.llvm./godot.linuxbsd.editor.rv64.llvm --display-driver wayland opengl_es3

SIG 成果!openKylin RISC-V 版本成功编译运行 Godot 4.3插图3

运行Godot

SIG 成果!openKylin RISC-V 版本成功编译运行 Godot 4.3插图4

项目管理器

06设置项目启动参数

在调试项目时,Godot仍会使用默认的软渲染管线,因此需要将参数添加到项目设置:

--display-driver wayland opengl_es3

 

 

07演示

SIG 成果!openKylin RISC-V 版本成功编译运行 Godot 4.3插图5

3D项目

SIG 成果!openKylin RISC-V 版本成功编译运行 Godot 4.3插图6

2D项目

SIG 成果!openKylin RISC-V 版本成功编译运行 Godot 4.3插图7

代码编辑器

08结语​​​​​​​

通过本文的介绍,相信大家已经对如何在openKylin 2.0 RISC-V设备上编译和运行Godot有了初步的了解。随着RISC-V技术的不断成熟和普及,越来越多的开发者加入RISC-V生态建设,相信未来会有更多的创新和突破,为游戏开发者带来更多的机遇和挑战。

目前,由Godot Hub社区与openKylin社区联合举办Godot x openKylin开发大赛正在火热进行中。大赛以Godot游戏引擎为核心编程工具,旨在激发创新活力,推动游戏开发技术的蓬勃发展,欢迎感兴趣的小伙伴积极参赛。​​​​​​​

免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代表一休教程网的观点和立场。