试图将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的发展。欢呼和快乐的机器人建筑!
- 奥利弗