FlashゲームをHTML5へ移植する

FlashゲームをHTML5へ移植する

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

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のデスクトップ向けダウンロード版としてプレイヤーに届く。

よくある質問

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ビルドとしても出せる。

さらに見る

Summer Engine で創るその他の方法

AI ゲームメーカー

説明するだけで完全な 2D・3D ゲームを作れるハブ。

開く

Port a Flash game to Steam

Flash Player was discontinued at the end of 2020. A Flash game reaches Steam by being rebuilt as a native desktop game, not by being wrapped.

開く

Port a Flash game to platforms that still exist

Adobe ended Flash Player support on December 31, 2020. Porting a Flash game means rebuilding a title you own so it runs on platforms people still use.

開く

Port a 3DS game to Steam

Rebuild a 3DS game you own in Summer Engine, then export a Windows, macOS, or Linux build and publish it on Steam.

開く

Port a 3DS game to iOS

Rebuild a 3DS game you own in Summer Engine, then export a signed build for iPhone and iPad and submit it to the App Store.

開く

Port a 3DS game to Android

Rebuild a 3DS game you own in Summer Engine, then export an Android App Bundle and publish it on Google Play.

開く

Port a 3DS game to PC

Rebuild a 3DS game you own in Summer Engine, then export Windows, macOS, and Linux builds and distribute them however you like.

開く

Port a 3DS game to Switch

Rebuild a 3DS game you own in Summer Engine and ship it on PC first. A Switch version needs Nintendo approval and usually a licensed porting partner.

開く

Port a 3DS game to web

A browser build of a 3DS game you own needs a small payload, touch and keyboard input, and the right host. Summer Engine exports web builds for GDScript projects.

開く

プラットフォーマーのテンプレート

既成のプロジェクトから始めて、変更を説明するだけ。

見る

すべてのゲームテンプレートを見る

既成のプロジェクトから始めて、変更を説明するだけ。

見る

今すぐゲーム制作を始めよう

Summer Engine をダウンロードして、作りたいものを説明するだけで形になっていきます。無料で始められ、コーディングは不要です。