Flashゲヌムをどのように近代化したか



この投皿では、FlashゲヌムのFrogFractionsを最新のプラットフォヌムに導入した方法を玹介したす。その結果、Haxeを䜿甚しおUnityに郚分的に自動化されたポヌトを䜜成したした。この投皿は、コヌドベヌスをFlashにアップグレヌドしようずしおいる人にずっお興味深いものです。投皿には、Frog FractionsGame of the DecadeEditionずそのDLCHopのIconicCapの構造に関するネタバレが含たれたす。



埌カ゚ル画分2は、私をリッチにするこずができなかった、私がやっおおよそ䞀幎を過ごした契玄の仕事を しおスケッチ/詊䜜したす。それから劻が劊嚠し、家族を逊うために本圓の仕事を探す時が来たず思いたした。 GDC 2018の開始前に、私は䌚議で適切な人を芋぀けるこずを期埅しお、仕事を探すこずに぀いおのツむヌトを投皿したした。いく぀かの堎所でむンタビュヌを受けたしたが、最も重芁なこずは、次のプロゞェクトの資金を芋぀けるこずができたこずです。



プロゞェクトは次のようなものでした。次のFrogFractionsゲヌムをFrogFractions 1内に隠し、Steamで販売したす。



Frog Fractionsは、Actionscript 3の玄13k行のコヌドであり、Flexコンパむラを䜿甚しお構築されおいたす。新しいリマスタヌコンテンツを远加するず、ボリュヌムは3倍になり、玄4䞇行のコヌドになるず思いたした。そしお私の芋積もりは非垞に正確であるこずが刀明したした-元のゲヌムに加えお、カットシヌン/ダむアログツリヌ甚の28k Cコヌドず3k行のスクリプトが刀明したした。



さらに䜜業するためのいく぀かの可胜なオプションを怜蚎したした。



  • AS3 Adobe AIR. , :

    • Frog Fractions 640x480. . 2012 , , 2020 Steam .
    • Flex , 10k , . 40k ? ( , , .)
    • Flash . AIR 2020 ? (, ! .)
    • , - . , Scaleform (The Banner Saga, Road Not Taken), , Scaleform - 2020 . (, 2018 Autodesk Scaleform, — UI.)
  • Flash VM -. Flash , . Ruffle. , ?
  • C#/Unity. .
  • : Flash, , Unity. , «-» . , , , Unity, Windows. ( , , , TCP- . Flash , , Unity, .)
  • Haxe OpenFL. as3hx AS3 Haxe, OpenFL Flash API. OpenFL , .


ここで匷調したいのは、これらすべおのアプロヌチは、FrogFractionsが本質的にSWFにコンパむルするために䜜成したプログラムであるずいう事実に基づいおいるずいうこずです。それがFlashアニメヌションのタむムラむンであり、その盞互䜜甚がスクリプトによっお提䟛されおいる堎合、私の゜リュヌションがあなたのゲヌムにどのように適甚できるかを刀断できたせん。



私は前進する方法に぀いおアドバむスを求めたしたが、最も有甚なものはLars Dusetから提䟛されたした。圌は、HaxeにはCバック゚ンドがあり、そのタヌゲットプラットフォヌムはUnityである可胜性があるず述べたした。圌はたた、最初にワヌクフロヌを考え出し、それを䜿甚しお小さなプロゞェクトを移怍するようにアドバむスしおくれたした。



私自身ぞの泚意ゲヌムのクレゞットにLars Doucetを远加しおください。私たちの通信を読み盎すたで、圌がプロゞェクトにどれほどの圱響を䞎えたかは想像できたせんでした。



1週間の実隓の埌、Unity゚ディタヌでFrog InfarctionsSosa Sosovskiの0時間のゲヌムゞャムを曞いたゲヌムを実行するこずができたした。結果は完璧ではありたせんでしたが、実装の実珟可胜性を理解するのに十分だったので、私はメむンプロゞェクトに取り組み始めたした。



これが私のワヌクフロヌの結果です。これらの操䜜は1回実行する必芁がありたす。



  • as3hxを䜿甚しお、コヌドをAS3からHaxeに倉換したす。
  • 必芁に応じお、生成されたas3hxコヌドを手動でクリヌンアップしたす。


その埌、次の操䜜を繰り返し実行したす。



  • コヌドベヌスをHaxeに移怍しお、FlashAPIの代わりにUnityAPIを䜿甚したす。
  • C#- Haxe Haxe C#. Haxe, UnityEngine.dll, API hx. Assembly-Csharp.dll C#, .
  • Unity.


䜜業の最初の週は非垞に面倒でした。as3hxが䞍敎合ずしおマヌクした匏をクリヌンアップし、远加されたコンパむラ゚ラヌを修正し、I / O呌び出しを凊理する必芁がありたした。 Haxeのバグの修正は完党ではないため、どんなに頑匵っおもビルドしようずするたびに玄30の゚ラヌが発生し、すべおが゚ラヌなしでコンパむルされるたで、どれだけ完了に近いかわかりたせんでした。たた、as3hxは怜玢ず眮換のトランスレヌタであり、ASTずの間で倉換を行う実際のトランスパむラヌではないようです。これは、コヌドを括匧の反察偎に配眮するなどの゚ラヌが远加されるためです。フロヌ制埡は、特定のスタむルのブラケットを䜿甚したす。



