--- title: 折腾笔记:在GameShell上编译Godot游戏
折腾笔记:在GameShell上编译Godot游戏
2020/12/1
一切都源于某天深夜无聊逛淘宝说起。
偶然间看到了Retro Game、开源掌机,Hack之心燃起。
然而很多名为开源掌机,实际上只是拿来玩模拟器游戏。
外观设计也很土味😜
GameShell
可能是淘宝的推荐算法有所长进吧,偶然间发现一个叫GameShell的产品。
无论是外观、设计,还是类树莓派的架构(感觉就是魔改的树莓派)。
对于一个常年从事软件开发的人,给树莓派装个电池我都无从下手😭
这样的产品比开发板门槛低,可以带出门,像正常的手机那样充电。
基本上就是一个Portable的树莓派。
仔细想想,如果在这个上面做游戏,参加Game Jam时看起来肯定很有趣。
关于在GS上做游戏
这是我拿到GS后的第一个问题,我试了PyGame(SDL封装),LÖVE...
不得不说常年的Unity开发经验,让我习惯这两个工具。
于是得出了一个短暂的结论,虽然GS是一个很好的设备,但在上面做游戏不太容易。
接下来GS开始吃灰,大概吃了几个月,发现闲鱼也出不掉...
被逼无奈开始重新思考它的功能😭
关于Godot
偶然间了解到Godot更新了3.x,虽然是因为Unity开发久了想了解下其他的引擎。
但最后却发现,这个引擎似乎比Unity更开放,且可以移植到树莓派上。
进一步就发现,这个可以在GS上做游戏 详见GS官方社区讨论帖。
摸索后搞出成果。
第一步,生成Custom Template
该部分参考自 godot_3.1_cpi。
首先Godot的Export相当于Unity的Build,就是导出可玩的游戏程序的部分。
而Custom Template是针对特定的架构、系统而生成的「依赖构建模板」(我是这么猜测的)。
通过生成模板,你可以在macOS上生成Windows游戏,或是ARM CPU的Linux游戏。
具体步骤大概如下:
git clone https://github.com/godotengine/godot.git
cd godot
# 这一步是生成Custom Template用的,最终生成文件会在 godot/bin 目录
# 参数 -j12 即 12 个 Job ,use_llvm是必须的,platform、target、arch看名知意
scons platform=x11 target=release arch=armhf tools=no use_llvm=yes -j12
最终生成的文件将在 godot/bin 文件夹下,文件名大概为:godot.x11.opt.armhf.llvm
第二步,在Godot中导出游戏
这里可以随便下载一个Godot的模板游戏,推荐2D Platform。
接下来在Godot游戏中增加退出游戏的功能(这一步可选,只是GS程序一般靠「MENU键」返回主菜单)。
「MENU键」对应的是键盘Escape键。
代码中可以添加:
func _process(delta):
if Input.is_action_just_pressed("ui_escape"):
get_tree().quit()
这里将 godot.x11.opt.armhf.llvm 拷贝出来并在导出时制定给 Custom Template。
第三步,Test Flight
将生成出来的.pck和.x86文件拷贝至GameShell。
速度慢的小伙伴可以考虑USB-Ethernet。
接下来在 /home/cpi/launcher/Menu/GameShell 目录扩展GS的主菜单。
在该目录下创建一个Shell文件名大概名为:10_MyGame.sh
PS:该文件名我大概猜测前面的数字用于排序,后面的英文用于标题显示。
#!/bin/bash
exec /你的游戏路径/游戏名.x86
重新加载GS主界面,点击你的游戏图标后,大功告成。
如果Godot不支持显卡驱动
如果Godot提醒你显卡不支持之类的问题,建议使用「FBTURBO driver」。
目前尚不清楚为什么LIMA Driver不会被Godot识别(GS的GPU是MALI)。
然而软件渲染的确是比较感人😭 首先天空盒就不能用啦。
个人建议Godot在GS上目前还是开发2D游戏合适。
不然3D游戏光是加载速度就让人抓狂了。
By 鱆