こんにちは。CYBIRD Advent Calendar 2025 11日目担当の@cy-seiyanです。
イケメンシリーズにてクライアントサイド・サーバサイドの二刀流エンジニアをしております。
10日目は@cy_kkobaさんによる「複数人でのUI制作をスムーズにするための運用tips」でした。
自己紹介
私はガラケー・スマホ向けのブラウザゲームのエンジニアとしてキャリアをスタートし、サイバードに入社してから最初はサーバサイドエンジニアとしてAPI開発やバグ修正、サーバ負荷試験やパフォーマンスチューニング等を行いイケメンシリーズを支えてきたのですが、入社以前から業務経験を積みたいと思っていたUnityを使用したクライアントサイドも担当させてもらい、人の目に映る部分や派手で目立つ部分の開発、アプリをリリースする上で必要な内容の対応等を行っております。
今回のお話
Unityを使用したクライアントサイドを行っていく中で今ではモバイル端末で表現できる内容が増え時代の流れと共に技術やコンテンツの進化は凄まじいと感じております。
そこで今回はガラケー・スマホ向けブラウザゲームが全盛期だった頃にゲーム内の演出周りで採用されていたFlashを再生させる為に使用していたツールやFlashに関連する私の実体験についてお話をしようと思います。
Swfmill
攻撃力や防御力といったプログラムから渡されるパラメータを使用したバトルシーン等の動的なFlashを再生させる為に、SWFファイルとXMLファイルを相互に変換できるSwfmillというオープンソースのツールを使用しておりました。
私は当時、Flashを再生させる為に必要なパラメータをプログラム側から文字列変換等を行ってパラメータを受け渡してサーバ上でXMLをSWFに変換して再生させておりました。
以下のコマンドで最初に元となるSWFファイルをXMLファイルに変換しプログラム側から必要なパラメータを受け渡せる様にXMLファイルの編集を行っておりました。
swfmill swf2xml ◯◯◯.swf(元となるSWFファイル) ◯◯◯.xml(変換後のXMLファイル)
その後、作成したXMLからSWFを生成しFlashを再生させていました。
swfmill xml2swf ◯◯◯.xml(編集したXMLファイル) ◯◯◯.swf(変換後に再生させるSWFファイル)
また、自分が当時担当していたプロジェクトではSwfmillを動かすとWebサーバの負荷が上昇しゲーム自体のパフォーマンスに影響が出てしまう事から、Webサーバのロードアベレージが一定値を超えたらSwfmillのプロセスをkill(稼働中のプロセスを終了)する様にしていました。
ガラケーからスマホへ端末が移り変わる
スマホの流れがやって来た頃、iOSはFlash非対応、AndroidOSは2系までならSWFの再生は可能だが3系から非対応という事実に対して、スマホ上でFlashを使用したゲーム内の演出を再生させるにはどうしたいいか世の中がざわついておりました。
その頃、DeNAとグリーからそれぞれのプラットフォームでスマホ用のFlashを再生させる為のツールが発表されました。
「Reel」と「ExGame」
グリーからReel、DeNAからはExGameというFlash変換ツールが発表され、これを使用するとSWFファイルをJavascriptに変換しスマホ上でもFlashを再生出来るというツールが登場しました。
しかし、どちらのツールもプラットフォームに依存しておりReelはGREE、ExGameはMobageでしか使用できませんでした。
Swiffy
当時、私が担当していたゲームはReelやExGameが使用できないゲームプラットフォームに展開しており、他プラットフォームでもスマホ上でFlashを再生させるにはどうしたら良いのか騒いでいた頃、GoogleからSwiffyというツールが発表されました。
特定のプラットフォームに依存せずSWFからHTML5(Javascript)に変換し、SWFを再生した時と比較し再現率も高いとの事で使用していました。
尚、変換されたファイルのコードはminifyされていて、例えばキャラクターの攻撃力等のパラメータを受け渡して端末上で表示させる為に変換されたファイルの中身を編集する必要があったのですが、コードの中身を追う事が大変でした。
Swiffyのサービス停止と代替案
スマホ上でFlashを再生させる為にSwiffyを重宝していたのですが、Googleから2016年7月を以てSwiffyのサービスを停止するという発表がなされ、当時私が居た現場は騒然としました。
スマホ上でFlashを再生させるにはSwiffyの存在は必要不可欠だった為、代替できるツールは無いかと調査が行われたのですが、そこでPexJSというツールに出会いました。
DeNAの「ExGame」とパフォーマンス的にほぼ同等であり且つFlash Lite1.1をサポートしている点から早速これを使う事になり、どうにかして難を逃れる事が出来ました。
まとめ
Flashを再生させる為にガラケーでは100KBのページサイズ制限に引っかからないように演出内で使用する絵素材の画質を下げたりアニメーション演出を一部カットしたり、スマホではOSの仕様や使用するサービスの状況によって結構振り回されたりしたと感じました。
ここまで読んで頂き誠にありがとうございました。ブラウザゲームにFlashという存在が必要不可欠だった事とこれらのゲームが一時代を築いた事を覚えて頂けたら幸いです。
CYBIRD Advent Calendar 2025 12日目は@shiso_cさんの「Geminiと二人三脚でゲームを作ってみた話」です。
Geminiを活用したゲーム開発、凄く気になります…ッ!
お楽しみに!!