Раннее проект, пытающийся перенести флэш-игру Incredibots 2 CE в TypeScript и Pixi.js.
Инструкции по среде разработки в дальнейшем не применяются к версии HTML5.
Спасибо, что скачали невероятные! Будьте готовы к строительству, контролю и поделитесь своими собственными творениями роботов на игровой площадке, основанной на физике!
Чтобы запустить Incredibots или Incredibots2, просто откройте файл Incredibots.html или Incredibots2.html в веб -браузере с установленным флеш -плеер.
Наслаждаться!
Исходный код для игровых клиентов IB1 и IB2 расположен в подкатариях SRC/Incredibots и SRC/Incredibots2. Откройте IDE ActionScript по вашему выбору (я использовал Flex Builder 3) и создайте новый проект, используя соответствующий каталог. Основной файл приложения, выполняемый в основном, должен быть установлен на main.as, и я использовал 30-грамотр-карт. Также обязательно ссылайтесь на библиотеку flgui.swc в папке Libs. Исходный код содержит несколько [встраиваемых] утверждений, которые, как я считаю, могут работать только с гибким застройщиком, но другие IDE, вероятно, имеют аналогичные методы связи с активами.
После того, как все будет настроено и правильно компилируется, IDE должна создать папку Bin-Debug (или что-то подобное), содержащая SWF и HTML-файл, который внедряет SWF. Теперь вы сможете внести изменения в код и увидеть их отраженные в застроенной SWF!
Я дам базовый обзор ключевых классов в коде клиента, в надежде прояснить, как именно работает. Основным классом приложений является MANE.S, который заботится о добавлении слушателей событий на стадию и определению того, какой класс «контроллера» активен. Вы можете думать о контроллере как о свободном представлении одного типа «экрана». Есть один для основного меню, а затем один для основного игрового экрана, с подклассами для всех различных типов основных игровых экранов (т.е. 1 подкласс для каждого учебника, 1 для режима песочницы, 1 для режима создания вызова и т. Д.). (К сожалению, несколько монолитный) класс, который обрабатывает большую часть основной функции редактирования робота, является Controlergame, которая имеет методы реагирования на все кнопки и варианты меню, которые доступны при редактировании робота, а также методы для обработки, удаления, выбора, перемещения и редактирования деталей робота. Массив Allparts в Controlergame представляет робота, над которым в настоящее время работает, как множество частей. Он также обрабатывает запуск и остановку симуляции Box2D
Пакет деталей содержит определения класса для каждого типа «части, доступной при создании робота». IE Circle, прямоугольник, фиксированный соединение, вращающийся соединение, двигатели и т. Д. Каждый экземпляр этих классов содержит все данные об этой конкретной части, например, Revolutejoint имеет переменные элемента для прочности сустава, скорости, независимо от того, включен ли мотор или нет, управляющие клавиши, которые могут быть прикреплены к аоркуру и т. Д. Настройки, ограничения вызов).
Пакет Actions просто содержит список действий, которые могут выполняться пользователем в режиме редактирования. Эти действия используются исключительно по функциям «отмены» и «повторно», и каждое действие знает, что необходимо сделать, чтобы отменить или переделать его.
Входной класс обрабатывает все взаимодействия клавиатуры и мыши с элементами, не связанными с GUI, и отправляет вызовы к соответствующим методам (обычно в Controlergame), чтобы ответить на заданный щелчок мыши или нажатие клавиши.
Класс Draw имеет дело с рисунком роботов на экране. Есть 2 случая, с которыми он должен иметь дело: режим редактирования и режим моделирования. В режиме редактирования он привлекает все формы на экран на основе текущего массива деталей. В режиме SIM он рисует формы на основе позиционирования представления этих частей Box2D, но в обоих случаях они должны выглядеть одинаково. Теоретически, этот класс довольно модульный и должен быть в состоянии поменять альтернативный класс, используемый для рисования на экране довольно легко, в случае, если вы хотели бы написать свои собственные методы для борьбы с графикой роботов.
В пакете графического интерфейса есть куча классов, которые строят различные панели и окна с графическим интерфейсом на протяжении всей игры. Наиболее важным из них является, вероятно, класс SaveloadWindow, который обрабатывает отображение списка роботов, доступных для загрузки с сервера. Он также обрабатывает высокие оценки, сохранение и загрузку роботов, повторения и вызовы, а также поиск роботов и тому подобное. В настоящее время он отключен, поскольку серверы снижаются, но если другой сервер когда -либо будет подняться, этот класс должен быть изменен. Другие классы в этом пакете включают в себя guiwindow, который является базовым классом для всех маленьких всплывающих диалогов на протяжении всей игры, и компоненты, такие как Gubutton, Guitextarea и т. Д.
Наконец, класс базы данных обрабатывает все взаимодействия с сервером. Он имеет операции для сохранения и загрузки роботов и воспроизведения, а также для получения списков каждого из них, а также для входа в систему, создание нового пользователя, загрузки/загрузки результатов и еще несколько. Каждая операция имеет соответствующую функцию обратного вызова, которая обрабатывает результат, возвращаемый сервером, и возвращает данные обратно в соответствующий класс для отображения. Следует отметить, что функции Putxintobytearray и Extractxfrombytearray, где x - один из «робота», «воспроизведения» или «вызов». Эти функции используются для чтения и записи внутриигровых данных на или из флэш-байта. Робот, воспроизведение или вызов затем отправляются на сервер в качестве части данных Post Data of UrlRequest. Эти функции также используются функциями «импорта» и «экспорта» в качестве простого способа преобразования между игровыми объектами и текстом. Если вы хотите добавить функции, которые необходимо сохранить вместе с роботом, воспроизведением или вызовом, вам, скорее всего, необходимо явно поместить их в одну из этих функций.
Код сервера - это все, что содержатся в подпапке HTDOCS. Это написано полностью в PHP. Сначала я расскажу о коде сервера базы данных.
Код базы данных находится в ./SRC/HTDOCS/INCREDIBOTS® или 2]/Database/Distory. Невероятные были построены с использованием Amazon S3 и Simpledb в качестве бэкэндов. Вы можете прочитать больше об этом по адресу http://aws.amazon.com. Большая часть кода сервера DB написана специально с учетом этого, и, к сожалению, я никогда не получал его, чтобы рефакторировать его так, чтобы уровень базы данных был абстрактным в общем пакете. Таким образом, это может быть много работы, чтобы переключиться на что -то вроде MySQL, хотя это будет работать так же хорошо, как и SimpledB и S3, если их правильно сохранить.
Обратите внимание, что Incredibots также использует MySQL через базу данных форумов PHPBB. Поскольку у нас был один логин как для игры, так и для форумов, все учетные записи пользователей управляются через таблицу PHPBB_USERS на форумах. Вот почему код форумов PHPBB включен в пакет, мне пришлось внести несколько модификаций кода форумов, чтобы заработать один логин, а также несколько других функций, таких как возможность встраивать роботов в посты на форуме. Тем не менее, базовый вход и создание новых учетных записей должны работать с любой версией работы PHPBB, и не должно быть слишком сложно изменить функции входа в систему для работы с любой базой данных/системой, которую вы хотите.
Текущий код базы данных должен работать нормально из коробки с любой учетной записью Amazon AWS. Единственные вещи, которые должны нуждаться в изменении, - это учетные данные в файле common_variables.php. Кроме того, каждый файл PHP GGSCores _*. Соответствует одной из 20 или около того операций DB, которые клиент может вызвать. Все вызовы первоначально направлены на ggscores.php, который включает в себя правильный файл, соответствующий параметру «OP». Затем каждая операция разговаривает с базой данных Amazon (или таблицей PHPBB_USERS в MySQL) и отражает ответ для клиента. Двоирные данные для всех роботов, повторных и проблем отправляются на сервер через данные HTTP POST и сохраняются в S3 в виде каплей, с небольшим количеством метаданных для каждого хранящегося в Simpledb.
Примечание. Одна вещь, которая может быть хорошей идеей, - это проверка контрольной суммы MD5 при отправке двоичных данных с клиента на сервер, чтобы защитить от коррупции пакетов. Я знаю, что это произошло в прошлом несколько раз, и когда это происходит, пораженный робот/воспроизведение/вызов становится коррумпированным и теряется навсегда ... (Dun Dun Dun!)
Остальная часть кода сервера содержит в основном компоненты веб -сайта Incredibots. Страница index.php содержит код для встраивания SWF и правильно его отображения. Чтобы разместить SWF, вы просто загрузили файл SWF, который является результатом построения клиента, названного Incredibots.swf (или Incredibots2.swf) в тот же каталог, что и index.php. Страница users.php также здесь, которая отображает все роботы, воспроизведения и проблемы, загруженные данным пользователем на (несколько) хорошо отформатированной веб -странице.
Изначально был спроектирован Райан Кларк, запрограммированный Оливером Трухильо, с искусством от Мэтта Парри. Большое количество кредитоспособности также должно перейти к Эрин Кэтто и физическому двигателю Box2D, а также в его порт флэш -порта, на котором создана наша игра. http://www.box2d.org/ http://box2dflash.sourceforge.net/
Невероятный, наверное, игра, над которой мне было очень весело работать. Это был взрыв, проверяющий все сумасшедшие творения, сделанные сообществом «Невероятные», и я желаю вам всего наилучшего в поддержании невероятного. Ура и счастливое здание бота!
- Оливер