SIG 成果!openKylin RISC-V 版本成功编译运行 Godot 4.3
近期,在社区RISC-V SIG、Godot SIG和FAQ SIG的共同努力下,成功实现Godot开源游戏引擎在openKylin 2.0 RISC-V版本上的原生编译与流畅运行,进一步扩展openKylin RISC-V游戏生态。
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 git
git clone https://github.com/godotengine/godot.git -b 4.3-stable --depth=1
03安装编译依赖
安装Godot编译依赖:
sudo apt update
sudo 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++-13
sudo apt install gcc-13 g++-13
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
sudo 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 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 100
# 输入g++-13对应的数字序号
sudo update-alternatives --config g++
切换到GCC-13
Godot项目使用SCons构建,SCons是一个开放源代码、以Python语言编写的自动化构建工具,在openKylin使用pip包安装程序安装SCons。
sudo apt install python3-pip
sudo pip install scons -i https://pypi.tuna.tsinghua.edu.cn/simple --break-system-packages
检查SCons版本:
openkylin@openkylin:~/godot$ scons -v
SCons 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/13
openkylin@openkylin:~/godot$ clang -v
Openkylin clang version 17.0.6 (9ok4)
Target: riscv64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/riscv64-linux-gnu/12
Found candidate GCC installation: /usr/bin/../lib/gcc/riscv64-linux-gnu/13
Found candidate GCC installation: /usr/bin/../lib/gcc/riscv64-linux-gnu/8
Selected 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"
编译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
运行Godot
项目管理器
06设置项目启动参数
在调试项目时,Godot仍会使用默认的软渲染管线,因此需要将参数添加到项目设置:
--display-driver wayland opengl_es3
07演示
3D项目
2D项目
代码编辑器
08结语
通过本文的介绍,相信大家已经对如何在openKylin 2.0 RISC-V设备上编译和运行Godot有了初步的了解。随着RISC-V技术的不断成熟和普及,越来越多的开发者加入RISC-V生态建设,相信未来会有更多的创新和突破,为游戏开发者带来更多的机遇和挑战。
目前,由Godot Hub社区与openKylin社区联合举办Godot x openKylin开发大赛正在火热进行中。大赛以Godot游戏引擎为核心编程工具,旨在激发创新活力,推动游戏开发技术的蓬勃发展,欢迎感兴趣的小伙伴积极参赛。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
LiteFlow v2.12.3 正式版本发布,国内好用优秀的规则引擎框架
前言 这一个版本2.12.3做了挺久的。虽然涉及到的issue只有9个,但是其中有些issue涉及到了LF的核心数据结构的变动。为了能让LF的源码设计更加优秀,是做了大量的优化的。 如果你在使用2.12.X系列的版本,可以无缝升级。如果是以下版本,请看官网的升级指南。 嵌套循环获取N层下标/迭代对象 在之前版本中,这一直是循环体系中不太完美的地方,开发者只能取到当前层的循环下标/迭代对象。而无法取到上层的值。之前版本没提供也是因为涉及到了底层的对象结构的变更,没有很好的思路去入手。 在这个版本中,我们终于提供了这一个特性。不仅能取到上一层的循环下标/迭代对象,还能取到前N层的。 关于这个特性的详细使用方法请参照【常规组件->次数循环组件】以及【常规组件->迭代循环组件】。 隐式子流程嵌套的问题 其实这个问题和循环嵌套获取N层下标的问题类似,都是属于底层对象结构的不完善导致的。我们这个版本花了很长时间去思考了这个问题,并从底层去解决了本质问题。 在Solon体系中支持声明式的组件 Solon是一个优秀的纯血国产应用开发框架,LF一直对Solon有支持,但是在之前的版本中,在s...
- 下一篇
面壁智能发布 MiniCPM3-4B 基座模型,“端侧 ChatGPT 时刻到来”
面壁智能官方宣布,面壁「小刚炮」系列进化为全新 MiniCPM 3.0 基座模型,以 4B 参数,带来超越 GPT-3.5 的性能,并表示“端侧 ChatGPT 时刻到来”。 面壁智能表示,MiniCPM 3.0 仅以 4B 参数,在包括自然语言理解、知识、代码、数学等多项能力上对 GPT-3.5 实现赶超,在 Qwen2-7B、 Phi-3.5、GLM4-9B、LLaMa3-8B 等一众中外知名模型脱颖而出。 此外,MiniCPM 3.0 还拥有端侧最强 Function calling 性能 ,在权威评测榜单 Berkeley Function-Calling Leaderboard 上,其性能接近 GPT-4o,并超越 Llama 3.1-8B、Qwen-2-7B、GLM-4-9B 等众多模型。 开源地址: https://github.com/OpenBMB/MiniCPM https://huggingface.co/openbmb/MiniCPM3-4B
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 2048小游戏-低调大师作品
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS关闭SELinux安全模块
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池