Автор Тема: [NES] Super Mario Bros 2. Level editor  (Прочитано 9011 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
[NES] Super Mario Bros 2. Level editor
« : 20 Январь 2014, 04:23:10 »
Еще один редактор от меня, который, впрочем, был написан за год до nesprinced. И nesprinced, кстати, был написан в каком-то смысле на базе этого.
Естественно мне известно об уже существующем, но, при всем уважению к автору того редактора, он чрезвычайно неудобен и полноценно им пользоваться невозможно, так как обилие внутрекухонных объектов (типа Skip, Start page и т.д.) вводит пользователя в заблуждение, да и при сохранении файла на выходе получается зачастую совсем не то, что ожидалось.

Так вот о моем редакторе. Структура и формат данных брались из открытых источников и, частично, из исходников означенного существующего редактора (которые читать невозможно). Не сказать, что я его довел до ума, остановившись на версии 0.1beta, но все же, на мой взгляд, работать с ним приятнее, чем с первым.
Перечислю известные проблемы с моим редактором:
* В вертикальных комнатах объекты, которые находятся в самом низу, иногда перемещаются на одну позицию вверх;
* Структуры данных врагов иногда перехлестываются между комнатами и часть врагов из следующей комнаты может оказаться в предыдущей;
* Нет возможности полноценно редактировать комнаты с бонусами: они имеют несколько отличную структуру от других комнат (пример: уровень 1-2, комната, где находится гриб 1up в "кувшине"), поэтому (как и в исходном редакторе) в таких комнатах не отображаются враги;
* Иногда возникают проблемы при редактировании фона (стены, водопады и т.д.): не удается добавить объект или один фон "нахлестывается" на другой;
* Нет возможности "разблокировать" линки комнат, но это не мешает, если не хочется стереть все и построить всю игру с нуля;
* Неправильно рисуются лианы (можно увидеть в комнате 1-1, upwards part);
* Не отображаются некоторые объекты: пирамиды в пустыне, большие порталы и некоторые элементы замка в 7-2.

Перечисленные проблемы, которые возникают при сохранении файла, возникают достаточно редко. Остальные не сильно мешают.


Теперь об особенностях движка:
* В вертикальных комнатах двери можно ставить не на всех страницах. Если поставить дверь не в том месте "нужной" страницы или на "неправильной" странице, то в самом верху или в самом низу движок впадет в dead-lock, так как неправильно отработает прокрутка страниц;
* Двери, соединенные друг с другом,можно размещать только в определенных местах: если первая дверь стоит на позиции N (по оси X) от начала страницы, то ответная дверь должна располагаться в позиции 15-N от начала своей страницы. Например: первая дверь располагается в позиции 5 (начиная с 0), то ответная должна стоять на позиции 15-5 = 10 (начиная с 0) на своей странице. Аналогично и с лианами и прочими штуками, которые позволяют перемещаться;
* Переход в другую комнату через голову Hawkmouth не откроет игру в рулетку, если этот переход в подуровне N-3;
* В вертикальных уровнях использовать Potion нельзя;
* Birdo, в зависимость от позиции, будет иметь свой цвет (будет либо розовый, либо красный, либо серый. Причем, всего одна позиция отвечает за розового, одна позиция за красного, все остальные - отображают серого).

И о возможностях редактора:
* Свободного места в банке с данными уровней и врагов места достаточно, но не бесконечное количество. Т.е. можно довольно свободно добавлять объекты в больших количествах, но без должного энтузиазма (проверки в редакторе на переполнение банка, к сожалению, нет по причине того, что подразумевалось при нехватке отведенного места переносить объекты в свободное место в этом же банке, коего достаточно много);
* Редактор позволяет редактировать не только состав фона (например, кирпичи, из которых строятся стены, можно поменять на любой тайл, доступный в игре), но и их конфигурацию;
* Линейные объекты также можно редактировать, меняя тайлы, из которых они состоят (например, тайлы лестницы можно заменить на опять же любой доступный в игре тайл);
* Изменять палитру уровней. Причем палитры уровней перемешаны с палитрами врагов, так что... возможны сюрпризы :);
* Изменять интерьер уровней, но с некоторыми ограничениями. Часть объектов (спрайтов) жестко привязаны в коде к номеру уровня, поэтому при смене интерьера уровень придется "допиливать напильником";
* Все основные функции находятся в контекстном меню, вызываемым правой кнопкой в поле редактирования.

