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

> Flash Playerは2020年末に提供を終えた。FlashのゲームがSteamに届く道は、包み直しではなくネイティブのデスクトップゲームとして作り直すことだ。

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

FlashゲームのSteamへの移植とは、権利のあるゲームをネイティブのデスクトップのビルドとして作り直すことだ。Flash Playerのランタイムは2020年12月31日に提供を終え、2021年には遮断された。SWFを包んで出すことは成立するリリースではない。

Flashのゲームの多くはポータル向けに作られていた。短い一回の遊び、固定された一つのステージの大きさ、マウスを前提にした操作、セーブの仕組みなし、ポーズなし。Steamでのリリースはその期待をすべて変える。プレイヤーは解像度の選択肢、コントローラ対応、クラッシュしても残るセーブ、そして購入に見合うだけの内容を求める。だからFlashからSteamへの企画は、たいてい半分が移植で半分が拡張になる。

Summer Engineはゲームを自分のものであるプロジェクトとして作り直し、Steamやitch.io向けのデスクトップビルドとして書き出せるようにする。コードはC++とGDScriptで、C#はデスクトップエディタで使える。ロイヤリティも売上分配もない。

## Flashからコンテンツを取り出す

FLAの元データが残っているなら、シンボルをPNGの連番かSVGとして書き出し、音声はWAVかOGGとして書き出す。ベクターのアートは任意の解像度で書き出し直せる。これはFlashのアートが古いドット絵に対して持つ唯一の本当の利点だ。SWFしか残っていない場合でも、自分のファイルから埋め込みの画像と音声を取り出せるツールがあり、デコンパイラでActionScriptを復元して資料として読める。これは自分が権利を持つか明確にライセンスを受けたゲームにだけ行う。

## ActionScriptから現代の言語へ

ActionScript 3はクラスに基づく言語で、GDScriptやC#の隣に置いても見慣れて見える。変わるのはランタイムの考え方のほうだ。表示リストはノードのツリーになり、MovieClipのタイムラインはアニメーションプレイヤーになり、enterFrameはprocessのコールバックになり、Eventのリスナーはシグナルになる。ロジックを書き直し、調整の値は保つ。30フレーム毎秒のステージでのフレーム基準のタイミングは、60フレーム毎秒以上でも同じ挙動になるよう時間差に基づく形へ変換する。

## FlashのゲームがSteamのゲームになる前に必要なもの

セーブの仕組みを足す。Flashのゲームの多くはポータルのクッキーに頼るか、何もなかったからだ。ポーズメニュー、解像度と全画面の選択肢、音量スライダー、割り当て変更できる操作を足す。Steam Inputを通してゲームパッドに対応する。固定の800x600のステージを、UIを引き伸ばさずに現代のワイド画面の解像度へ拡大する。内容の長さも考える。十五分のポータルのゲームは、Steamのレビューを生き延びるためにたいていモード、レベル、進行の追加が要る。

## リリース前の権利

ストアページを出す前に、何を誰が持っているかを確認する。Flashのゲームの多くはスポンサー付きだったり、ポータルへ独占でライセンスされていたり、購入した効果音のパックやライセンスした音楽で作られていた。スポンサーの契約が配布の権利を与えていて、それが今も効いていることもある。設計、アート、音声の権利を持っている場合か、持っていない部分を差し替えた場合にだけ、作り直しを出す。

## FAQ

### SWFをデスクトップのアプリで包んでSteamに出せばよいのでは

その道は壊れやすく時代遅れだ。Flash Playerは2020年末に提供を終えている。Ruffleのような企画によるエミュレーションはブラウザ向けの保存には有効だが、商用のSteamでのリリースには、セーブ、設定、コントローラ対応を備えたネイティブの作り直しのほうが向く。

### FLAのファイルを失くした。それでも移植できるか

ゲームの権利があるなら、たいていできる。埋め込みのアートと音声は自分のSWFから取り出せるし、ActionScriptはデコンパイラで復元して作り直しの仕様として読める。

### ActionScriptは自動で変換されるか

されない。GDScript、C#、C++で書き直す。クラスの構造は移しやすいが、表示リストとタイムラインの挙動はノードとアニメーションで作り直す必要がある。

### 古いFlashのゲームはSteamで売れるか

内容の追加と現代的な利便性があってこそだ。Steamの購入者は、セーブ、設定、コントローラ対応、そしてポータルのゲームより長い遊びを期待する。成功したFlashからSteamへのリリースは、直訳の移植ではなく拡張したリメイクであることが多い。

### Steamでの公開にはいくらかかるか

一タイトルあたり100米ドルの一回限りのアプリ申請料で、売上1000米ドルの後に回収でき、加えてValveの売上分配がある。Summer Engineはロイヤリティを足さない。

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