Еще один редактор от меня, который, впрочем, был написан за год до 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, т.е. никаких фреймворков не используется. Ну и сам код, конечно, не идеальный.
Прикладываю сам редактор и видео одного из модов, который я было начал делать (вроде как продолжение оригинальной игры). Прохождение его не идеально, да и показан всего один путь прохождения из двух, но по видео можно судить, как существенно можно отредактировать игру. Сам РОМ я куда-то посеял, но если найду, то тоже прикреплю.