これで、Cタヌゲットに正垞にコンパむルできるHaxeコヌドベヌスを取埗したした。その埌、AS3コヌドに觊れたこずはありたせん。 以䞋で説明するグラフィカルなアセット゚クスポヌトプロセスを陀きたす。この時点で、Haxeを捚おお、Cで䜜業するこずにしたしたが、as3hxの出力は元のコヌドず非垞に䌌おいたすが、䞭括匧のスタむル、コヌドの順序、コメントを維持しながら、Haxeからの出力はCは明らかに人間の目のためのものではありたせん。そのため、今埌、新しいシヌンを䜜成しなかった堎合は、Haxeコヌドを線集し、Cでコンパむルしたした。



この時点で、コヌドはUnity゚ンゞンでコンパむルおよび実行されたしたが、I / Oはありたせんでした。次のステップは、UnityAPIを䜿甚しおすべおのI / Oコヌドを再䜜成するこずでした。これずリ゜ヌスの倉換には玄4か月かかりたした。これは䞻に、FrogFractionsにさたざたなリ゜ヌスタむプがあるためです。



  • Flash゚ディタヌで描画されたベクタヌグラフィック。私はそれを4kずしおレンダリングし、AIRに元のゲヌムをビルドさせたしたが、アニメヌションフレヌムをレンダリングしおPNGファむルに曞き蟌むだけでした。次に、TexturePackerを䜿甚しお、それらをスプラむトシヌトに組み立おたした。
  • , Flash Shape API. Flash , , Photoshop . . Unity . , , 9-slices, .
  • SVG, OpenClipArt.org. , , .
  • , Flickr. preserve details Photoshop, , 4k- , .
  • . , . , 4k. , , — !
  • . Flash- , Marching-Cubes . 4k, , . , .
  • , .
  • . 2015 Unboxing Story Unity API . 2018 . !
  • . .wav .
  • MP3 64kbps mono, , , Amazon S3, , OST.




フルスクリヌンシェヌダヌずビデオ再生を陀くリマスタヌのすべお、および新しいストヌリヌのほずんどは、Unityシヌングラフのオブゞェクトずしおではなく、Graphics.DrawMesh呌び出しを䜿甚しおレンダリングされたす。だから問題は、Unityは本圓にこのプロゞェクトにぎったりなのかずいうこずです。CraigTympaniず私がGlittermittenGroveの゚ンゞンを遞択しお



いる間、FNAのため、クロスプラットフォヌムのサポヌトが優れおいるため、Unityに萜ち着きたした。ただ準備ができおいたせん。独自の゚ンゞンを構築するこずは、ゲヌムを決しお終わらせないための優れた方法だからです。最終的に、Unityの2Dサポヌトが䞍十分であるこずに悲しみたしたが、MacずLinuxのバヌゞョンをほずんど問題なくリリヌスするこずができたした。これは、私の意芋では倧成功です。 おそらく、Unityの2Dサポヌトは2015幎以降改善されおいたすが、私はそれを研究しおいたせん。Graphics.DrawMeshは私にずっおは問題なく動䜜したす。たぶん、FNAでさえ、リ゜ヌス凊理パむプラむンが機胜するようになりたした



このプロゞェクトでは、䞻に慣性によっおUnityを遞択したした。 -䞊蚘の研究プロゞェクトを実斜しなければならなかったので、新しい゚ンゞンをわざわざ勉匷したくありたせんでした。 Unityは、コン゜ヌルを含め、ゲヌムを移怍したいすべおのプラットフォヌムをサポヌトしおいたす。



ああ、それから私は远加のゲヌムを䜜成したしたこのクリ゚むティブなプロセスに぀いおは、おそらく別の投皿で説明したす。ここでは、Haxeでトランゞションシヌンをたずめ、残りの新しいゲヌムをCで䜜成したこずだけを説明したす。さらに、Haxeコヌドベヌス内のメむンメニュヌに倧幅な倉曎を加えたした。したがっお、Haxeに移怍した埌、Haxeで開発を行うこずにより、コヌドの曎新をリリヌスし続けるこずはかなり可胜であるように思われたす。



たた、元のコヌドにいく぀かの最適化を行いたした。 AS3コヌドは、「完璧なコヌド」を目指しお努力するこずを避けようずしおいたため、効率を考慮せずに意図的に䜜成されたした。たずえば、すべおの算術挔算のヒヌプにVector2を割り圓おるこずで逃げるこずができるずは信じられたせんでした。結果の結果は2012幎のコンピュヌタヌでうたく機胜したしたが、二重倉換埌のパフォヌマンスが最も悪い郚分はかなりの負荷を匕き起こしたため、最新のPCでうたく機胜するには、ネむティブCでコヌドの䞀郚を曞き盎す必芁がありたした。



たた、元のゲヌムのサむズを倧幅に拡倧する予定がなく、Flashず䞀緒に死なないようにしようずした堎合は、OpenFL、AIR、たたはRuffleの方が賢明な遞択になる可胜性があるこずにも泚意しおください。



ゲヌムをリリヌスするこずは、圌女に別れを告げるようなものでした。私はFlashでの䜜業を楜しんだ。圓時、これは最小限の劎力でゲヌムを人々に芋せるための最良の方法であり、圌らは氞遠に生きおいるように芋えたした。90幎代のSWFは、数十幎経っおも最新のFlashプレヌダヌで問題なく動䜜したす。明らかに準備ができおいないずきに䞖界がHTML5に移行しようずするのを芋るのは、倧倉なこずでした。率盎に蚀っお、状況は良くなるどころか悪化したす。最も人気のある2぀のブラりザヌの所有者が独自の電話アプリストアを持っおいる限り、ブラりザヌが再び再生可胜なプラットフォヌムになるこずはないず思いたす。圌は新しいゲヌムを売りたいず思っおいたしたが、ゲヌムの歎史の䞀郚を維持したいずいう誠実な願望からも。私ず䞀緒に圌女に戻っおきおくれおありがずう



All Articles