三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

从0到1开发掌机移植游戏:PortMaster贡献者文档深度解读

从0到1开发掌机移植游戏:PortMaster贡献者文档深度解读

从0到1开发掌机移植游戏:PortMaster贡献者文档深度解读

【免费下载链接】PortMasterA simple tool that allows you to download various game ports that are available for 351Elec/AmberElec, ArkOS, JelOS, RetroOZ, TheRA, and UnofficialOS for the RK3326 and RK3566 devices and the RG552.项目地址: https://gitcode.com/gh_mirrors/port/PortMaster

PortMaster是一款简单实用的掌机游戏移植工具,专为RK3326和RK3566设备(如RG552)以及351Elec/AmberElec、ArkOS、JelOS、RetroOZ、TheRA和UnofficialOS等系统设计,让开发者能够轻松将各类游戏移植到掌机平台。本文将带你深入了解如何从零开始为PortMaster贡献游戏移植,成为掌机游戏开发的一员!

准备工作:环境搭建与项目克隆

要开始PortMaster的游戏移植开发,首先需要搭建好开发环境并获取项目源码。你可以通过以下命令克隆PortMaster仓库:

git clone https://gitcode.com/gh_mirrors/port/PortMaster

克隆完成后,你将得到PortMaster的完整项目结构,其中包含了docs、images、markdown、tools等重要目录,以及大量的游戏移植压缩包。这些目录和文件将是你进行游戏移植开发的基础。

核心步骤:编写移植脚本

移植脚本是PortMaster游戏移植的核心,它负责处理游戏的启动、配置、控制等关键环节。下面我们将详细介绍编写移植脚本的关键步骤和最佳实践。

引入控制文件

从2021年11月7日起,PortMaster的打包要求通过从PortMaster文件夹中获取control.txt来满足。在移植脚本的开头,你只需包含以下代码:

#!/bin/bash if [ -d "/opt/system/Tools/PortMaster/" ]; then controlfolder="/opt/system/Tools/PortMaster" elif [ -d "/opt/tools/PortMaster/" ]; then controlfolder="/opt/tools/PortMaster" else controlfolder="/roms/ports/PortMaster" fi source $controlfolder/control.txt get_controls

这样,$ESUDO、$directory、$param_device以及必要的SDL配置控制器配置都将从control.txt文件中获取,大大简化了脚本的编写和维护。

处理控制器配置

不同的掌机设备可能有不同的控制器布局,因此在移植脚本中需要正确识别设备并配置相应的控制器参数。例如,使用gptokeyb工具可以实现更好的鼠标控制,你可以根据设备的模拟摇杆数量选择不同的配置文件:

$GPTOKEYB "blobby" -c "./blobby.gptk.$ANALOGSTICKS" &

同时,对于支持SDL游戏控制器的游戏,需要设置SDL_GAMECONTROLLERCONFIG环境变量,为不同设备提供正确的控制器映射:

LD_LIBRARY_PATH="$PWD/libs" SDL_GAMECONTROLLERCONFIG="$sdl_controllerconfig" ./blobby 2>&1 | tee -a ./log.txt

处理文件路径与权限

掌机设备可能有不同的存储配置,例如某些设备支持双SD卡。因此,在脚本中需要正确识别存储路径:

if [ -f "/opt/system/Advanced/Switch to main SD for Roms.sh" ]; then directory="roms2" else directory="roms" fi

此外,还需要确保uinput设备的权限,以便正常使用控制器:

$ESUDO chmod 666 /dev/uinput

清理与退出

为了保证掌机系统的稳定性,在游戏退出时需要进行必要的清理工作,例如杀死gptokeyb进程、重启系统事件服务等:

$ESUDO kill -9 $(pidof gptokeyb) $ESUDO systemctl restart oga_events & printf "\033c" >> /dev/tty1

实战案例:Blobby Volley 2移植脚本解析

为了更好地理解移植脚本的编写,我们以Blobby Volley 2为例进行解析。该脚本不仅包含了上述核心步骤,还处理了鼠标控制、配置文件 symlink 等细节。

#!/bin/bash # 确定控制文件夹位置 if [ -d "/opt/system/Tools/PortMaster/" ]; then controlfolder="/opt/system/Tools/PortMaster" # ArkOS位置 elif [ -d "/opt/tools/PortMaster/" ]; then controlfolder="/opt/tools/PortMaster" # TheRA位置 else controlfolder="/roms/ports/PortMaster" # 351Elec/AmberElec, JelOS和RetroOZ位置 fi source $controlfolder/control.txt # 获取控制变量 get_controls # 获取控制器配置 cd /$directory/ports/blobbyvolley2 # 切换到游戏目录 # 处理配置文件symlink $ESUDO rm -rf ~/.blobby ln -sfv /$directory/ports/blobbyvolley2/conf/.blobby ~/ $ESUDO chmod 666 /dev/uinput # 设置uinput权限 # 启动gptokeyb $GPTOKEYB "blobby" -c "./blobby.gptk.$ANALOGSTICKS" & # 启动游戏 LD_LIBRARY_PATH="$PWD/libs" SDL_GAMECONTROLLERCONFIG="$sdl_controllerconfig" ./blobby 2>&1 | tee -a ./log.txt # 清理工作 $ESUDO kill -9 $(pidof gptokeyb) $ESUDO systemctl restart oga_events & printf "\033c" >> /dev/tty1

这个脚本展示了一个完整的PortMaster游戏移植流程,从环境检测到游戏启动再到退出清理,每一个环节都考虑到了掌机设备的特殊性。

提交贡献:Pull Request模板使用

当你完成游戏移植后,可以通过提交Pull Request的方式将你的成果贡献给PortMaster社区。项目提供了Pull Request模板,你只需按照模板填写相关信息即可:

New Port for { Game Title } URL: { Link to project page or source control page } { Game Title } Instructions: { Instructions here } Notes: { Notes here. This can include thanks to developers of port and porter } Tested on { OS and or device tested on }

在提交前,确保你的移植已经在目标设备和系统上测试通过,并填写清晰的说明和测试信息,以便社区审核和合并。

总结

通过本文的介绍,你已经了解了从0到1开发掌机移植游戏并为PortMaster贡献的完整流程。从环境搭建、脚本编写到提交贡献,每一个步骤都至关重要。希望本文能够帮助你顺利成为PortMaster社区的贡献者,为掌机玩家带来更多精彩的游戏体验!如果你在开发过程中遇到问题,可以参考项目的官方文档docs/packaging.md获取更多详细信息。

【免费下载链接】PortMasterA simple tool that allows you to download various game ports that are available for 351Elec/AmberElec, ArkOS, JelOS, RetroOZ, TheRA, and UnofficialOS for the RK3326 and RK3566 devices and the RG552.项目地址: https://gitcode.com/gh_mirrors/port/PortMaster

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表