# 3DSゲームをWebへ移植する

> 権利のある3DSゲームのブラウザ向けビルドには、小さなデータ量、タッチとキーボードの入力、適切なホストが要る。Summer EngineはGDScriptプロジェクトのWebビルドを書き出せる。

- URL: https://www.summerengine.com/ja/port-3ds-game-to-web
- Keyword: 3DSゲームをWebへ移植する
- Related: https://www.summerengine.com/ja/porting

3DSゲームのWebへの移植とは、権利のあるゲームを作り直し、ブラウザ向けのビルドを書き出すことだ。通常はWebGLを使うWebAssemblyになる。Webビルドは遊べる版を人前に置く最も安い方法だ。インストールもストアも承認もないからだ。

Webはここで最も制約の多い行き先でもある。誰かが遊ぶ前にビルドをダウンロードさせる必要があり、メモリの限られたブラウザのサンドボックスの中で動き、プレイヤーがページを操作するまで音を鳴らせず、ファイルシステムがない。

始める前に一つの製品事実が効いてくる。Summer EngineはGDScriptプロジェクトのWebビルドを.zipとして書き出せる。それをSummer Gamesで公開すれば、ブラウザで遊んでもらえる。C#のプロジェクトはWebに書き出せない。以下はすべて、ブラウザ向けビルドに何が必要かの説明だ。

## ダウンロードの大きさが離脱率を決める

デスクトップのプレイヤーはSteamのダウンロードを待つ。すでに決めているからだ。Webのプレイヤーは読み込みのバーが動く間にゲームを値踏みする。最初に送る量を見積もり、テクスチャと音声を圧縮し、使っていないアセットを削り、後のレベルは全部を先に送らずストリーミングする。3DSの大きさのアート予算は本当の強みだ。240p時代のスプライトと小さなモデルは数秒で読み込める量に圧縮でき、それこそブラウザのビルドに必要なものだ。

## 抜けられないブラウザのサンドボックスの規則

プレイヤーがクリックかタップをするまで音は鳴らないので、音楽を自動再生せずスタートボタンの後ろにゲームを置く。セーブはブラウザのストレージに入り、プレイヤーがいつでも消せるので、恒久ではなく便利なものとして扱い、進行が重要なら書き出しかクラウドの選択肢を用意する。メモリはネイティブより厳しい。マルチスレッドのビルドを含む一部の機能は、ビルドを置くサーバーで特定のクロスオリジン分離のヘッダーが要るので、頼る前にホストが何を許すか確認する。

## 一つのビルドでキーボード、マウス、タッチ

同じWebのビルドが、キーボードのあるデスクトップでも、タッチ画面のスマートフォンでも読み込まれる。両方を検出して対応する。マウスはかつてのスタイラス操作をよく扱う。タッチには広い当たり判定が要る。キーボードにはブラウザのショートカットを避けた配置が要る。ゲームパッドは接続されていればブラウザのゲームパッドAPIで動く。フォーカスを失ったときの扱いも入れる。プレイヤーはタブを切り替えるので、背景で全速力で動き続けるゲームはノートPCの電池を減らし、閉じられる。

## ブラウザビルドをどこに置くか

itch.ioは遊べるWebビルドを置く標準の場所で、合計500 MB、1ファイル200 MB、ファイル数1,000という制限の範囲内なら審査なしでアップロードを受け付ける。Newgrounds、itch.ioのコレクション、ゲームジャムのページも同じように使える。自分のサイトに埋め込むこともできる。Web版と有料のデスクトップ版は共存できる。ブラウザのビルドがデモになり、デスクトップのビルドが買ってもらうものになる。Summerでは、WebビルドをSummer Gamesで公開し、Steamのページと並べて置ける。

## FAQ

### 3DSゲームをブラウザに載せられるか

Webエクスポートに対応したエンジンなら、権利のある3DSゲームを作り直し、ブラウザ向けのビルドとして書き出せる。それはエミュレータのページではなく、自分のゲームの本物の移植だ。Summerの場合、GDScriptで作り直したゲームはWebビルドを書き出し、Summer Gamesで公開できる。他人のカートリッジのデータをブラウザで動かすのは、Summer Engineの用途ではない。

### Web書き出しでC#は使えるか

C#ではできない。Godot 4はC#のプロジェクトをWebへ書き出せず、それはSummerでも変わらない。SummerではGDScriptのプロジェクトならWebビルドを書き出せ、Summer Gamesで公開できる。C#はデスクトップエディタで、デスクトップビルド向けに使える。

### Webビルドで最初に音が鳴らないのはなぜか

ブラウザはユーザーがページを操作するまで音を止める。ゲームの前にスタートまたはクリックして始める画面を置き、最初のユーザー操作で音声のコンテキストを解除してから音楽と効果音を始める。

### Webビルドは進行をどこに保存するか

ブラウザのストレージだ。プレイヤーが消せるし、別の端末やブラウザには付いてこない。セーブデータは小さく保ち、進行が重要なら引き継ぎコード、ファイルのダウンロード、アカウントに紐づくセーブを用意する。

### Webの移植はSteamリリースのデモとして有効か

有効だ。ブラウザで遊べる断片は誰も何もインストールしなくていいので、最も実用的なデモの一つだ。Summerなら、GDScriptのWebビルドをSummer Gamesで公開し、ストアページや広報からリンクできる。

[作り直しを始める](https://www.summerengine.com/ja/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