移植 3DS 游戏到网页

把 3DS 游戏移植到网页

在 Summer Engine 里重建一款你拥有的 3DS 游戏,再导出一个能在桌面和手机浏览器里运行的 HTML5 构建。

把 3DS 游戏移植到网页,意思是在 Summer Engine 里重建一款你拥有的游戏,并导出一个能在浏览器标签页里运行的 HTML5 构建。网页构建是把可玩版本摆到人们面前最便宜的方式,因为不用安装、没有商店、也不用审批。

网页同时也是这里约束最多的目标。构建必须先下载完才有人能玩,它在内存受限的浏览器沙盒里运行,音频在玩家与页面交互之前不能开始,而且没有文件系统。

动手之前有一条产品事实很重要:在 Summer Engine 里你可以用 C++、GDScript 或 C# 写游戏,而 C# 在除网页之外的每个地方都能用。如果浏览器构建在计划之内,游戏逻辑就用 C++ 或 GDScript。

下载体积决定你的跳出率

桌面玩家愿意等 Steam 下载,因为他们已经做出了承诺。网页玩家是在进度条走动时评判你的游戏。给初始载荷定预算,压缩贴图和音频,剔掉未使用的资源,后面的关卡用流式加载而不是一次性全发。3DS 规格的美术预算是实打实的优势:240p 年代的精灵和小模型能压成几秒就加载完的载荷,而这正是浏览器构建需要的。

无法退出的浏览器沙盒规则

在玩家点击或点按之前音频不会播放,所以用一个开始按钮把游戏挡住,别自动播放音乐。存档写进浏览器存储,玩家随时可以清掉,所以把它当作方便而非永久,并在进度重要时提供导出或云端选项。内存比原生更紧。有些功能,包括多线程构建,需要托管该构建的服务器设置特定的跨源隔离头,所以在依赖它们之前先确认你的托管是否允许。

一个构建里同时支持键盘、鼠标和触摸

同一个网页构建会被带键盘的桌面加载,也会被带触摸屏的手机加载。两者都要检测并支持。鼠标很好地承接原来的触控笔交互。触摸需要更大的点击目标。键盘需要一套避开浏览器快捷键的布局。接上手柄时,可以通过浏览器手柄 API 工作。也要处理失焦:玩家会切换标签页,而一个在后台仍然全速运行的游戏会耗干笔记本电量,然后被关掉。

网页构建托管在哪里

itch.io 是托管可玩网页构建的标准去处,上传即可,没有守门人。Newgrounds、itch 上的合集和游戏 jam 页面也是同样的方式。你也可以把构建嵌进自己的站点,对一个你想在媒体邮件或 Steam 页面里放链接的演示来说,这是更好的选择。网页版本和付费桌面版本可以共存:浏览器构建当演示,桌面构建是人们掏钱买的东西。

常见问题

我能把 3DS 游戏放进浏览器吗?

你可以重建一款你拥有的 3DS 游戏,并导出成在浏览器里运行的 HTML5 构建。那是一次真正的游戏移植,不是一个模拟器页面。在浏览器里跑别人的卡带数据是另一回事,也不是 Summer Engine 的用途。

网页导出能用 C# 吗?

不能。在 Summer Engine 里 C++、GDScript 和 C# 都可用,而 C# 在除网页之外的每个目标上都能用。如果浏览器构建在你的计划里,就用 C++ 或 GDScript 写游戏逻辑,这样同一个项目也能导出到网页。

我的网页构建为什么一开始不出声?

浏览器在用户与页面交互之前会拦住音频。在游戏前面放一个开始或点击游玩的界面,让第一次用户手势解锁音频上下文,之后再开始音乐和音效。

网页构建把进度存在哪里?

存在浏览器存储里,玩家可以清掉,而且它不会跟到另一台设备或另一个浏览器。把存档数据做小,如果进度重要,就提供导出码、文件下载,或基于账号的存档。

网页移植适合当 Steam 发行的演示吗?

适合,而且这是网页导出最实用的用途之一。把一小段可玩切片托管在 itch.io 或你自己的站点上,从商店页面和媒体联络里链接过去,把完整体验留给人们付费购买的桌面构建。

继续探索

用 Summer Engine 创作的更多方式

现在就开始制作你的游戏

下载 Summer Engine,描述你想要的,看着它逐渐成形。免费开始,无需编程。