Редактор остановился в развитии, потому что в процессе его написания стало вылезать столько подводных камней, что мне, дойдя до определенной логической точки, стало уже тяжко пилить его дальше. Впрочем, если кто хочет помочь в развитии, то я готов выслать исходники и продолжить проект.
Если кто решится, то отвечу сразу: Исходники на чистом C++ и чистом WinAPI, т.е. никаких фреймворков не используется. Ну и сам код, конечно, не идеальный. :)

Прикладываю сам редактор и видео одного из модов, который я было начал делать (вроде как продолжение оригинальной игры). Прохождение его не идеально, да и показан всего один путь прохождения из двух, но по видео можно судить, как существенно можно отредактировать игру. Сам РОМ я куда-то посеял, но если найду, то тоже прикреплю.
« Последнее редактирование: 04 Май 2014, 16:38:25 от ALXR »

Оффлайн opr

  • Пользователь
  • Сообщений: 186
    • Просмотр профиля
Re: [NES] Super Mario Bros 2. Level editor
« Ответ #1 : 01 Март 2014, 00:02:15 »
вот молодец зацен... затестим  :)

Добавлено позже:
Если честно, после принца, работать в данном едиторе трудновато. Я так понял, в редакторе саму структуру уровня (положение его комнат) нельзя менять, только вставлять / убирать объекты из заданного пространства?
В детстве эта игра мне показалась слишком уж огромной и долгой, я ее так и не прошел, так как тупо времени не хватило, карик был не мой и надо было отдавать))
« Последнее редактирование: 01 Март 2014, 12:46:46 от opr »

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Super Mario Bros 2. Level editor
« Ответ #2 : 03 Март 2014, 19:13:51 »
вот молодец зацен... затестим  :)

Добавлено позже:
Если честно, после принца, работать в данном едиторе трудновато. Я так понял, в редакторе саму структуру уровня (положение его комнат) нельзя менять, только вставлять / убирать объекты из заданного пространства?
Мм.. Нет, тут так нельзя. Если в принце каждая комната - сама по себе, то здесь уровень - одно целое.

В детстве эта игра мне показалась слишком уж огромной и долгой, я ее так и не прошел, так как тупо времени не хватило, карик был не мой и надо было отдавать))
Да, мне тоже эта игрушка понравилась на чужом картридже. Но прошел я ее тогда, когда купил уже свой. :)

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Super Mario Bros 2. Level editor
« Ответ #3 : 04 Май 2014, 00:01:59 »
Ну вот, нашел начатый мод. Буду потихоньку продолжать.

Оффлайн AjaxVS

  • Пользователь
  • Сообщений: 305
    • Youtube
    • Просмотр профиля
Re: [NES] Super Mario Bros 2. Level editor
« Ответ #4 : 04 Май 2014, 04:00:33 »
выглядит достойно, за c++ winapi :drinks:

хотел глянуть на сам редактор, но smb2.exe сразу при запуске вываливается со стандартной ошибкой:
win7 x32.
что еще юзал?

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Super Mario Bros 2. Level editor
« Ответ #5 : 04 Май 2014, 13:06:11 »
выглядит достойно, за c++ winapi :drinks:

хотел глянуть на сам редактор, но smb2.exe сразу при запуске вываливается со стандартной ошибкой:
win7 x32.
что еще юзал?
Мда, ошибка странная... Поправил, выложил. Запускается, вроде бы, без ошибок.

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Super Mario Bros 2. Level editor
« Ответ #6 : 24 Июнь 2015, 18:57:55 »
Некоторые багофиксы

Очередное обновление.
« Последнее редактирование: 21 Июль 2015, 15:00:29 от ALXR »

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Super Mario Bros 2. Level editor
« Ответ #7 : 21 Июль 2015, 14:36:26 »
Надеюсь, не надоел со своим редактором второго марио :)

