Flash Game Incredibots를 2 CE에 포팅하려는 초기 단계 프로젝트는 TypeScript 및 Pixi.js에
다음의 개발 환경 지침은 HTML5 버전에는 적용되지 않습니다.
Incredibots를 다운로드해 주셔서 감사합니다! 물리학 기반 놀이터에서 자신만의 로봇 창작물을 구축, 제어 및 공유 할 준비를하십시오!
incredibots 또는 incredibots2를 실행하려면 Flash Player가 설치된 웹 브라우저에서 incredibots.html 또는 incredibots2.html 파일을 열기 만하면됩니다.
즐기다!
IB1 및 IB2 게임 클라이언트의 소스 코드는 SRC/Incredibots 및 SRC/Incredibots2 하위 디렉토리에 있습니다. 선택한 ActionScript IDE를 열고 (Flex Builder 3을 사용 했음) 적절한 디렉토리를 사용하여 새 프로젝트를 만듭니다. 기본 실행 가능한 응용 프로그램 파일은 main.as로 설정되어야하며 Param-Default-Frame-Rate 30을 컴파일러 인수로 사용했습니다. 또한 Libs 폴더의 Flgui.swc 라이브러리에 링크하십시오. 소스 코드에는 몇 가지 [Embed] 문이 포함되어 있으며, Flex Builder 와만 작동 할 수 있다고 생각하지만 다른 IDE는 자산과 비슷한 방법을 연결하는 방법이있을 수 있습니다.
모든 것이 설정되고 프로젝트가 올바르게 컴파일되면 IDE는 SWF와 SWF를 포함하는 HTML 파일을 포함하는 Bin-Debug 폴더 (또는 유사한)를 생성해야합니다. 이제 코드를 변경하여 구축 된 SWF에 반영 될 수 있습니다!
클라이언트 측 코드의 주요 클래스에 대한 기본 개요를 제공하여 모든 것이 정확히 어떻게 작동하는지 명확하게 설명합니다. 기본 응용 프로그램 클래스는 Main.A이며, 이벤트 리스너를 단계에 추가하고 어떤 '컨트롤러'클래스가 활성화되는지 결정합니다. 컨트롤러를 한 유형의 '화면'을 느슨하게 나타내는 것으로 생각할 수 있습니다. 메인 메뉴에는 하나가 있고 메인 게임 화면에는 하나이며, 모든 다른 유형의 기본 게임 화면에 대한 서브 클래스가 있습니다 (예 : 자습서 당 1 하위 클래스, 샌드 박스 모드의 경우 1, 챌린지 모드 생성 모드 등). 대부분의 기본 로봇 편집 기능을 처리하는 (불행히도 다소 모 놀리 식) 클래스는 로봇을 편집하는 동안 사용할 수있는 모든 버튼 및 메뉴 옵션에 응답하는 방법과 로봇 부품을 처리, 삭제, 선택, 이동 및 편집하는 방법을 가지고있는 ControlLergame입니다. ControlleRgame의 AllParts 배열은 현재 작업중인 로봇을 다양한 부품으로 나타냅니다. 또한 Box2D 시뮬레이션을 시작하고 중지합니다
부품 패키지에는 로봇을 만들 때 사용할 수있는 각 유형의 '부품에 대한 클래스 정의가 포함되어 있습니다. IE Circle, 직사각형, 고정 조인트, 회전 조인트, 스러스터 등.이 클래스의 각 인스턴스에는 해당 특정 부분에 대한 모든 데이터가 포함되어 있습니다. 예를 들어, RevoluteJoint에는 모터가 활성화되었는지 여부에 관계없이 조인트 강도, 속도에 대한 멤버 변수가 있습니다. 제어 키는 코드에 부착 된 2 개의 형상 부품 등 '로봇'또는 도전에 따라 생각할 수 있습니다. 설정, 도전 제한).
액션 패키지에는 편집 모드에서 사용자가 수행 할 수있는 작업 목록이 포함되어 있습니다. 이러한 동작은 'undo'및 'redo'기능에 의해서만 사용되며, 각 동작은 실행 취소 또는 재조정을 위해해야 할 일을 알고 있습니다.
입력 클래스는 GUI가 아닌 요소와 모든 키보드 및 마우스 상호 작용을 처리하고 주어진 마우스 클릭 또는 키 프레스에 응답하기 위해 적절한 메소드 (일반적으로 컨트롤러 게임)로 호출을 발송합니다.
드로우 클래스는 로봇의 그림을 화면으로 처리합니다. 다루어야 할 두 가지 사례가 있습니다 : 편집 모드 및 시뮬레이션 모드. 편집 모드에서는 현재 부품 배열에 따라 모든 모양을 화면에 그립니다. SIM 모드에서는 해당 부품의 Box2D 표현의 위치에 따라 모양을 그립니다. 그러나 두 경우 모두 동일하게 보이게해야합니다. 이론적 으로이 클래스는 모듈 식이며 로봇 그래픽을 다루는 자체 방법을 작성하려는 경우 화면에 상당히 쉽게 그리기에 사용되는 대체 클래스로 교체 할 수 있어야합니다.
GUI 패키지에는 게임 전반에 걸쳐 다양한 GUI 패널과 창을 구축하는 많은 클래스가 있습니다. 이 중 가장 중요한 것은 아마도 Saveloadwindow 클래스 일 것입니다.이 클래스는 서버에서로드 할 수있는 로봇 목록을 표시하는 것입니다. 또한 높은 점수, 저축 및 로봇, 재생 및 도전 및 로봇 등을 검색합니다. 서버가 줄어들므로 현재 비활성화되어 있지만 다른 서버가 올라가면이 클래스를 수정해야합니다. 이 패키지의 다른 클래스는 게임 전반에 걸쳐 모든 작은 팝업 대화 상자의 기본 클래스 인 Guiwindow와 Guibitton, GuitextArea 등과 같은 구성 요소가 있습니다.
마지막으로 데이터베이스 클래스는 서버와의 모든 상호 작용을 처리합니다. 로봇 및 재생을 저장 및로드하고 각각의 목록을 얻고 로그인하고 새 사용자를 만들고 점수를 업로드/다운로드하는 작업을위한 작업이 있습니다. 각 작업에는 해당 콜백 함수가있어 서버에서 반환 한 결과를 처리하고 데이터를 적절한 클래스로 다시 표시 할 수 있습니다. x는 '로봇', '재생'또는 '도전'중 하나 인 putxintobytearray 및 extractxfrombytearray 기능이 주목할 만하다. 이러한 기능은 게임 내 데이터를 읽고 쓰기 위해 플래시 바이 래 레이에서 또는 쓰기에 사용됩니다. 그런 다음 로봇, 재생 또는 챌린지는 UrlRequest의 게시물 데이터로 서버로 전송됩니다. 이러한 기능은 '가져 오기'및 '내보내기'기능에 의해 게임 내 개체와 텍스트를 쉽게 변환하는 방법으로 사용됩니다. 로봇, 재생 또는 도전과 함께 저장 해야하는 기능을 추가하려면 이러한 기능 중 하나에 명시 적으로 넣어야 할 가능성이 높습니다.
서버 코드는 HTDOCS 하위 폴더에 포함 된 모든 것입니다. 전적으로 PHP로 작성되었습니다. 먼저 데이터베이스 서버 코드에 대해 이야기하겠습니다.
데이터베이스 코드는 ./src/htdocs/incredibots= 또는 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 작업 중 하나에 해당합니다. 모든 통화는 처음에 'op'매개 변수에 해당하는 적절한 파일을 포함하는 ggscores.php로 연결됩니다. 그런 다음 각 작업은 Amazon 데이터베이스 (또는 MySQL의 PHPBB_USERS 테이블)와 대화하고 클라이언트에 대한 응답을 설명합니다. 모든 로봇, 재생 및 챌린지에 대한 이진 데이터는 HTTP Post 데이터를 통해 서버로 전송되며 S3에 SMEPLEDB에 저장된 각각에 대해 소량의 메타 데이터가있는 S3로 저장됩니다.
참고 : 추가하는 것이 좋은 생각은 클라이언트에서 서버로 바이너리 데이터를 보낼 때 MD5 체크섬 유효성 검사입니다. 패킷 손상을 방지합니다. 나는 이것이 과거에 몇 번이나 일어났다는 것을 알고 있으며, 그렇다면 영향을받는 로봇/재생/챌린지는 부패하고 영원히 손실됩니다 ... (Dun Dun Dun!)
나머지 서버 코드에는 Incredibots 웹 사이트의 대부분 구성 요소가 포함됩니다. index.php 페이지에는 SWF를 포함하고 올바르게 표시하는 코드가 포함되어 있습니다. SWF를 호스팅하려면 incredibots.swf (또는 incredibots2.swf)라는 클라이언트를 구축 한 결과 SWF 파일을 index.php와 동일한 디렉토리에 업로드합니다. user.php 페이지도 여기에 있으며, 주어진 사용자가 (다소) 멋지게 포맷 된 웹 페이지에 업로드 한 모든 로봇, 재생 및 챌린지를 표시합니다.
Incredibots는 원래 Ryan Clark에 의해 Oliver Trujillo가 프로그래밍 한 Matt Parry의 예술과 함께 디자인되었습니다. 또한 많은 신용은 Erin Catto와 Box2D Physics Engine뿐만 아니라 우리 게임이 구축 된 플래시 포트로 가야합니다. http://www.box2d.org/ http://box2dflash.sourceforge.net/
Incredibots는 아마도 내가 가장 재미있는 게임 일 것입니다. 그것은 Incredibots Community가 만든 모든 미친 창조물을 확인하는 폭발이었고, 나는 당신에게 Incredibots를 계속 유지하는 데 최선을 다하기를 바랍니다. 건배와 행복한 봇 빌딩!
- 올리버