Меню Закрыть

Angry birds level editor

Содержание

Часть 0. С которой всё началось

Захотелось мне однажды покопаться в скриптах Angry Birds с одному мне известными целями. Я, конечно, ожидал наткнуться внутри на какие-нибудь интересности, но даже и подумать не мог, что среди них будет вполне рабочий редактор уровней. Сначала я объясню, как я получил такой результат, а в конце статьи приведу описание и скриншоты редактора, опишу простой путь включения редактора.

Часть 1. Процесс

Приготовления

Для последующей работы нам понадобятся следующие инструменты:

  • LUA Compiler
  • OpenSSL
  • HEX-редактор

Работать будем с Angry Birds Rio или Angry Birds Space, т.к. в них присутствуют почти все необходимые для редактора файлы.

Если всё это в наличии, тогда в путь. Если вам будет скучно читать первую часть статьи, пролистайте до второй, она вам понравится больше.

Своей целью мы выберем файл datascriptsoptions.lua, т.к. его содержимое представляет из себя просто список переменных, которые мы сможем беспрепятственно поменять. Заглянем в файлик и ничего не поймём. Вероятно, файл зашифрован.

Расшифровать

С определённой версии игры все файлы шифруются 256-битным алгоритмом AES CBC с пустым initial vector и вшитыми в код ключами. Если кто хочет повозиться с дебагером, подробное описание процесса есть по этой ссылке.

Для расшифрования я использовал OpenSSL.

Angry Birds Rio:

Angry Birds Space:

Angry Birds Seasons:

Для зашифрования, соответственно, убираем ключик -d.

После этой процедуры у нас получится вполне читаемый lua-скрипт, жаль, что скомпилированный. Заглянем в заголовок, видим LuaQ, следовательно, это Lua 5.1.

Декомпилировать

Казалось бы, что проще. Скачать один из декомпиляторов и натравить его на получившийся файл. Ан-нет. Попробуем получить листинг скомпилированного options.lua с помощью luac -l.

Как видим, заголовок повреждён. Возможно, требуется другая версия компилятора, возможно ещё что-то, чего я не учёл, т.к. под lua почти не кодил. Факт остаётся фактом. Сравниваем заголовок нашего файла с заголовком любого другого скомпилированного lua:

Не вдаваясь в детали, что значит эта 08, меняем её на 04 и пробуем получить листинг. Вуаля:

Привожу тот же самый файл в более читаемом виде:

Здесь мы уже видим несколько интересных переменных, а именно: releaseBuild, showEditor и cheatsEnabled. Меняем их и собираем всё обратно.

Собрать как было

Первоначально я хотел просто скомпилировать свой собственный скрипт с таким содержанием, подправить заголовок и зашифровать. Но как-то это не заладилось, игра ни в какую не хотела принимать мой файлик за options.lua. Решение было найдено простое — исправить оригинальный файлик hex-редактором. Не ахти какой метод, но для наших целей сгодится. Итак, исправляем, проверяем листинг, возвращаем заголовок, шифруем, закидываем назад в игру.

Часть 2. Результат

Заходим в игру и сразу видим некоторые изменения в главном меню:

Кликаем по «Editor» и видим список уровней, которые можно изменять. Стрелки снизу пролистывают пакеты уровней, так что вы вполне можете создавать свои уровни в одном из незанятых пакетов:

Теперь кликнем на один из уровней и попадём непосредственно в редактор:

Негусто, надо сказать. Из интерфейса лишь несколько надписей и обозначений. Основная работа производится с помощью горячих клавиш. Потыкав всевозможные клавиши с полчасика, я составил их краткое описание:

Читайте также:  Macbook pro для видеомонтажа
Работа с объектами
12 разместить каменные конструкции
QW разместить деревянные конструкции
AS разместить стеклянные конструкции
NM разместить песчаные блоки
ZX,JK разместить декорации
34 разместить птичек
TY разместить врагов и запертых птиц (для игровой механики одно и то же)
UI разместить активные объекты
OP разместить награды
delete удалить объект
shift+r повернуть объект
Камера
ctrl+shift+c центрировать камеру
ctrl+shift+b показать весь уровень
Другое
tab включить/отключить физику
shift+t сменить фон
shift+s заморозка (. )
ctrl+s сохранить уровень
end quick end (. )

Скорее всего это не все горячие клавиши, можете поискать другие.

Подводные камни

Редактор работает далеко не идеально. Часть ресурсов редактора отсутствует, поэтому при нажатии определённых клавиш работа игры может внезапно завершиться. Как минимум в версии Rio редактор сохраняет уровни в нескомпилированном виде, поэтому, чтобы увидеть уровень в игре, необходимо его предварительно скомпилировать нужной версией компилятора и зашифровать. При должном усердии можно попробовать подправить игру так, чтобы она использовала уровни в нескомпилированном виде, но это выходит далеко за рамки данной статьи. Также я не нашёл способа передвинуть рогатку внутри редактора. Вероятно, сделать это можно только прямым редактированием файла уровня.

