Flash Game Incredibots 2 CEをTypeScriptおよびPixi.jsに移植しようとする初期段階のプロジェクト
開発環境の指示以下の指示は、HTML5バージョンには適用されません。
信じられないほどダウンロードしていただきありがとうございます!物理学ベースの遊び場で、独自のロボット作品を構築、制御、共有する準備をしてください!
IncredibotsまたはIncredibots2を実行するには、Flash PlayerがインストールされたWebブラウザでファイルIncredibots.htmlまたはIncredibots2.htmlをファイルを開くだけです。
楽しむ!
IB1およびIB2ゲームクライアントのソースコードは、SRC/IncredibotsおよびSRC/Incredibots2サブディレクトリにあります。選択したActionScript IDEを開き(Flex Builder 3を使用しました)、適切なディレクトリを使用して新しいプロジェクトを作成します。メインの実行可能アプリケーションファイルはMain.ASに設定する必要があります。また、パラメロフォールトフレームレート30をコンパイラ引数として使用しました。また、LIBSフォルダーのFLGUI.SWCライブラリにリンクしてください。ソースコードにはいくつかの[埋め込まれた]ステートメントが含まれています。これは、フレックスビルダーでのみ動作する可能性があると考えていますが、他のIDEは同様の資産を持っている可能性があります。
すべてがセットアップされ、プロジェクトが適切にコンパイルされると、IDEはSWFとSWFを埋め込むSWFとHTMLファイルを含むBin Debugフォルダー(または同様のもの)を作成する必要があります。これで、コードに変更を加えて、構築されたSWFに反映されていることがわかります!
クライアントサイドコードの主要クラスの基本的な概要を説明します。これは、すべてが正確にどのように機能するかを明確にすることを期待しています。メインアプリケーションクラスはMain.ASです。これは、イベントリスナーをステージに追加し、どの「コントローラー」クラスがアクティブであるかを決定することに注意します。コントローラーは、1つのタイプの「画面」を大まかに表すものと考えることができます。メインメニュー用に1つ、メインゲーム画面用に1つあり、さまざまな種類のメインゲーム画面にサブクラスがあります(チュートリアルごとに1つのサブクラス、サンドボックスモード用1、チャレンジモードの作成など)。ほとんどのメインロボット編集機能を処理する(残念ながら、ややモノリシック)クラスはコントロールガームです。これは、ロボットの編集中に利用可能なすべてのボタンとメニューオプションに応答する方法を備えており、ロボット部品の作成、削除、選択、移動、編集の方法があります。 ControllerGameのAllParts配列は、現在作業中のロボットをパーツの配列として表しています。また、Box2Dシミュレーションの開始と停止も処理します
パーツパッケージには、ロボットを構築するときに利用可能な各タイプの部品のクラス定義が含まれています。 IEサークル、長方形、固定ジョイント、回転ジョイント、スラスタなど。これらのクラスの各インスタンスには、その特定の部分に関するすべてのデータが含まれています。たとえば、RevoluteJointには、コードに接続されている2つの形状など、「ロボット」または「チャレンジ」とは、「ロボット」と付随する「ロボット」とは、「ロボット」と魅力的なものとして、「ロボット」と呼ばれる「ロボット」のように、「ロボット」とは付いています。サンドボックスの設定、チャレンジ制限)。
アクションパッケージには、編集モードのときにユーザーが実行できるアクションのリストが含まれています。これらのアクションは、「元に戻す」および「やり直し」の機能によってのみ使用され、各アクションは、それを元に戻すために何をする必要があるかを知っています。
入力クラスは、すべてのキーボードとマウスの相互作用を非GUI要素と処理し、適切な方法(通常はコントロールガーム)に呼び出しをディスパッチして、特定のマウスクリックまたはキープレスに応答します。
ドロークラスは、画面へのロボットの描画を扱います。対処する必要がある2つのケースがあります:編集モードとシミュレーションモード。編集モードの場合、パーツの現在の配列に基づいてすべての形状を画面に描画します。 SIMモードでは、これらの部分のBox2D表現の位置付けに基づいて形状を描画しますが、両方の場合に同じように見えるようにする必要があります。理論的には、このクラスはかなりモジュール式であり、ロボットグラフィックスを扱うための独自の方法を書きたい場合に、画面への描画に使用される代替クラスと交換できるはずです。
GUIパッケージには、ゲーム全体にさまざまなGUIパネルとウィンドウを構築するクラスがたくさんあります。これらの中で最も重要なのは、おそらくSaveloadwindowクラスで、サーバーからロードできるロボットのリストを表示することを処理します。また、ロボット、リプレイ、課題の保存とロード、ロボットなどの検索も処理します。サーバーがダウンしているため、現在無効になっていますが、別のサーバーが上がった場合、このクラスを変更する必要があります。このパッケージの他のクラスには、ゲーム全体のすべての小さなポップアップダイアログのベースクラスであるGuiwindow、およびGuibutton、Guitextareaなどのコンポーネントが含まれます。
最後に、データベースクラスは、サーバーとのすべての対話を処理します。ロボットとリプレイの保存とロード、これらのそれぞれのリストを取得し、ログインし、新しいユーザーの作成、スコアのアップロード/ダウンロードなどのための操作があります。各操作には対応するコールバック関数があり、サーバーによって返される結果を処理し、データを適切なクラスに戻します。注目すべきは、Xは「ロボット」、「リプレイ」、または「チャレンジ」の1つである機能と抽出の機能とExtractXFromByTearrayです。これらの関数は、フラッシュバイテアレイとの間でゲーム内データを読み書きするために使用されます。その後、ロボット、リプレイ、またはチャレンジは、UrlRequestのポストデータ部分としてサーバーに送信されます。これらの関数は、ゲーム内のオブジェクトとテキスト間の簡単な変換方法として、「インポート」および「エクスポート」機能によっても使用されます。ロボット、リプレイ、またはチャレンジと一緒に保存する必要がある機能を追加する場合は、これらの関数のいずれかを明示的に配置する必要がある可能性が高いです。
サーバーコードは、HTDOCSサブフォルダー内に含まれるすべてです。完全にPHPで書かれています。最初にデータベースサーバーコードについて説明します。
データベースコードは、./src/htdocs/incredibots [1または2]/database/directoryにあります。 Incredibotsは、Amazon S3とSimpledBをバックエンドとして使用して構築されていました。これらの詳細については、http://aws.amazon.comをご覧ください。 DBサーバーコードのほとんどは特にこれを念頭に置いて記述されており、残念ながら、データベースレイヤーが共通のパッケージ内で抽象化されるようにリファクタリングすることはありませんでした。したがって、MySQLのようなものに切り替えるのは大変な作業かもしれませんが、適切に維持されるとSimpleDBとS3と同じように機能します。
Incredibotsは、PHPBBフォーラムデータベースを介してMySQLも使用していることに注意してください。ゲームとフォーラムの両方に単一のログインがあったため、すべてのユーザーアカウントはフォーラムのPHPBB_USERSテーブルを介して管理されます。これが、PHPBBフォーラムコードがパッケージに含まれている理由です。フォーラムコードを使用するために、フォーラムコードをいくつか変更して、フォーラムの投稿にロボットを埋め込む機能など、他のいくつかの機能を作成する必要がありました。とはいえ、基本的なログインと新しいアカウントの作成は、PHPBBの実行中のバージョンで正常に機能するはずです。ログイン機能を変更して、必要なデータベース/システムで動作することはそれほど難しくないはずです。
現在のデータベースコードは、Amazon AWSアカウントを使用して箱から出して正常に動作するはずです。変更が必要なのは、ファイルcommon_variables.phpの資格情報のみです。それとは別に、各ggscores _*。phpファイルは、クライアントが呼び出すことができる20程度のdb操作のいずれかに対応しています。すべての呼び出しは、最初はggscores.phpに送られます。これには、「op」パラメーターに対応する適切なファイルが含まれます。次に、各操作はAmazonデータベース(またはMySQLのPHPBB_USERSテーブル)に話しかけ、クライアントの応答をエコーアウトします。すべてのロボット、リプレイ、および課題のバイナリデータは、HTTP Postデータを介してサーバーに送信され、S3にBlobとして保存され、SimpledBに保存されている各メタデータがあります。
注:追加するのは良い考えかもしれませんが、パケットの破損を防ぐために、クライアントからサーバーにバイナリデータを送信する際のMD5チェックサムの検証です。私はこれが過去に数回起こったことを知っています、そしてそれが起こると、影響を受けたロボット/リプレイ/チャレンジが腐敗し、永遠に失われます...(Dun Dun Dun!)
サーバーコードの残りの部分には、Incredibots Webサイトの主にコンポーネントが含まれています。 index.phpページには、SWFを埋め込み、適切に表示するコードが含まれています。 SWFをホストするために、Incredibots.swf(またはIncredibots2.swf)という名前のクライアントの構築から生じるSWFファイルをindex.phpと同じディレクトリにアップロードするだけです。 users.phpページもここにあり、特定のユーザーが(やや)適切にフォーマットされたWebページにアップロードしたすべてのロボット、リプレイ、および課題を表示します。
Incredibotsはもともと、Ryan Clarkによって設計され、Oliver Trujilloがプログラムされ、Matt Parryのアートがありました。また、大量のクレジットは、Erin CattoとBox2D Physics Engine、およびゲームが構築されるフラッシュポートにも送信されます。 http://www.box2d.org/ http://box2dflash.sourceforge.net/
Incredibotsは、おそらく私が最も楽しいゲームだったゲームです。 Incredibotsコミュニティによって作られたすべてのクレイジーな作品をチェックアウトするのは爆発でした。乾杯と幸せなボットビル!
- オリバー