# 把 3DS 游戏移植到网页

> 一款你拥有的 3DS 游戏要做成浏览器版本，需要较小的包体、触控和键盘输入，以及合适的托管平台。Summer Engine 可以为 GDScript 项目导出网页版本。

- URL: https://www.summerengine.com/zh/port-3ds-game-to-web
- Keyword: 移植 3DS 游戏到网页
- Related: https://www.summerengine.com/zh/porting

把 3DS 游戏移植到网页，意思是重建一款你拥有的游戏并导出浏览器版本，通常是 WebAssembly 加 WebGL。网页版本是把可玩版本摆到人们面前最便宜的方式，因为不用安装、没有商店、也不用审批。

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

动手之前有一条产品事实很重要。Summer Engine 可以为 GDScript 项目导出网页版本，也就是一个 .zip 文件，你把它发布到 Summer Games，玩家就能在浏览器中游玩。C# 项目无法导出到网页。下文说明浏览器版本需要什么。

## 下载体积决定你的跳出率

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

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

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

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

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

## 网页构建托管在哪里

itch.io 是托管可玩网页版本的标准去处，上传即可，没有守门人，但有总大小 500 MB、单个文件 200 MB、最多 1000 个文件的限制。Newgrounds、itch.io 上的合集和游戏 jam 页面也是同样的方式。你也可以把版本嵌进自己的站点。网页版本和付费桌面版本可以共存，浏览器版本当试玩，桌面版本是人们掏钱买的东西。用 Summer 的话，你可以在 Steam 页面旁边把网页版本发布到 Summer Games。

## FAQ

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

你可以重建一款你拥有的 3DS 游戏，并用支持网页导出的引擎导出为浏览器版本。那是一次真正的游戏移植，不是一个模拟器页面。用 Summer 的话，用 GDScript 重建的游戏可以导出网页版本，你把它发布到 Summer Games。在浏览器里跑别人的卡带数据，不是 Summer Engine 的用途。

### 网页导出能用 C# 吗？

用 C# 不行。Godot 4 无法把 C# 项目导出到网页，这一点在 Summer 中同样成立。在 Summer 中，GDScript 项目可以导出网页版本，你把它发布到 Summer Games。C# 可在桌面编辑器中用于制作桌面版本。

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

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

### 网页构建把进度存在哪里？

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

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

适合，浏览器试玩片段是最实用的试玩形式之一，因为谁都不用安装任何东西。用 Summer 的话，你可以把 GDScript 网页版本发布到 Summer Games，并从商店页面和媒体联络中链接过去。

[开始重建](https://www.summerengine.com/zh/download)

---

## Machine-readable resources

- Site index for agents: https://www.summerengine.com/llms.txt
- Full inlined content: https://www.summerengine.com/llms-full.txt
- Porting catalog: https://www.summerengine.com/llms-porting.txt
- Structured catalog: https://www.summerengine.com/agent-catalog.json
- Sitemap: https://www.summerengine.com/sitemap.xml
- Developer resources: https://www.summerengine.com/docs
- Summer API (assets from any agent or code; public per-call model prices): https://docs.summerengine.com/api