# FlashゲームをHTML5へ移植する

> Flashのプラグインは現代のどのブラウザでも動かない。HTML5が置き換えのランタイムであり、そこへ行くには作り直しかエミュレーターが要る。

- URL: https://www.summerengine.com/ja/port-flash-game-to-html5
- Keyword: FlashゲームをHTML5へ移植する
- Related: https://www.summerengine.com/ja/porting

FlashゲームのHTML5への移植とは、権利のあるゲームを今も存在するブラウザのランタイム向けに作り直すことだ。Adobeは2020年12月31日にFlash Playerの提供を終え、ブラウザはプラグインへの対応を完全に取り除いた。

正直な道は二つある。Ruffleのような企画を使うエミュレーションは、WebAssemblyを通して元のSWFをブラウザで動かすもので、保存と記録のためには正しい答えだ。作り直しは現代のエンジンでゲームを書き直し、タッチ対応、ワイド画面、セーブ、更新、そして後から同じゲームをデスクトップやモバイルのストアへ出す道を与える。

Summer Engineの立ち位置をはっきりさせておく。SummerでGDScriptを使って作り直したゲームは、webビルドを書き出してSummer Gamesで公開できる。Steam向けのデスクトップビルドやitch.ioのダウンロード版としても出せる。原版をそのままブラウザで遊べるようにしたいなら、自分のSWFをRuffleでエミュレートするのが現実的な道だ。ActionScript 3への対応は作品によってはまだ不完全なので、早めに自分のゲームをRuffleで試しておく価値がある。

## エミュレーションと作り直しの選び方

目的がプレイヤーや記録のために原版をそのまま保つことで、マウスとキーボードだけ、固定のステージの大きさ、更新なしを受け入れられるなら、エミュレーションを選ぶ。タッチ、ワイド画面と可変の配置、本物のセーブ、解析、収益化、あるいはSteamやアプリストアでのリリースが欲しいなら、作り直しを選ぶ。Summerでの作り直しは、Summer Games上のwebビルドとしても、デスクトップビルドとしても出せる。作り直しは、誰もがデスクトップのマウスを使っていたから成立していた原版の部分を直すこともできる。

## 権利のあるSWFからアセットを取り戻す

FLAが残っているならそこから始め、ベクターのシンボルをSVGか高解像度のPNGとして、音声をOGGとして書き出す。FLAがない場合でも、抽出のツールで自分のSWFから埋め込みのビットマップと音を取り出せるし、デコンパイラでActionScriptを復元して参照に使える。ベクターのアニメーションはスプライトシートかスケルタルのアニメーションとして作り直す。これは自分が作ったか、リメイクの明確なライセンスを持つゲームにだけ行う。

## 設計を変えるwebのランタイムの制約

ブラウザは最初の操作があるまで音声を止めるので、クリックで開始する画面を足す。ファイルシステムがないのでセーブはブラウザのストレージへ行き、利用者に消されうる。ダウンロードの大きさは誰かが待つかどうかを直接決めるので、テクスチャと音声を圧縮し、できるものは順次読み込む。モバイルのブラウザはメモリの制限が厳しく、キーボードもない。タブが背面に回ったら一時停止して扱い、フレーム数ではなく時間差を使って可変のフレームレートを扱う。

## HTML5のゲームが今いる場所

ポータルの時代はプラグインとともに終わったが、webでの配布は終わっていない。itch.ioは合計500 MB、1ファイル200 MB、ファイル数1,000という制限の範囲内でHTML5のビルドを直接置ける。Newgroundsは今もゲームを動かしている。webゲームのパブリッシャーやまとめサイトはHTML5のタイトルをライセンスし、流入か売上の分配で支払う。自分のドメインで自前配信することもでき、シングルスレッドのビルドなら特別なヘッダーは不要、スレッドを使うビルドには生成元をまたぐ分離のためのヘッダーが要る。Summerで作り直したゲームは、Summer Games上のwebビルドとして、またはitch.ioやSteamのデスクトップ向けダウンロード版としてプレイヤーに届く。

## FAQ

### SWFは自動でHTML5に変換できるか

確実にはできない。自動の変換ツールは単純なアニメーションは扱えるが、ActionScriptのロジックで壊れる。頼れる選択肢は二つ、RuffleのようなWebAssemblyのプレイヤーでSWFをエミュレートするか、現代のエンジンでゲームを作り直すことだ。

### Flashが動かなくなったのはなぜか

Adobeが2020年12月31日にFlash Playerの対応を終え、2021年1月からコンテンツの遮断を始めたからだ。ブラウザはそれが依存していたプラグインの仕組みを取り除いたので、現代のブラウザはSWFをそのままでは動かせない。

### webのビルドでC#を使えるか

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

### 作り直したゲームは電話で動くか

そのように設計すれば動く。タッチ操作、可変の配置、そして低いメモリとダウンロードの予算を足す。Flashのゲームはマウスを前提にしていたので、タッチは割り当ての変更ではなく設計の変更になる。

### 作り直したゲームをブラウザの外でも出せるか

出せる。Summerで作り直したゲームは、Steamやitch.io向けのデスクトップビルドとして出せ、モバイルのビルドには各プラットフォームのツールチェーンと署名が要る。GDScriptで作り直したゲームは、Summer Games上のwebビルドとしても出せる。

[作り直しを始める](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