試圖將Flash Game Incredibot 2 CE移植到Typescript和Pixi.js的早期項目。
以下內容中的開發環境說明不適用於HTML5版本。
感謝您下載Incredibot!準備在基於物理的操場上建立,控制並分享自己的機器人創作!
要運行Incredibots或Incredibots2,只需在使用Flash Player安裝的Web瀏覽器中打開File Increbots.html或Incredibots2.html。
享受!
IB1和IB2遊戲客戶端的源代碼位於SRC/Inceeldibots和SRC/Inceeldibots2子目錄中。打開您選擇的ActionScript IDE(我使用了Flex Builder 3),並使用適當的目錄創建一個新項目。主運行的應用程序文件應設置為Main.AS,然後我將param-default-frame-fate 30用作編譯器參數。另外,請確保鏈接到libs文件夾中的flgui.swc庫。源代碼包含一些[嵌入式]語句,我認為可能只與Flex Builder一起使用,但是其他IDE可能具有類似的鏈接到資產的方法。
一旦設置了所有內容並正確編譯了項目,IDE應創建一個bin debug文件夾(或類似的內容),其中包含嵌入SWF的SWF和HTML文件。現在,您將能夠更改代碼,並在內置的SWF中看到它們反映了!
我將對客戶端代碼中的關鍵類進行基本概述,以期清楚一切正常工作。主應用程序類是main.as,它照顧將事件偵聽器添加到舞台上,並確定哪個“控制器”類處於活動狀態。您可以將控制器視為鬆散代表一種“屏幕”。主菜單上有一個,然後是主遊戲屏幕,其中一個用於所有不同類型的主遊戲屏幕的子類(即每個教程1個子類,Sandbox模式為1個,1用於創建挑戰模式等)。 (不幸的是,處理大多數主要機器人編輯功能的(有點單片)類是ControllerGame,它具有響應在編輯機器人時可用的所有按鈕和菜單選項的方法,以及處理創建,刪除,選擇,選擇,移動和編輯機器人零件的方法。 ControllerGame中的AllParts數組代表當前正在使用的機器人,作為一系列零件。它還處理啟動和停止Box2D模擬
零件軟件包包含構建機器人時可用的每種零件類型的類定義。 IE圓,矩形,固定關節,旋轉關節,衝擊者等。這些類別的每個實例都包含有關該特定部分的所有數據,例如,一個rocluteChoint具有成員變量的關節強度,速度,速度,是否啟用了電動機,是否啟用了控制密鑰,是否將其附加到代碼,一個'機器人''的零件,都可以在“機器人”中附加到一個附加的部分。沙盒設置,挑戰限制)。
操作包僅包含在編輯模式下用戶可以執行的操作列表。這些動作僅由“撤消”和“重做”功能使用,每個動作都知道要撤消或重做需要做什麼。
輸入類處理所有鍵盤和鼠標與非GUI元素的交互,並調用適當方法(通常在ControllerGame中)的調用以響應給定的鼠標單擊或按鍵。
Draw類處理機器人在屏幕上的圖紙。它需要處理2種情況:編輯模式和仿真模式。在編輯模式下,它會根據當前零件陣列繪製所有形狀到屏幕上。在SIM模式下,它會根據這些部分的Box2D表示的定位來繪製形狀,但在兩種情況下都需要使它們看起來相同。從理論上講,此類是模塊化的,應該能夠用替代類用於繪製屏幕上的替代類,如果您想編寫自己的方法來處理機器人圖形。
GUI軟件包有很多課程,可以在整個遊戲中構建各種GUI面板和窗戶。其中最重要的可能是Saveloadwindow類,該類處理顯示可從服務器加載的機器人列表。它還可以處理高分,節省和加載機器人,重播和挑戰,並尋找機器人等。由於服務器正在下降,因此目前是禁用的,但是如果另一台服務器上升,則必須修改此類。此軟件包中的其他類別包括Guiwindow,這是整個遊戲中所有小彈出對話的基礎類別,以及Guibutton,Guitextarea等組件。
最後,數據庫類處理與服務器的所有交互。它具有保存和加載機器人和重播的操作,以及獲取每一個列表的列表,以及登錄,創建新用戶,上傳/下載分數等等。每個操作都有相應的回調功能,該功能處理服務器返回的結果,並將數據返回到適當的類以顯示。值得注意的是putxintobytearray和extractxfrombyTearray的功能,其中x是“機器人”,“重播”或“挑戰”之一。這些功能用於讀取和寫入flash bytearray的遊戲中數據。然後將機器人,重播或挑戰發送到服務器,作為URLREQUEST的帖子數據部分。這些功能也由“導入”和“導出”功能使用,作為在遊戲內對象和文本之間轉換的簡便方法。如果要添加需要與機器人,重播或挑戰一起保存的功能,則很可能需要將它們明確地放入其中一個功能中。
服務器代碼是HTDOCS子文件夾中包含的所有內容。它完全寫在PHP中。我將首先討論數據庫服務器代碼。
數據庫代碼在./src/htdocs/incredibots [1或2]/數據庫/目錄中。 Incredibot是使用Amazon S3和SimpleDB作為後端構建的。您可以在http://aws.amazon.com上閱讀有關這些信息的更多信息。大多數DB服務器代碼都是專門編寫的,不幸的是,我從來沒有重構進行重構,以使數據庫層在公共軟件包中抽象。因此,切換到MySQL之類的東西可能會有很多工作,儘管如果正確維護,它的工作方式和SimpleDB和S3的工作原理可能會有效。
請注意,Incredibot還通過PHPBB論壇數據庫利用MySQL。因為我們在遊戲和論壇上都有一個登錄名,所以所有用戶帳戶均通過論壇的phpbb_users表管理。這就是為什麼PHPBB論壇代碼包含在軟件包中的原因,我必須對論壇代碼進行一些修改,以使單個登錄工作以及其他一些功能,例如將機器人嵌入在論壇帖子中的功能。也就是說,基本登錄和創建新帳戶應該可以在任何版本的PHPBB運行中都可以正常工作,並且更改登錄功能以與您想要的任何數據庫/系統一起使用,這不太困難。
當前的數據庫代碼應使用任何Amazon AWS帳戶開箱即用。唯一需要修改的內容是文件common_variables.php中的憑據。除此之外,每個GGSCORE _*。 PHP文件對應於客戶可以調用的20個左右操作之一。所有調用最初均針對GGSCORES.PHP,其中包括與“ OP”參數相對應的正確文件。然後,每個操作都會與Amazon數據庫(或MySQL中的PHPBB_USERS表)進行對話,並迴聲為客戶端發出響應。所有機器人,重播和挑戰的二進制數據通過HTTP POST數據發送到服務器,並將其保存在S3中,並將其保存在Blobs中,每個存儲在SimpleDB中的元數據量少量。
注意:一件事可能是一個好主意,是將二進制數據從客戶端發送到服務器時的MD5校驗和驗證,以防止數據包損壞。我知道這在過去幾次發生了,當它這樣做時,受影響的機器人/重播/挑戰就會腐敗,並且永遠失去了……(Dun Dun Dun Dun!)
服務器代碼的其餘部分主要包含Incredbibot網站的組件。 index.php頁麵包含嵌入SWF並正確顯示的代碼。為了託管SWF,您只需上傳由構建客戶端(或Inceeldibots.swf)(或Inceeldibots2.SWF)引起的SWF文件與index.php相同的目錄。 users.php頁面也位於這裡,它顯示了給定用戶在(某種程度上)格式很好的網頁中上傳的所有機器人,重播和挑戰。
Increbots最初是由瑞安·克拉克(Ryan Clark)設計的,由奧利弗·特魯希略(Oliver Trujillo)編程,由馬特·帕里(Matt Parry)的藝術品編程。艾琳·卡托(Erin Catto)和box2D物理引擎以及我們的遊戲的閃光燈端口也應獲得大量信用。 http://www.box2d.org/ http://box2dflash.sourceforge.net/
Incredibot可能是我從事最有趣的遊戲。這是一場爆炸,檢查了Incredibots社區所做的所有瘋狂創作,祝您一切順利,以保持Increbibot的發展。歡呼和快樂的機器人建築!
- 奧利弗