Angry Birds Space

В этой версии редактор значительно доработан, теперь работает меню свойств объектов, появились сенсоры, работать с редактором стало удобнее, появился специальный редактор объектов. Тем не менее, редакторы регулярно подглючивают. Я не проверял, починили ли сохранение уровней в этой версии, оставляю это читателю.

Несколько скриншотов версии Space:

Бархатный путь

Я не предлагаю читателю самостоятельно повторять мою работу. Для включения редактора достаточно скачать этот архив и заменить файл options.lua соответствующим файлом из архива. Версии игры, на которых проверены эти файлы: Angry Birds Space 1.2.0 и Angry Birds Rio 1.4.4

ВНИМАНИЕ
Перед проведением любых операций настоятельно рекомендуется сохранить резервные копии файлов игры, включая сохранения. Во-первых вы можете испортить оригинальные уровни игры, а во-вторых данная замена также включает читы. Для использования читов нажимайте цифровые клавиши. Среди читов есть, например, такие, которые сразу проходят всю игру или дают все награды. Если вы не хотите потерять всё своё прохождение, делайте резервные копии.

Данная новость будет интересна всем любителям замечательной игры Angry Birds. Ведь каждый из вас хотя-бы раз да задумывался, как бы было классно самому создать уровень для любимой игры! И вот теперь, у вас такая возможность появилась!

Редактор уровней для Angry Birds работает в любом html5 совместимом браузере, вроде последних версий Chrome, Firefox, Opera, Safari, а так же во встроенном браузере microb Nokia N900.

Точно подходит для MeeGo/Maemo и ПК версии. На Symbian^3, Android и iPhone проверяйте сами.

Ниже приведенна подробная инструкция по созданию уровней на комьютере:

Перед нами несколько панелей управления.
Сверху вниз:
1) Панель с кодом уровня
2) Панель с Персонажами игры и предметами окружающей среди.
3) Панель Рабочая область (в которой и создаём наш уровень)

2. Создаём надпись из нерушимых блоков.

3. Добавляем Свиней и Птичек.

Как построить порядок выстреливания птичек, я так и не понял.

4. Ставим динамит вокруг свиней.

5. Копируем код из "Панели с кодом уровня", чтобы обновить код жмём на кнопку "save changes".

Читайте также:  Windows 10 секреты и хитрости

6. Открываем папку с уровнями, на ПК к примеру "Рабочий столAngry Birdsdatalevelspack1" и открываем любой уровень с помощью блокнота.

P.S. Когда откроете уровень блокнотом, там будет написана неимоверная белиберта в разнобой, не обращаем внимание, а выделяем всё и удаляем, и вместо этого вставляем наш код с "Панели с кодом уровня". И сохраняем изменения.
Порядок уровней не всегда соответствует своим именам.

7. Далее открываем игру и тестируем своё детище.


На MeeGo/Maemo в основном всё также, только:

Копируете файл (например 1.txt) с текстом уровня для Angry Birds в корень памяти Nokia N900 (/home/user/MyDocs/)

Запускаете консоль (X-Terminal)
Становитесь рутом (root или sudo gainroot)

Делаете резервную копию того уровня который хотите заменить (например Level1.lua)

Копируете свой (1.txt) уровень вместо стандартного (в нашем случаи Level1.lua)

Запускаете Angry Birds и выбираете в 1 паке 1 уровень

Все остальные уровни следует искать по пути /home/opt/rovio/angrybirds/data/levels/packX.

Автор урока по редактированию на ПК — madfive5.
Автор редактора — forcer.

Часть 0. С которой всё началось

Захотелось мне однажды покопаться в скриптах Angry Birds с одному мне известными целями. Я, конечно, ожидал наткнуться внутри на какие-нибудь интересности, но даже и подумать не мог, что среди них будет вполне рабочий редактор уровней. Сначала я объясню, как я получил такой результат, а в конце статьи приведу описание и скриншоты редактора, опишу простой путь включения редактора.

Часть 1. Процесс

Приготовления

Для последующей работы нам понадобятся следующие инструменты:

Работать будем с Angry Birds Rio или Angry Birds Space, т.к. в них присутствуют почти все необходимые для редактора файлы.

Если всё это в наличии, тогда в путь. Если вам будет скучно читать первую часть статьи, пролистайте до второй, она вам понравится больше.

Своей целью мы выберем файл datascriptsoptions.lua, т.к. его содержимое представляет из себя просто список переменных, которые мы сможем беспрепятственно поменять. Заглянем в файлик и ничего не поймём. Вероятно, файл зашифрован.

Расшифровать

