Разработка и ромхакинг > Редакторы для консольных игр

Пользовательские конфиги для CaD Editor

(1/13) > >>

spiiin:
Тема для обсуждения добавления новых игр в редактор и особенностей написания конфигов для них.


Начало составлено мной переносом сообщений из основной, если где-то случайно получились оборванные диалоги или вырванные из контекста фразы - извиняюсь.

=============================================
Вообще, чтобы упростить написание конфигов - есть несколько путей.
1. Самый простой - добавить возможность писать код на разных языках программирования - Python, Lua, Java Script. Достаточно будет знание автором конфига хотя бы одного из них. Можно свой максимально простой язык добавить, похожий на ini-файлы.

2. Написать обучающие материалы - статьи и видео. Местами полезно, но только для игр, которые похожи на уже добавленные (таких много очень на самом деле, всё же почти 100 примеров разных игр добавлено.

3. Сделать отдельную программу - генератор конфигов, в котором можно будет заранее выбрать комбинацию из предзаготовленных вариантов, и нажать кнопку "сгенерировать" - и получить на выходе готовый конфиг уровня. Это, наверное, оптимальный вариант, но его тяжелее всего реализовать. Ключевой вопрос - надо ли это кому-то? Фактически - это будет программа для авторов редакторов уровней, а тут таких немного, да и часть из них предпочитают редактор для конкретной игры с нуля лепить.

CaH4e3:

--- Цитата: spiiin от 23 Декабрь 2017, 00:28:28 ---А у тебя есть идеи, как сделать проще описание того, как именно загружать блоки и отрисовывать уровни для любой игры?

Если был бы удобный язык, на котором можно было бы легко описать "в этой игре уровне строятся из таких-то блоков, палитры для блоков берутся оттуда-то, видеопамять подгружаем так-то", тогда может и попроще было бы. Но язык этот всё равно надо будет выучить, чтобы на нём писать.

--- Конец цитаты ---
сделать скриптовой язык можно и научиться его использовать при нормальном его документировании можно. но врядли тут можно сделать что-то универсальное.

у каждой игры есть свои нюансы, каждый раз придется придумывать костыль. тебе в своей программе, в которой ты точно знаешь, что и как работает, всегда проще померять или добавить пару строк или функцию и все заработает и знание с# тут ни при чем...

т.е. я вот может и знаю, как на нем писать, но я не знаю, за что отвечают и как работают все твои собственные функции и переменные... разбираться с чужими программами ничуть не проще, чем дизасмить игры денди. если я с денди еще готов копаться в свое удовольствие, то с чужими программами - не очень лол ну тут т.е. надо иметь какую-то конкретную заинтересованность и стимул, чтобы зарываться в чужой код и разбирать, как что работает, чтобы что-то суметь поменять...

потому я говорю, что это сложно всем, кроме тебя самого лол

spiiin:

--- Цитата: CaH4e3 от 23 Декабрь 2017, 18:27:48 ---разбираться с чужими программами ничуть не проще, чем дизасмить игры денди
--- Конец цитаты ---
Вообще обычному программисту читать код, написанный человеком на высокоуровневом языке намного проще, чем машинный код. Это у тебя профдеформация на почве длительного дизассемблирования игр на денди.


--- Цитата ---у каждой игры есть свои нюансы, каждый раз придется придумывать костыль
--- Конец цитаты ---
Так вот прикол в том, что на самом деле не так, есть очень много общих черт. Я для того столько игр и подключил, чтобы это проверить. Иногда в конфиге надо именно уникальный код дописать - но всё-таки написать 10-20 строк кода намного проще, чем целый отдельный редактор делать. А если надо уникальный подредактор добавить специфичный для конкретной игры - для этого плагины есть, по сути отдельные программы (редактор трасс для battletoads например).

Для меня эти конфиги собирать, так чтобы уровни можно было посмотреть (даже без редактирования какого-либо вообще), как для тебя unpublished cheats собирать, наверное :)

CaH4e3:

--- Цитата: spiiin от 23 Декабрь 2017, 20:36:04 ---Вообще обычному программисту читать код, написанный человеком на высокоуровневом языке намного проще, чем машинный код. Это у тебя профдеформация на почве длительного дизассемблирования игр на денди.

--- Конец цитаты ---
программы на асме, в отличие от програм на высокоуровневых языках, сложно написать разнообразно или обфусцировать лол если переставить опкоды местами, смысл не поменяется, а вот на высокоуровневых можно писать так, что твой код будет читаться как книга на английском, а можно так, что не поймешь никогда, что там происходит вообще без бутылки. тем более на сях для этого есть широкие возможности в плане макросов. а там пойди разберись, где библиотечные функции, где твои, где у тебя что переназначено на что, где вин апи, а где нет... это тоже требует усилий при прочтении, не меньше, чем при асме.


--- Цитата: spiiin от 23 Декабрь 2017, 20:36:04 ---Для меня эти конфиги собирать, так чтобы уровни можно было посмотреть (даже без редактирования какого-либо вообще), как для тебя unpublished cheats собирать, наверное :)

--- Конец цитаты ---
так я и говорю, что тебе это без проблем. ты же все это сам и писал лол

Roket:

