嵌入式界的顶流开源项目,RetroPie 是怎么设计的?

RetroPie 是啥?

一个用于将树梅派等板子转变为游戏机的开源项目。

树梅派上运行 RetroPie

Github:

https://github.com/RetroPie/RetroPie-Setup

第一感觉,基于 Shell,有啥牛逼的。

但仔细想想,一个简单的项目能获得 9.4K 的 Star,肯定有其过人之处。

想要实现模拟复古游戏机最重要的 2 件事

1、有能模拟运行复古游戏的模拟器。

最流行的模拟器是 RetroArch。

RetroArch 本身不负责模拟游戏,而且为各种更底层的各种模拟器提供一套统一的框架。

RetroArch 负责音频、显示等各种基础功能,各种模拟器核心负责实际地对游戏模拟。

一个模拟器核心能模拟一个硬件平台,例如 mGBA 能模拟 GBA 掌机。

2. 有一个能让用户选择启动游戏的菜单界面,即启动器。

最流行的开源启动器是 Emulationstation。

树梅派上运行 Emulationstation

另一个比较优秀的开源启动器是 Pegasus:

树梅派上运行 Pegasus

Pegasus 是 Qt 写的,感兴趣的话,可以看看其源码,代码质量挺好的。

内部实现

我曾经阅读过一段时间的 RetroPie 的源码。

最深刻地感受是:优雅、真香。

从需求上看,RetroPie 最核心的功能是要编译、安装、配置 RetroArch、Emulationstation 和各种模拟器软件包。

对于每一个软件包,RetroPie 都会定义一组函数集

function depends_${package}()
{
    ...
}
function sources_${package}()
{
    ...
}
function build_${package}()
{
    ...
}
function install_${package}()
{
    ...
}
function configure_${package}()
{
    ...
}

分别对应获取源码、编译、安装、配置 4个步骤。

每一个软件包都只要专注在实现这 4 个接口上,以便 RetroPie 的核心层调用。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。

点击这里找小助理0元领取:加微信领取资料




RetroPie 的核心层

system.sh,用于适配多个硬件平台。

helpers.sh,包含各种辅助函数。

packages.sh,软件包管理相关的 API。

运行 RetroPie 的 retropie_setup.sh 时,首先会将所有的软件包注册进核心层,存放在数组里。

相关 API 是:rp_registerModule()

当要编译安装某个软件包时,以 Retroarch 为例,会通过 rp_callModule() 依次调用 retroarch.sh 里的:

function depends_retroarch()
{
    ...}
function sources_retroarch()
{
    ...
}
function build_retroarch()
{
    ...
}
function install_retroarch()
{
    ...
}

RetroPie 的核心设计就是上面这些内容,但是具体实现起来,还是有很多技巧在里面的,非常值得我们学习,这里我就不展开分析了。

另外,RetroPie 的 Shell 编码风格非常好,我们可以将其作为标准。

我在工作中写过许多 shell 脚本,大致分类为:

最深刻地感受是:

Shell 是一把利器,用起来很爽,但是要小心一点,别伤着自己了。

总结

RetroPie 是一个优秀的开源项目,它的功能并不复杂,这是由于它有极其的优秀的设计。

我从中学到的东西

将简单的功能做好做稳定,是一件很了不起的事。

做板子的公司那么多,而做到全球流行的只有树梅派一家。

做一个好的产品,从来不是靠点子,不是靠能力,不是靠智力,而是看你有没全心全意为用户着想,是否始终从用户的角度出发。

参考资料

https://retropie.org.uk/

https://github.com/RetroPie/RetroPie-Setup

https://www.retroarch.com/

https://emulationstation.org/

https://pegasus-frontend.org/

文章链接:
https://mp.weixin.qq.com/s/qU3sbGX6SeF-vBjL7dEqdA

转载自:老吴嵌入式,作者吴伟东Jack

文章链接:嵌入式界的顶流开源项目,RetroPie 是怎么设计的?

展开阅读全文

页面更新:2024-03-31

标签:嵌入式   启动器   项目   板子   软件包   模拟器   脚本   源码   核心   功能

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top