Вобщем, волею случая засел за него вновь и существенно переработал/доработал.
Редактор вышел в некоторых местах слегка замудреный. Но попытаюсь описать, что он умеет теперь:
* Редактировать конфигурацию бэкграундов (было и раньше);
* Редактировать конфигурацию некоторых типов объектов (было и раньше);
* Редактировать внешний вид уровней (было и раньше, но отрисовка некоторых объектов была неверной);

Исправления и дополнения:
* Переделан движок отрисовки уровней. Теперь рисуется быстрее и нативно (средствами GDI);
* Поправлена отрисовка пальм. Теперь они рисуются более-менее похоже на то, что будет в игре;
152367-0

* В Advanced добавлена вкладка "World warps", позволяющая редактировать переходы между уровнями;
152369-1

* Добавлен диалог редактирования количества подуровней в уровнях (по аналогии с редактором 2002г);
152371-2

* Добавлен диалог редактирования линков уровней и врагов. По сути, это позволяет создавать новые комнаты в уровнях к уже имеющимся в том количестве, в котором это позволяет свободная память, выделенная под данные;
152373-3

* Упрощена возможность создавать комнаты типа 'Jar'. Во всех подуровнях 5-я по счету комната является комнатой типа 'Jar', куда попадает марио при входе в вазу (которая обозначена как 'not the same as #06'). И теперь туда можно добавлять врагов (раньше они были не видны в этих уровнях и, соответственно, не было возможности их редактировать);
152375-4

* При добавлении дверей теперь можно добавлять слинкованную с создаваемой дверь. То же самое и в отношении указателей (Pointers);
152377-5

* При сохранении игры, теперь измененные уровни автоматически сохраняются (раньше приходилось нажимать 'Apply changes' везде, где были произведены изменения);
* Некоторые объекты теперь можно редактировать не входя в меню редактирования (кнопками +/-. В случае с бэкграундом при зажатом Shift будет меняться тип бэкграунда);
* Используется все доступное свободное пространство, выделенное под данные в ROM, для сохранения уровней;
* Немного переделан внешний вид.

Из НЕпоправленного:
* Все еще неправильно отрисовываются слои объектов. Там где должно рисоваться одно поверх второго - рисуется наоборот: второе поверх первого (например, в 3-1 за водопадом не видно Green platform);
* Враги рисуется не оригинальной палитрой.


В качестве небольшого туториала приведу создание комнаты типа 'Jar' для первого уровня:
1. Идем в Tools -> Advanced -> Advanced worlds sets... -> Levels sets
2. Выберем неиспользуемую комнату 1-1 Unused(1), которая в оригинальной игре указывает на комнату 1-1 Boss area:
152379-6
3. Переносим линк на 5 по счету комнату 1-1 undeground (bottom) - это bucket #5:
152381-7
4. То же самое делаем с enemies:
152383-8
5. Нажимаем OK, и теперь на правой панели для комнаты 1-1 undeground (bottom) появится панелька 'Enemies link':
152385-9
6. Т.к. комната перенесена в 1-1 unused(1), то меняем указатели и указатели дверей на эту комнату:
* Первый: 152387-10
* Второй: 152389-11
7. Возвращаемся в комнату 1-1 undeground (bottom), нажимаем на панельке 'Enemies link' кнопку 'Create new...', чтобы под эту комнату выделить новое место в ROMе:
152391-12
8.  Затем щелкаем правой кнопкой и выбираем Make level as jar и комната примет такой вид:
152393-13
9. Накидаем объектов и врагов туда (последних через меню Insert jar enemy):
152395-14
10. Добавим вазочку (которая not the same as #06) куда-нибудь в 1-1 main part (например):
152397-15
11. Сохраняем, запускаем.


Теперь, добавляя эту вазочку в любом месте (кроме вертикальных комнат) уровня 1-1, мы будем попадать в эту созданную.

По подобному принципу можно добавлять новые комнаты за счет неиспользуемых (обозначенных в редакторе как Unused).

Прошу потестировать и сообщить о каких-либо проблемах.