制作带下载器的游戏 link
带下载器的游戏依然是一个Ren’Py游戏,但大小不会超过100MB。
创作者可以在这样一个大小的游戏中做任何需要的内容——添加一个开场动画,播放音乐,等等。
以上内容需要独立于主体游戏,并按照通用技巧生成安卓或iOS的包。
同时,带下载器的游戏应该能询问玩家是否想下载,以及提示内容付费和非Wifi环境等情况,并最终下载主体游戏。
这里是一个带下载器游戏的脚本样例,使用了一些“教程”的资源:
# 此url指向创作者Web服务器上的updates.json。
define URL = "https://www.domain.com/game-updates/updates.json"
# 带下载器的游戏禁用存档
define config.save = False
define e = Character("Eileen", image="eileen")
label splashscreen:
scene bg washington
show eileen happy at left
$ downloader = updater.start_game_download(URL)
e "Welcome to the downloader game."
e "欢迎使用带下载器的游戏。"
e "本游戏会在把主体游戏下载到你手机上,然后你就可以玩了。"
if downloader.download_total:
$ download_mb = int(round(downloader.download_total / 1024 / 1024, 0))
e "如果想要运行主体游戏,你需要下载 [download_mb] MB的数据。如果你此时不是使用WiFi,请注意移动流量消耗。点击屏幕将开始下载。"
else:
e "如果想要运行主体游戏,你需要下载一些数据。如果你此时不是使用WiFi,请注意移动流量消耗。点击屏幕将开始下载。"
$ update.continue_game_download()
这是一个十分简单的脚本,依然有一些东西值得说明。
首先是将 config.save 设置为False。这点很重要,禁用存档和读档功能后,下载器就不会影响主体游戏。
其次,脚本主要内容都在splashscreen中,不会进入游戏菜单界面。
在脚本开头就调用 updater.start_game_download() 收集下载信息。
接着,为了消耗一些时间便于后台计算下载容量,让艾琳随便说点什么。
当玩家点击了几次屏幕后,下载器可能会算出待下载的容量,也可能还没算出来。
所以我们用一个条件语句检查下载容量。如果下载数值是已知的,则转换为MB并显示。
如果下载数值是未知的,则显示笼统的文本。(也可以写死代码,显示一个估算的下载数据量。)
最后,调用 updater.continue_game_download() 启动下载流程。显示现在界面时,玩家不能操作什么。
但音乐和各种ATL动效都会持续运行。
下载完毕后,主体游戏会自动启动。如果下载失败,下载器会重启并提供玩家再次尝试下载。