Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Скрипт для сборки нескольких BOOM-карт в компиляцию
   Список разделов - Местечко мапперов и моддеров - Скрипт для сборки нескольких BOOM-карт в компиляциюОтветить
АвторСообщение
ZZYZX
- Colonel -
Next rank: = Colonel = after 378 pointsМодератор форума
4062

Doom Rate: 1.79

Posts quality: +765
Ссылка на пост №1 Отправлено: 14.07.15 22:08:15
Создание зачётной темы (+40)
Собственно, сабж.
Вдохновлялся злым вемодом и результатами ручной сборки 12 уровней в 1 файл.

Написано на питоне. Дополнительных модулей не требует.
Питон можно скачать здесь: https://www.python.org/downloads/
Выбирать версии 2.7.x.
Ссылка: https://github.com/jewalky/wadstomp

Пример использования скрипта для сборки spd15.wad из fixmaps.zip:
Свитчи -iwad, -file работают так же как в думе.
Свитч -map определяет название карты, которую нужно вытащить. Карта берётся последняя из всех загруженных вадов.
Свитч -outmap определяет название карты после вытаскивания, если такая уже есть — будет заменена.
Свитч -out указывает файл, в который сохранять.
Скрытый текст:

python wadstomp.py -iwad ..\doom2.wad -map MAP01 -out spd15.wad -file fixmaps\arch_tx.wad fixmaps\01-arch.wad -outmap MAP01 python wadstomp.py -iwad ..\doom2.wad -map MAP01 -out spd15.wad -file fixmaps\pk1.wad fixmaps\02-pk1.wad -outmap MAP02 python wadstomp.py -iwad ..\doom2.wad -map MAP01 -out spd15.wad -file fixmaps\arch_tx.wad fixmaps\03-arch.wad -outmap MAP03 python wadstomp.py -iwad ..\doom2.wad -map MAP01 -out spd15.wad -file fixmaps\04-iwad.wad -outmap MAP04 python wadstomp.py -iwad ..\doom2.wad -map MAP01 -out spd15.wad -file fixmaps\arch_tx.wad fixmaps\05-arch.wad -outmap MAP05 python wadstomp.py -iwad ..\doom2.wad -map MAP01 -out spd15.wad -file fixmaps\06-iwad.wad -outmap MAP06 python wadstomp.py -iwad ..\doom2.wad -map MAP01 -out spd15.wad -file fixmaps\07-iwad.wad -outmap MAP07 python wadstomp.py -iwad ..\doom2.wad -map MAP01 -out spd15.wad -file fixmaps\arch_tx.wad fixmaps\08-arch.wad -outmap MAP08 python wadstomp.py -iwad ..\doom2.wad -map MAP01 -out spd15.wad -file fixmaps\arch_tx.wad fixmaps\09-arch.wad -outmap MAP09 python wadstomp.py -iwad ..\doom2.wad -map MAP01 -out spd15.wad -file fixmaps\pk2.wad fixmaps\10-pk2.wad -outmap MAP10 python wadstomp.py -iwad ..\doom2.wad -map MAP01 -out spd15.wad -file fixmaps\11-iwad.wad -outmap MAP11 python wadstomp.py -iwad ..\doom2.wad -map MAP01 -out spd15.wad -file fixmaps\12-iwad.wad -outmap MAP12



Результат, если кому интересно: http://www.mediafire.com/download/qkce3mrb4142j69/spd15.wad
(буду очень благодарен, если кто-нибудь там пробежится с ноклипом и подтвердит, что все текстуры на своих местах; свитчи на MAP09 точно работают)

Фичи:
1) Удаляет неиспользуемые текстуры в процессе (если точнее, он их банально не копирует).
2) Не заменяет изображения из IWAD. Никогда. В том плане, что текстуры переименовываются.
3) Мерджит ANIMATED и SWITCHES.
4) Идентичные текстуры старается тоже просто так не плодить, сливает с существующим контентом (идентичные = MD5 от всех патчей текстуры совпало с MD5 от всех патчей другой текстуры, или два флэта совпали). Реюзает патчи.
5) Читает TEXTURE1, TEXTURE2, F_* и FF_*. Пишет только TEXTURE2 и FF_*.
6) Копирует музыку для карт MAP01..MAP32 или E1M1..E3M9. Отдельная музыка для E4M# не поддерживается по техническим причинам.

Баги (?):
7) Работает ДОЛГО вследствие активного (от слова везде) подсчёта MD5. Это сделано чтобы можно было совсем не ориентироваться на всяческие названия и мерджить идентичный контент.
8) swan_defswani.dat используется скриптом для узнавания ванильных анимаций/свитчей (то есть например тупая замена BLOOD1/BLOOD3 файлов для перекраски). Свитчи из некоторых IWAD'ов там не прописаны.
Чтобы каждый раз не трогать основной файл, название файла можно менять свитчом -defswani. Т.е. например сделать (самостоятельно) swan_plutonia.dat и подключать его через -defswani swan_plutonia.dat
9) 2/3 кода писалось интуитивно и с минимальным участием сознания, а половина вообще вчера ночью, поэтому КАК оно работает я уже не помню (серьёзно). И вообще код лапшой висит.