С определённой версии игры все файлы шифруются алгоритмом 256-битным AES CBC с пустым initial vector и вшитыми в код ключами. Если кто хочет повозиться с дебагером, подробное описание процесса есть по этой ссылке.

Для расшифрования я использовал OpenSSL.

Angry Birds Space:

Angry Birds Seasons:

Для зашифрования, соответственно, убираем ключик -d.

После этой процедуры у нас получится вполне читаемый lua-скрипт, жаль, что скомпилированный. Заглянем в заголовок, видим LuaQ, следовательно, это Lua 5.1.

Декомпилировать

Казалось бы, что проще. Скачать один из декомпиляторов и натравить его на получившийся файл. Ан-нет. Попробуем получить листинг скомпилированного options.lua с помощью luac -l.

Как видим, заголовок повреждён. Возможно, требуется другая версия компилятора, возможно ещё что-то, чего я не учёл, т.к. под lua почти не кодил. Факт остаётся фактом. Сравниваем заголовок нашего файла с заголовком любого другого скомпилированного lua:

Не вдаваясь в детали, что значит эта 08, меняем её на 04 и пробуем получить листинг. Вуаля:

Привожу тот же самый файл в более читаемом виде:

Здесь мы уже видим несколько интересных переменных, а именно: releaseBuild, showEditor и cheatsEnabled. Меняем их и собираем всё обратно.

Читайте также:  Photoshop возникла проблема с генератором
Собрать как было

Первоначально я хотел просто скомпилировать свой собственный скрипт с таким содержанием, подправить заголовок и зашифровать. Но как-то это не заладилось, игра ни в какую не хотела принимать мой файлик за options.lua. Решение было найдено простое — исправить оригинальный файлик hex-редактором. Не ахти какой метод, но для наших целей сгодится. Итак, исправляем, проверяем листинг, возвращаем заголовок, шифруем, закидываем назад в игру.

Часть 2. Результат

Заходим в игру и сразу видим некоторые изменения в главном меню:

Кликаем по «Editor» и видим список уровней, которые можно изменять. Стрелки снизу пролистывают пакеты уровней, так что вы вполне можете создавать свои уровни в одном из незанятых пакетов:

Теперь кликнем на один из уровней и попадём непосредственно в редактор:

Негусто, надо сказать. Из интерфейса лишь несколько надписей и обозначений. Основная работа производится с помощью горячих клавиш. Потыкав всевозможные клавиши с полчасика, я составил их краткое описание:

Работа с объектами
12 разместить каменные конструкции
QW разместить деревянные конструкции
AS разместить стеклянные конструкции
NM разместить песчаные блоки
ZX,JK разместить декорации
34 разместить птичек
TY разместить врагов и запертых птиц (для игровой механики одно и то же)
UI разместить активные объекты
OP разместить награды
delete удалить объект
shift+r повернуть объект
Камера
ctrl+shift+c центрировать камеру
ctrl+shift+b показать весь уровень
Другое
tab включить/отключить физику
shift+t сменить фон
shift+s заморозка (. )
ctrl+s сохранить уровень
end quick end (. )

Скорее всего это не все горячие клавиши, можете поискать другие.

Подводные камни

Редактор работает далеко не идеально. Часть ресурсов редактора отсутствует, поэтому при нажатии определённых клавиш работа игры может внезапно завершиться. Как минимум в версии Rio редактор сохраняет уровни в нескомпилированном виде, поэтому, чтобы увидеть уровень в игре, необходимо его предварительно скомпилировать нужной версией компилятора и зашифровать. При должном усердии можно попробовать подправить игру так, чтобы она использовала уровни в нескомпилированном виде, но это выходит далеко за рамки данной статьи. Также я не нашёл способа передвинуть рогатку внутри редактора. Вероятно, сделать это можно только прямым редактированием файла уровня.

Angry Birds Space

В этой версии редактор значительно доработан, теперь работает меню свойств объектов, появились сенсоры, работать с редактором стало удобнее, появился специальный редактор объектов. Тем не менее, редакторы регулярно подглючивают. Я не проверял, починили ли сохранение уровней в этой версии, оставляю это читателю.

Несколько скриншотов версии Space:

Бархатный путь

Я не предлагаю читателю самостоятельно повторять мою работу. Для включения редактора достаточно скачать этот архив и заменить файл options.lua соответствующим файлом из архива. Версии игры, на которых проверены эти файлы: Angry Birds Space 1.2.0 и Angry Birds Rio 1.4.4

ВНИМАНИЕ
Перед проведением любых операций настоятельно рекомендуется сохранить резервные копии файлов игры, включая сохранения. Во-первых вы можете испортить оригинальные уровни игры, а во-вторых данная замена также включает читы. Для использования читов нажимайте цифровые клавиши. Среди читов есть, например, такие, которые сразу проходят всю игру или дают все награды. Если вы не хотите потерять всё своё прохождение, делайте резервные копии.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.