Так как 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.
<...>
Я уже несколько раз прошел map03 в GZDoom 4.6.1, в LZDoom и вGZDoom 4.13.2. Ни одного вылета.
Может быть у тебя что-то еще подключено при запуске или стоит в автозагрузке в ini-файле?
Кстати я что-то не нашел в архиве самих Brightmaps для текстур, только для спрайтов.
AleksV Извини, что беспокою, но хотелось бы прояснить кое-что.
В общем, в оригинале есть такая штука, как FlyingBlood. Именно он и спавнит лужицы крови при кровотечке. И я думаю, как его вернуть.
Добавлено спустя 1 день 7 часов 16 минут 45 секунд:
Обновлённая версия : Ссылка Изменения :
1. FlyingBlood. (Сделано чуть иначе, но работает примерно так же, как в оригинале).
2. В EventHandler добавлена функция CheckReplacee.
3. При спауне гильз учитывается Pitch игрока.
4. Исправлено мерцание HellKnight в Pain State.
5. Некоторое количество мелких правок.
Версию для 2.4.0 не менял, но добавить туда FlyingBlood несложно.
AleksV Прости за некропост, но есть такой вопрос. Возможно ли перенести эту функцию на Decorate? Ибо когда я попытался её перенести, то у меня спавнился только первый спрайт маленького ошмётка.