Так как Gifty, по сути, забросил разработку Smooth Doom 2.0, мне пришлось сделать это за него. Поэтому представляю вам тестовую версию Smooth Doom, почти полностью переписанного на ZScript.
Для игры предпочтительна версия 2.4.0. Известные баги:
-Мод крашит GZDoom на MAP03 спустя некоторое время. Причина неизвестна.
-Кровь на ошмётках какодемонов/баронов и рыцарей не всегда отображается верно.
-В настоящее время капельки крови, спавнящие лужицы, удалены ввиду того, что я не смог задать им нужные параметры спавна (Параметры из декората заставляли лужицы спавниться на потолке).
Что я узнал:
1) Зависание игры на MAP03, судя по всему, связано с платформой, так как пулемётчик на ней стрелял очень медленно. Возможно, кривое внедрение ZScript либо с моей стороны, либо со стороны разработчиков.
2) С кровью всё очень просто: я не внедрил соответствующую трансляцию палитры.
3) С лужами крови дело всё также. Пока не исправил.
Из дополнительно найденного:
- Экран игрока некрасиво идёт вертикальной волной, как при беге, даже прямо перед полной остановкой; как следствие — заметна резкая остановка движения. Скорее всего, из-за того, что сам игрок останавливается быстрее. Попробуй вместе с "Actor::vel" потрогать ещё переменные "PlayerPawn::vel" и "PlayerPawn::bob" (примеры из исходников).
- При ударе рукой об воздух противники должны просыпаться? Не помню, как было в оригинальном Smooth Doom.
- На стенах не появляются декали от бензопилы.
- Лапа спектра отрисовывается без невидимости.
- Такое чувство, что помимо анимаций немного изменён и баланс — из дробовика можно застрелить пинки с двух встрелов. Опять же, возможно, вопрос к оригинальному Smooth Doom.
- Первые два выстрела пулемётчика идут с меньшим интервалом, чем остальные.
- На BFG9000 невозможно переключиться, плюс в SBARINFO оно не отображается подобранным (видно при пистол-старте MAP30 Doom 2).
- У мегасферы пропущены некоторые спрайты.
- Мод крашит GZDoom на MAP03 спустя некоторое время. Причина неизвестна.
Спустя сорок семь минут стояния в самых разных местах (на ускорении времени x10, если что) ничего не произошло. Doom 2 MAP03, LZDoom 3.87c. В Autorun подключены ZChecker и Doom 2 sprites fix, но ни тот, ни другой на поведение модификации гарантированно не влияют.
-В настоящее время капельки крови, спавнящие лужицы, удалены ввиду того, что я не смог задать им нужные параметры спавна (Параметры из декората заставляли лужицы спавниться на потолке).
Где в коде объявлены соответственные классы и где они порождаются в мире? Искать что-то в чужом коде — занятие в известной степени неблагодарное.
Экран игрока некрасиво идёт вертикальной волной, как при беге, даже прямо перед полной остановкой; как следствие — заметна резкая остановка движения. Скорее всего, из-за того, что сам игрок останавливается быстрее. Попробуй вместе с "Actor::vel" потрогать ещё переменные "PlayerPawn::vel" и "PlayerPawn::bob" (примеры из исходников).
Это связано с тем, что я уменьшил скольжение игрока при помощи ACS-скрипта.
Такое чувство, что помимо анимаций немного изменён и баланс — из дробовика можно застрелить пинки с двух встрелов. Опять же, возможно, вопрос к оригинальному Smooth Doom.
Мне кажется, это связано с добавленным вертикальным разбросом.
Спустя сорок семь минут стояния в самых разных местах (на ускорении времени x10, если что) ничего не произошло. Doom 2 MAP03, LZDoom 3.87c. В Autorun подключены ZChecker и Doom 2 sprites fix, но ни тот, ни другой на поведение модификации гарантированно не влияют.
Решил поучаствовать в проекте.
Переписал весь ZScript код, нашел и исправил несколько ошибок, вернул часть кода из оригинального SmoothDoom (гильзы, дополнительные атаки монстров), дополнил меню настроек, ACS код убрал за ненадобностью (перенесено на ZScript).
Брайтмапы не ковырял. Ссылка Z_SmoothDoom
Решил поучаствовать в проекте.
Переписал весь ZScript код, нашел и исправил несколько ошибок, вернул часть кода из оригинального SmoothDoom (гильзы, дополнительные атаки монстров), дополнил меню настроек, ACS код убрал за ненадобностью (перенесено на ZScript).
Брайтмапы не ковырял. Ссылка Z_SmoothDoom
Я чувствую себя полным дураком. Спасибо тебе, добрый человек!
Правда, лужиц крови всё ещё нет, они так и остались в Decorate-версии.
UPD: Он дуется на кучувсего. Может, ты использовал синтаксис самой последней версии ZScript?
В основном я опирался на ZScript и Decorate версию. Но кое - что (гильзы и что-то еще) брал в оригинале.
А в чем причина использовать такую древнюю версию GZDoom?
Версия для 2.4.0 : Z_SmoothDoom(2.4.0)
А в чем причина использовать такую древнюю версию GZDoom?
Тоже интересно, даже несмотря на то, что считаю, что совместимость иногда важнее нововведений, и поэтому весь код, который можно написать на ZScript старых версий, пишу на них (любимая — ZScript v3.3.0 2016-го года). Но, если что, LZDoom трёхгодичной давности спокойно поддерживает ZScript v4.7.0.
* * *
Времени у меня сейчас нет, так что глубоко смотреть не стал, просто пробежался по паре уровней. Однозначно стало лучше.
Список мелких предупреждений в development-режиме движка:
Скрытый текст:
<...>
LoadActors: Load actor definitions.
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 15:
Truncation of floating point value
Script warning, "SmoothDoom_ZScripted_by_EmperorGrieferus_AleksV_v0.2.pk3:zcode.monsters/basemonster.zs" line 16:
Truncation of floating point value
script parsing took 239.47 ms
[ZC] ZChecker v0.87b initialized successfully. Total 27 console commands, 15 info panels.
R_Init: Init Doom refresh subsystem.
<...>