Тестировалось на примере вемодовского спидмапа и в prboom-plus.
В ванили собранные вады с большой вероятностью не работают (или определённые их аспекты). Спасибо Арчи за уточнение.


Ня.

Рейтинг сообщения: +6, отметил(и): TGA]ASTS[, [D2D]_Revenant, VladGuardian, Kragoth762, Mostcus, Артём
2 2 1
Memfis
= Colonel =
Next rank: - Commissar - after 435 points
4455

Doom Rate: 1.82

Posts quality: +419
Ссылка на пост №2 Отправлено: 28.07.17 22:46:39
Очень крутая штука!

Если я не ошибаюсь, в программе не хватает исключения для флэта F_SKY1. Его копии с другим названием ни в коем случае не надо создавать, а то это портит всё небо в уровнях. Лучше просто использовать первый попавшийся везде.
1 2 1
ZZYZX
- Colonel -
Next rank: = Colonel = after 378 pointsМодератор форума
4062

Doom Rate: 1.79

Posts quality: +765
Ссылка на пост №3 Отправлено: 29.07.17 20:13:31
Охъё. Это баг. С другой стороны, кто рисует собственный F_SKY1 :ogo:
2 2 1
Memfis
= Colonel =
Next rank: - Commissar - after 435 points
4455

Doom Rate: 1.82

Posts quality: +419
Ссылка на пост №4 Отправлено: 29.07.17 22:38:22
Ну некоторые заменяют т. к. дефолтный не особо приятный на вид.)
1 2 1
Memfis
= Colonel =
Next rank: - Commissar - after 435 points
4455

Doom Rate: 1.82

Posts quality: +419
Ссылка на пост №5 Отправлено: 05.08.17 04:29:39
Да, ещё было бы круто автоматически добавлять переименованные свитчи в ламп SWITCHES чтобы они анимировались. А то сейчас вроде только вручную?
1 2 1
ZZYZX
- Colonel -
Next rank: = Colonel = after 378 pointsМодератор форума
4062

Doom Rate: 1.79

Posts quality: +765
Ссылка на пост №6 Отправлено: 05.08.17 09:50:19
Добавляются, насколько я знаю.
2 2 1
Memfis
= Colonel =
Next rank: - Commissar - after 435 points
4455

Doom Rate: 1.82

Posts quality: +419
Ссылка на пост №7 Отправлено: 05.08.17 12:51:58
Хмм, вот на примере этого вада: https://www.doomworld.com/idgames/levels/doom2/j-l/legobase
Делаю wadstomp.py -iwad doom2.wad -map MAP01 -out testik.wad -file legobase.wad -outmap MAP01
Конфликтующие свитчи переименовываются в SW1S0000 и так далее, но в SWITCHES я их что-то не вижу.
1 2 1
Memfis
= Colonel =
Next rank: - Commissar - after 435 points
4455

Doom Rate: 1.82

Posts quality: +419
Ссылка на пост №8 Отправлено: 15.08.17 13:15:17
И вот ещё проблема, не знаю можно ли легко починить. Берём Деус Вульт: https://www.doomworld.com/idgames/levels/doom2/Ports/d-f/dv Делаем:
wadstomp.py -iwad doom2.wad -map MAP01 -out testik.WAD -file DV.wad -outmap MAP01
И в яме получается такое, хотя должно быть вот так. Видимо замена дефолтных анимаций как-то путает программу. Приходится потом руками править.
1 2 1
ZZYZX
- Colonel -
Next rank: = Colonel = after 378 pointsМодератор форума
4062

Doom Rate: 1.79

Posts quality: +765
Ссылка на пост №9 Отправлено: 15.08.17 15:37:15
Походу там вообще немного анимации со свитчами сломаны в этом плане. Гляну.
2 2 1
Memfis
= Colonel =
Next rank: - Commissar - after 435 points
4455

Doom Rate: 1.82

Posts quality: +419
Ссылка на пост №10 Отправлено: 05.10.17 19:30:31
Ну как, что-нибудь получается там? Хочу ещё сборочки делать.)
1 2 1
Memfis
= Colonel =
Next rank: - Commissar - after 435 points
4455

Doom Rate: 1.82

Posts quality: +419
Ссылка на пост №11 Отправлено: 25.11.17 16:53:00
Мяу...
1 2 1
Страница 1 из 1Перейти наверх
   Список разделов - Местечко мапперов и моддеров - Скрипт для сборки нескольких BOOM-карт в компиляцию