--- Цитата ---Roket
А что сложного-то? (я не издеваюсь, просто мне со стороны знающего C# программиста не видно) Основная работа - картинки подготовить и нарезать, а не конфиг написать. Если бы для этого были бы удобные инструменты - было бы проще.
--- Конец цитаты ---

Смысла ещё раз обсуждать это не вижу, Спин.  Я просто не хочу к этой теме приходить вновь, потому что не хочу быть опять виноватым, что картинки у меня не те и прочее.  <_<

spiiin:
Roket
Окей, проехали. Метаинформацию из картинок я за тебя подчистил же.

Там ситуация была такая - какая-то программа, в которой делались картинки, писала в png метаинформацию неверную - типа "в этом файле плотность пикселей столько-то на метр", цифра абсолютно левая. Так что картинки были неправильные действительно. Я ещё одну такую картинку от Nemesis_C встречал в конфиге zamn - у Ti_ обнаружился этот баг.
 
Если делать генератор конфига - картинку с блоками тоже он будет генерировать (по скриншотам или картинкам отдельных блоков), так же такая ситуация будет исключена.


Добавлено позже:
Я донейты на редактор собираю не от жадности, а потому что работы много действительно по нему :)

Сейчас готов собранное (около 20$), отдать за составление конфигов для Shatterhand для всех уровней если кто возьмётся. Ну или сам их допилю, если желающих не будет.

Roket:
spiiin, Для шаттерхенда уже все уровни есть. Тай пилил ещё. Я хотел запилить хак на него но понятное дело что это будет за хак если найдены в игре только уровни. Врагов я вроде тоже всех нашёл.

spiiin:
Не видел. У меня в данный момент есть конфиг 1 уровня полный, и конфиг экранов/блоков/макроблоков для уровня 2-1 для английской версии, а также текстовик от тебя с описанием врагов для японской версии.
https://github.com/spiiin/CadEditor/tree/master/CadEditor/settings_shatterhand

CaH4e3:
я до сих пор, кстати, не понимаю.. если программа умеет читать графику в роме, конвертить ее в макроблоки, зачем до сих пор вообще нужно конвертирование руками в пнг для вешнего использования? это попахивает наклеиванием обоев через замочную скважину лол

spiiin:
Редактор умеет и так и так читать графику. Если опишешь в конфиге, как строить блоки из графики в роме, то картинки делать и не надо, конечно.

Сейчас конфиги для 62 nes игр строят блоки из видеопамяти (из рома прямо её берут или из дампов, когда мне лень в роме искать, как она хранится) и всего 11 берут блоки из заготовленных картинок (в основном, это конфиги, которые делал Roket, я их просто не переписал ещё на построение блоков из ROM, это что-то вроде промежуточной стадии). На сегу тоже в основном блоки строятся из видеопамяти.

lancuster:
spiiin, один вопрос. А если блоки нестандартные? Как быть? Вот в Challenger, например, блоки 8х8. Как их добавить в конфиг?

spiiin:
Я бы сказал, что это не блоки, а просто тайлы. Для описания экранов тайлами есть плагин map editor, там как раз 8x8 тайлы. Кидай адреса, составлю конфиг.

lancuster:

--- Цитата: spiiin от 27 Декабрь 2017, 23:39:57 ---Я бы сказал, что это не блоки, а просто тайлы. Для описания экранов тайлами есть плагин map editor, там как раз 8x8 тайлы. Кидай адреса, составлю конфиг.

--- Конец цитаты ---
"Внутренности" блоков с 6691 по 7230.
Начало карты - 5bfc, конец - 62ba, наверное. Там если изменить карту в самом низу, то можно проскроллить до других данных, или по кругу по карте пройтись. Как-то так.

spiiin:
чего-то я не вижу изменений никаких при изменении данных по этим адресам

lancuster:

--- Цитата: spiiin от 28 Декабрь 2017, 01:41:11 ---чего-то я не вижу изменений никаких при изменении данных по этим адресам

--- Конец цитаты ---
Да блин! Блок 00 - первый! Его внутренности находятся по этому адресу: 6691. Чтобы увидеть изменения, меняй блоки на стартовом экране (сцена 2) с 61bb по 61bf. Всё будет видно.

spiiin:
Я эту игру в первый раз вижу, до сцены 2 доходить не хочу абсолютно :)
Сейв кидай или мувик прохождения

lancuster:

--- Цитата: spiiin от 28 Декабрь 2017, 03:11:40 ---Я эту игру в первый раз вижу, до сцены 2 доходить не хочу абсолютно :)
Сейв кидай или мувик прохождения

--- Конец цитаты ---
Вот, пожалуйста. Ром тоже в архиве, похаченный лежит.
Я просто не понимаю, что можно поменять в сцене с поездом. Длину вагонов/всего поезда? Не особо там и разгуляешься.

spiiin:
А, ну теперь понятно, о чём ты. Да, действительно, внешне похоже на блоки 8x8 тайлов, но на самом деле там структура из блоков 4x4 тайла, и затем из них составлены макроблоки 2x2 блока. т.е. для составления конфига тебе ещё надо найти адрес массива или массивов описания макроблоков.

lancuster:
spiiin, ну я находил что-то похожее, когда опускался ниже карты блоков. Изменил один байт - на карте появились какие-то блоки размером 4х4. Наверное, это то, о чём ты говоришь.

spiiin:
Да, это оно. Тебе нужно найти адрес начала этого массива (найти поинтер на него или логически подсчитать - поставить на карту макроблок 0 и найти, какие байты влияют на изменение блоков 4x4 в нем)

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии