2) Как сделать, чтобы модели статуй из еретика, которые держат сферы-индикаторы ключей, всегда спавнились спиной к дверям?
Monsterooovich:
В гздуме нельзя вращать модели?
Если ты имел в виду "постоянное вращение, как мана в хексене" то это работает, но меня такое решение не устроит.
Если же разовое, то: функционал такой есть (правда у меня не заработал), но это пол беды, допустим я неправильно им пользовался и вращать можно. Проблему так просто это не решит: дело в том, что на одной карте змейка появляется спиной к двери, а на другой боком (или лицом). Соответственно одним вращением тут не отделаться, нужно как-то определять местоположение самой двери (я хз правда, как это в думсдее делали)
За остальные ответы спасибо, будем надеяться что в будущем ситуация улучшится
1) Как сделать, чтобы модель всегда смотрела на тебя лицом?
Как спрайт крутилась? Не понимаю зачем это 3д модели, но делается это в Decorate Пример:
Скрытый текст:
Actor XXX 9999 {MONSTER Radius 20 Height 60 -SHOOTABLE States{ Spawn: MODL A 1 A_Look Loop See: MODL A 1 A_FaceTarget Loop } }
theleo_ua:
2) Как сделать, чтобы модели статуй из еретика, которые держат сферы-индикаторы ключей, всегда спавнились спиной к дверям?
Я так понял у тебя они крутятся(как спрайты?) Если да, пропиши флажок +DORMANT или убери строки такие как MONSTER, A_Look, вобщем оставь только States{ Spawn: MODL A -1 Stop } } Только сейчас вспомнил, в еретике эти статуи как бы должны быть монстрами т.к. они SwitchableDecoration, думаю скорее флаг +DORMANT подойдет.. Вобщем это лучше у кого-то другого узнать
theleo_ua:
3) Допустим модель, с которой я работаю, состоит из 4 сабмоделей. Как мне указать свои значения ScaleXYZ, OffsetXYZ и ZOffset для каждой сабмодели?
Незнаю, я стараюсь делать все 1 моделью иначе, геморно.. Но думаю есть выход прописав каждую субмодель через декорейт и modeldef отдельно и спавнить там где надо и как надо с помощью A_SpawnItemEx()
theleo_ua:
4) Поддерживает ли гозза доступ к состояниям моделей (states)? Или работать можно только с фреймами?
Сам хотел бы узнать
theleo_ua:
5) В думсдее часто делают огонь партиклами. В гоззе я вижу только 2 варианта: либо найти 3дмодель огня, либо делать аналог партиклов декорейтом. Какие еще есть способы?
Эмм, с помощью простых спрайтов(картинок огня с наложенными эффектами прозрачности), меня лично устраивает.
К сожалению нельзя =( Если не прав поправьте.. И наверное правильнее подобные вопросы сюда писать. На скринах там где зеленый пузырек(ArtiPoisonBag) четко видна прозрачность, это скрин из Doomsday?
Как спрайт крутилась? Не понимаю зачем это 3д модели
Отвечу картинкой:
1) Bloodscourge:
Скрытый текст:
без комментариев. Самое интересное, что оригинальные модели в думсдей (конкретно этого оружия) сделаны именно в стиле "повернуты по горизонтали строго лицом к игроку, но по вертикали ведут как здмодель".
Скрытый текст:
Процитирую автора этих моделей по этому поводу:
Скрытый текст:
эффект свечения вокруг модели не рассчитан на вращение. В старой модели свечение грубое геометрическое, там ее можно было вращать
Это плоский эффект, работающий на камеру. Если зайти сбоку - превратится в линию. Другими методами мягкое свечение в doomsday не сделать, разве что партиклами, но эффект все равно будет не тот Для простых объектов (куб, сфера) еще можно начитить, и сделать анимацию этой плоскости под фигуру (так сделано для книжки с молниями), но для сильно меняющейся фигуры при вращении, как для скролла, это нереально В Doomsday на каждый стейт можно назначить несколько кадров анимации, они будут следовать друг за другом до следующего стейта. В GZDOOM придется по одному кадру на стейт выставлять, нужно только выбрать правильные. А бленд между кадрами уже движок будет делать (про стейты кстати он мне кое-что подсказал, я попробую потом. Если заработает - буду очень рад - прим. theleo_ua)
2) Змейка-статуя:
Скрытый текст:
Doomsday: статуя всегда повернута задом к двери
GZDoom: на E1M1 статуя повернута боком к двери, на E3M1 задом к двери
Хочу как в думсдей:)
alekv:
но делается это в Decorate
Проблема в том, что добавляется риск использования такого модел пака в декорейтовских модах/вадниках (например в моде кто-то переопределил актора X, и я в модел паке тоже переопределил актора X, что тогда будет?).
Или эта проблема решаема?
alekv:
Я так понял у тебя они крутятся(как спрайты?)
Нет - они не крутятся. Но изначально они располагаются так, что могут например стоять "повернутыми задом к игроку, который смотрит на дверь" - например вот так:
Скрытый текст:
(так и хочется написать "я - успешная змея, моя работа заключается целый день смотреть в стену, жизнь за дспарила! Во славу графа!")
Т.е. на E1M1 они повернуты боком к двери, на E1M2 лицом к двери, на E1M3 задом к двери и т д - этого я хочу избежать. Я хочу, чтобы они всегда были повернуты спиной к двери (к которой они относятся). Ну таким образом, как это реализовано в думсдей.
alekv:
Если да, пропиши флажок +DORMANT или убери строки такие как MONSTER
Т.е. без декорейта тоже никак, верно?
alekv:
Незнаю, я стараюсь делать все 1 моделью иначе, геморно..
Проблема в том, что не я автор моделей (у меня даже фотошопы/здмаксы/и т д не проинсталлены, я не шарю как ими пользоваться). Хотя да, вариант "разобраться в модел едиторах" и отредактировать чужие модели рассматривать определенно стоит (на будущее).
alekv:
Но думаю есть выход прописав каждую субмодель через декорейт и modeldef отдельно и спавнить там где надо и как надо с помощью A_SpawnItemEx()
У меня есть подозрение, что такой метод вызовет очень много багов и проблем. Кстати, ранее я пытался юзать эту функцию (для других целей), и ничего не спавнилось (не помню уже, по какой причине). Надеюсь, что то была моя проблема, а не гоззы.
Вобщем у меня есть подозрение, что далеко не всегда оно отспавнит сабмодели строго так, как нужно.
alekv:
Эмм, с помощью простых спрайтов(картинок огня с наложенными эффектами прозрачности), меня лично устраивает.
И как такое сделать, не редактируя "чужую" модель, и без декорейта?
Тут я так понял выход только в "редактировании моделей" или декорейте, но декорейт по идее опасен (или я ошибаюсь?)
Я ж как раз это все затеял чтобы в декорейтовые моды играть, ибо НЕдекорейтовое думсдей тянет и сам:)
Кстати - если я хочу сделать например вот такой светильник https://dl.dropboxusercontent.com/u/25137016/D-Twinedtorch.png причем огонь тоже хочу сделать как там, то каким образом получить спрайты "конкретно того самого огня" с наложенными эффектами прозрачности ?
alekv:
в теме про 3д модели писал, но тишина..
Кинешь ссылку?
alekv:
На скринах там где зеленый пузырек(ArtiPoisonBag) четко видна прозрачность, это скрин из Doomsday?
Нет, это скрин из гоззы (все, что ты видел на том скрине, из гоззы). Догадаешься, как я это сделал?
Я кстати переписывался с автором этой модели, он мне посоветовал такой метод:
Скрытый текст:
У меня есть для тебя решение, старый способ получить прозрачку, где ее нет. Используй dither. Берешь текстуру стекла, заводишь ему новый альфа-канал и в шахматном порядке чередуешь полностью прозрачные и полностью непрозрачные пиксели. Получится сетка, сковозь эту сетку в двжке будет видна жидкость а также будет видно и само стекло
Но на тех скринах из гоззы я "другой" чит заюзал, ради интереса попробуй угадать сам, а чуть позже расскажу тебе как и если надо, могу выложить мой текущий пак, в том числе и с этой прозрачной флешеттой.
Заодно поиграешься с этим паком, и сам поймешь, почему я задавал такие вопросы про "поведение 3д моделей как спрайтов" и т д.
theleo_ua, если говорить про Еретик и статуи у дверей - то Думсдей и не умел раньше их расставлять верно. "Раньше" - имею ввиду, старые версии порта, т.к. новые уже не отслеживаю. Да и как это сделать наверняка, даже не знаю, кроме как взять конкретный IWAD, например - Еретика и расставить все модели в нужные стороны уже в коде порта, т.е. - сугубо индивидуально под конкретный вад и его карты. Толку отслеживать двери, если модель может стоять в произвольном месте, не обязательно у дверей. На том же Е1М1 Еретика, сразу в начале, на улице - несколько таких стоят у полукруглой стены и абы-как.
Решение этой узкой проблемы со "вшитием" в код порта - на мой взгляд, не верное, потому и не сделано. Тут нужен некий дополнительный функционал, дополнительные разделы внешних дефиниций или Mapinfo (если для Думсдей), в которых нужно определять конкретную карту, на ней конкретное место/сектор/уровень, конкретную модель в этом месте карты и крутить ее лицом в нужную сторону. Если такой функционал будет, то для основных IWad-ов это уже будет входить в дистрибутив порта, а для остальных вадов/карт - будет возможность расставлять такие модели самому. Я вижу этот как-то так, хотя могу и ошибаться и возможны (или уже есть) более простые решения.
Именно эта проблема с такими моделями, по-моему, уже решена в Райзен-3Д. Несколько лет назад заметил дополнительные файлы к его картам, где-то таким образом там это решается. Само-собой, это должно быть в коде самого порта, что-бы он знал и отрабатывал такие файлы/дефиниции.
theleo_ua С моделями повернутыми я решения пока что не знаю. Есть догадка вертеть их в ацс скрипте.. но не представляю как это сделать и того не стоит наверное.
theleo_ua:
У меня есть подозрение, что такой метод вызовет очень много багов и проблем. Кстати, ранее я пытался юзать эту функцию (для других целей), и ничего не спавнилось (не помню уже, по какой причине). Надеюсь, что то была моя проблема, а не гоззы. Вобщем у меня есть подозрение, что далеко не всегда оно отспавнит сабмодели строго так, как нужно.
Да нет, все нормально работает имхо, но геморно все это выставлять. И да можно и баги поймать из-за spawnitemEx, было что гозза на очень маленькой карте по истечению 5мин показывала слайдшоу, а все из-за того что некий объект спавнил(раздавал) по радиусу полет.
theleo_ua:
И как такое сделать, не редактируя "чужую" модель, и без декорейта? Тут я так понял выход только в "редактировании моделей" или декорейте, но декорейт по идее опасен (или я ошибаюсь?) Я ж как раз это все затеял чтобы в декорейтовые моды играть, ибо НЕдекорейтовое думсдей тянет и сам:) Кстати - если я хочу сделать например вот такой светильник https://dl.dropboxusercontent.com/u/25137016/D-Twinedtorch.png причем огонь тоже хочу сделать как там, то каким образом получить спрайты "конкретно того самого огня" с наложенными эффектами прозрачности ?
С чего ты взял что декорейт опасен ? Наверное лучше все таки делать такие эффекты в 3д редакторах и спавнить спрайт огня..
theleo_ua:
Нет, это скрин из гоззы (все, что ты видел на том скрине, из гоззы). Догадаешься, как я это сделал? Я кстати переписывался с автором этой модели, он мне посоветовал такой метод: Скрытый текст: У меня есть для тебя решение, старый способ получить прозрачку, где ее нет. Используй dither. Берешь текстуру стекла, заводишь ему новый альфа-канал и в шахматном порядке чередуешь полностью прозрачные и полностью непрозрачные пиксели. Получится сетка, сковозь эту сетку в двжке будет видна жидкость а также будет видно и само стекло Но на тех скринах из гоззы я "другой" чит заюзал, ради интереса попробуй угадать сам, а чуть позже расскажу тебе как и если надо, могу выложить мой текущий пак, в том числе и с этой прозрачной флешеттой. Заодно поиграешься с этим паком, и сам поймешь, почему я задавал такие вопросы про "поведение 3д моделей как спрайтов" и т д.
Не слышал еще про такие методы, врятли я буду парится с прозрачностью, долго делать кажется..
если говорить про Еретик и статуи у дверей - то Думсдей и не умел раньше их расставлять верно. "Раньше" - имею ввиду, старые версии порта, т.к. новые уже не отслеживаю. Да и как это сделать наверняка, даже не знаю, кроме как взять конкретный IWAD, например - Еретика и расставить все модели в нужные стороны уже в коде порта, т.е. - сугубо индивидуально под конкретный вад и его карты. Толку отслеживать двери, если модель может стоять в произвольном месте, не обязательно у дверей
Версия порта 1.8.6 (с которой я делал думсдеевские скрины выше, и которая пашет на WIN_XP) совместно с моделькой змейки (которую ты видишь на скрине) - умеет их расставлять в 99% случаев (можешь проверить сам, и если у тебя 1.8.6 не сумеет, я выложу тебе мою версию модели или порта, если это будет нужно). Но оно работает, факт.
PVS:
Толку отслеживать двери, если модель может стоять в произвольном месте, не обязательно у дверей
Скрытый текст:
1) Если модель стоит не возле двери - то:
а) Меня не сильно смутит, если она будет повернута не так, как я бы хотел б) Модель змейки с шариком обычно относится к какому-то логическому объекту, связанному с ключем (иначе зачем она будет стоять?), следовательно в таком случае есть что отслеживать. Если же такого логического объекта нет - см. пункт А.
2) Если модель стоит возле двери - то:
а) Я бы хотел, чтобы в таком случае она была повернута задом к двери б) В думсдее 1.8.6 в таком случае модель всегда (ну почти всегда) будет повернута задом к двери
Я чуть позже пошарюсь по картам еретика с целью найти те места, где либо нет двери возле змейки, либо дверь есть но змейка повернута "логически неверно" (самому стало интересно). Но уже просканив E1M1/2/3 могу сказать, что в думсдее 1.8.6 ситуация лучше, чем в гоззе (ну на моем текущем недоделанном паке естественно).
Кстати, символично, что версия гоззы похожа на версию думсдея (1.8.7 или 1.8.07 как ее еще любят называть). На всякий случай глянул в гоззе 1.5.6 и 2.0.03, ситуация та же самая (за исключением того, что в 2.0.03 неправильно еще и текстура на модель накладывается, но это уже другая история)
PVS:
На том же Е1М1 Еретика, сразу в начале, на улице - несколько таких стоят у полукруглой стены и абы-как.
Это другая модель, она не относится к "дверям, которые надо открывать ключами", поэтому поведение этой модели для меня не приоритетно (и да, ты прав, думсдей 1.8.6 на E1M1 повернул ее логически неверно). Но те модели, которые конкретно относятся к "дверям с ключами" (змейки с шариками, которые на скринах выше), в думсдее 1.8.6 расставлены всегда (ну почти всегда) правильно (если не согласен, тогда кидай скрин с E1M1/2/3 со своей 1.8.6, а я сравню со своим портом).
PVS:
Решение этой узкой проблемы со "вшитием" в код порта - на мой взгляд, не верное, потому и не сделано. Тут нужен некий дополнительный функционал, дополнительные разделы внешних дефиниций или Mapinfo (если для Думсдей), в которых нужно определять конкретную карту, на ней конкретное место/сектор/уровень, конкретную модель в этом месте карты и крутить ее лицом в нужную сторону. Если такой функционал будет, то для основных IWad-ов это уже будет входить в дистрибутив порта, а для остальных вадов/карт - будет возможность расставлять такие модели самому. Я вижу этот как-то так, хотя могу и ошибаться и возможны (или уже есть) более простые решения.
Именно эта проблема с такими моделями, по-моему, уже решена в Райзен-3Д. Несколько лет назад заметил дополнительные файлы к его картам, где-то таким образом там это решается. Само-собой, это должно быть в коде самого порта, что-бы он знал и отрабатывал такие файлы/дефиниции.
Да, здесь согласен, но см. выше - в думсдее проблема решена на 99% (ну вместо 99 там может быть 95 или даже 90, я прочекаю позже), но тем не менее, даже 90 это не так уж и мало (при 15% в гоззе).
Кстати - вот что сказал по этому поводу автор оригинальных моделей для хексена (которые я перекидывал в гоззу):
Скрытый текст:
Я знаю что Danij написал свой генератор геометрии уровня, отличающийся от Vanilla. Геометрия уровня может отличаться от исходной и количеством разбиений на треугольники, и генерацией нормалей или UV-координат.
а вот что он сказал по поводу "иногда (но редко) змейка даже в думсдей неправильно повернута":
Скрытый текст:
Я знаю что Danij написал свой генератор геометрии уровня, отличающийся от Vanilla. Геометрия уровня может отличаться от исходной и количеством разбиений на треугольники, и генерацией нормалей или UV-координат. Возможно где-то нормали или UV-координаты флипнулись (отразились по одной из осей)
theleo_ua:
У меня есть подозрение, что такой метод вызовет очень много багов и проблем. Кстати, ранее я пытался юзать эту функцию (для других целей), и ничего не спавнилось (не помню уже, по какой причине). Надеюсь, что то была моя проблема, а не гоззы. Вобщем у меня есть подозрение, что далеко не всегда оно отспавнит сабмодели строго так, как нужно.
alekv:
Да нет, все нормально работает имхо, но геморно все это выставлять. И да можно и баги поймать из-за spawnitemEx, было что гозза на очень маленькой карте по истечению 5мин показывала слайдшоу, а все из-за того что некий объект спавнил(раздавал) по радиусу полет.
Если я "подбираю" одну из сабмоделей (например оружие "замораживатель" состоит из двух сабмоделей, каждая из которых явлется отдельным актором в декорейте), то гозза сообразит, что вторую сабмодель уже не надо показывать, и этот айтем надо "удалить из памяти" ?
Если не понял, что я имею в виду, говори, распишу подробнее
alekv:
Да нет, все нормально работает имхо, но геморно все это выставлять. И да можно и баги поймать из-за spawnitemEx, было что гозза на очень маленькой карте по истечению 5мин показывала слайдшоу, а все из-за того что некий объект спавнил(раздавал) по радиусу полет.
alekv:
С чего ты взял что декорейт опасен ?
Для начала - распишу абстрактную трехмодульную схему обработки модел паков портом, и покажу на абстрактных примерах несколько вариантов реализации этой схемы:
Скрытый текст:
представим себе следующую трехуровневую схему порта:
Скрытый текст:
в думсдей типичный модел пак на этой схеме будет выглядеть вот так:
Скрытый текст:
И точно так же он будет выглядеть в гоззе, если мы не будем юзать декорейт в моделпаке.
Какие преимущества это нам дает:
1) Сейвгеймы "разрешены"
Скрытый текст:
Сейвгеймам абсолютно фиолетово (не зря на скрине модел пак фиолетовый) на то, какие паки и какие их версии будут подключены.
Соответственно, я могу пройти пол игры (например первые 3 хаба), потом удалить модел пак, загрузиться в конце третьего хаба (на ересиархе например), и продолжить игру дальше без не то что "глюков", а даже малейших причин бояться глюков. Т.е. я могу модифицировать мой модел пак как захочу и когда захочу, подключать/отключать его от порта когда захочу, удалять оттуда конкретные модели тоже когда захочу, и абсолютно безопасно грузить любые сейвы.
Например я прошел 3 уровня, захотелось мне заменить спрайт виала на 3дмодель, создал модел пак, подключил, загрузил сейв, играю. Прошел еще 3 уровня. Захотел добавить модельку флешетты. Добавил. Прошел еще 3 уровня. Понял, что флешетта кривая, надо ее менять. Изменил. Прошел еще 1 уровень. Понял, что спрайт красивее, вернул модель фласка на спрайт. Прошел еще уровень. Нашел на форуме тему, где кто-то сделал более красивую модель виала, чем я юзаю сейчас. Добавил ее в пак. Прошел еще 1 уровень. И т д. Любые модификации, и я не боюсь абсолютно ничего. Так как "графика" не сохраняется в сейвгеймы.
2) Сейвгеймы "безопасны"
Скрытый текст:
Из пункта 1 очевидно, что если мы меняем декорейт в модел паке, и грузим сейв со старой версией, то гозза скорее всего ругнется с сообщением об ошибке и не захочет грузить сейв. Но давайте рассмотрим вариант, если гозза не ругнется. Вот тогда действительно возникает риск, что ошибка всплывет в самый неподходящий момент, причем гораздо позже. Например я поменял (декорейтом) ересиарха и кентавра, и:
а) Допустил оплошность в описании актора (например не знал о том, что при использовании декорейта конкретно для моих целей, подразумевается, что надо все описание актора копипастить, а не только его часть (или наоборот - только часть, а не все (или на вики устаревшая информация, и копипастить оттуда уже нельзя, вобщем не суть) ), или банально мискликнул и поменял значение хелсов для ересиарха на 10% и не заметил)
б) Никаких оплошностей не допустил, но в результате того, что при сохранении сейва декорейт был один, а при загрузке другой, произошел баг, при котором например ересиарху сделалось 10% хелсов, а кентавру 200%
в) то же, что и Б, но вместо изменения хелсов - просто игра взглюкнет через 3 карты, и на 3-й карте не будет открываться выход
Я ловил такие глюки на примере пейнкиллера (там есть свой аналог декорейта в виде LUA скриптов), и эти глюки очень досадные. А так как игра сложная (ну те самые усложненные кастомные карты от фанатов, там найти секрет и собрать в этом секрете предметы занимает очень много усилий) и при прохождении требует усилий и времени, то будет очень обидно осознать, что придется это все проделывать заново.
Тем не менее, я любитель патчить моды именно во время геймплея, так как именно тогда замечаешь важные нюансы и находишь новые ошибки. Перепроходить игру заново после каждого такого патча (или наоборот - сам пак пропатчить, но игру допроходить на старой версии мода с глюками и недоделакми) - мне не очень нравится.
Так вот - "преимущество" при "бездекорейтовом" подходе здесь такое, что то, что было описано под спойлером, при таком подходе никаких проблем вызывать не должно (ибо при сохранении ничего из твоего мода не записывается в сейвгейм файл)
3) Как я уже писал выше, если мы юзаем наш модел пак параллельно с чужим декорейт модом (например играем на декорейтовом ваднике с новыми уровнями), то никаких "конфликтов мультидекорейтинга одних и тех же акторов в разных модах" мы смело можем не бояться (учти, что такие конфликты - потенциально могут привести к тому, что было описано под спойлером в предыдущем пункте)
А теперь рассмотрим схему модел пака с декорейтом:
Скрытый текст:
Теперь у нас появляются потенциальные проблемы, описанные в вышеперечисленных 3-х пунктах. В лучшем случае просто сейвы не заработают, в худшем - сейвы заработают, но через 2-3 карты начнутся глюки (в лучшем случае заметные сразу при возникновении, а в худшем случае "ОПА - так все эти 10 карт у кентавров было 50% хп? ЧТО ЗА?").
Дополним схему декорейтовым вадником с новыми уровнями:
Скрытый текст:
Так как мы не можем знать, что там автор задумал у себя в декорейте (а перелопачивать декорейт автора и сравнивать со своим - удовольствие еще то, особенно если учесть, что тебе под каждый такой вадник надо будет делать свою версию модел пака), то появляется вышеописанная проблема конфликта акторов. И хорошо, если она сразу будет заметна, а если она проявится через N часов геймплея?
И на закуску - еще одна схемка:
допустим кто-то захотел заюзать мой модел пак вместе со своим модел паком (или я захотел заюать несколько паков, свой и чужие) - получится примерно так:
Скрытый текст:
и граф его знает, что там внутри и как оно сработается между собой. Причем стоит уточнить: "красный прямоугольник" на картинке никаких опасений не вызывает (глюки в графике не страшны абсолютно, на геймплей они не влияют и в сейвгеймы они не записываются (если не согласны, жду аргументов) ), а вот зеленый - тут возможны проблемы. Не перелопачивать же 25 декорейтов на предмет, какой с каким конфликтует. Данный абзац кстати проверен на личном опыте манипуляций с разными модел паками от разных авторов для думсдей (при параллельном прохождении сингла с подключением/отключением этих паков и различных их комбинаций, а также моих переделок конкретно взятых паков) а также моддинга под гоззу (с декорейтом) и попытками сейвиться/лоадиться. Именно по этому я уверен (ну не на 100% конечно, но уверен:) ) в потенциальной безопасности сборника "красномодов" и потенциальной опасности сборника "зеленомодов"
Теоретические аспекты понятны. Теперь уйдем от абстракций, и рассмотрим реальную практику:
Скрытый текст:
Многое я уже писал выше, но повторю кратко:
1) Да, на личном опыте проверено, что сейвы часто просто не работают 2) Да, на личном опыте проверено, что иногда сейвы работают, но глюки появляются потом 3) Да - возможно вероятность таких проблем и небольшая, но согласишься ли ты рисковать проходить сложный вад на 5-й сложности с риском получить глюк с последующей необходимостью перепроходить его заново? Или внезапно обнаружить, что произошел "чит на 50% хелсов", который сделал тебе изи мод, и ты получил ложные впечатления от прохождения сложного вада, который на самом деле у тебя был "не сложным".
Также стоит напомнить, что я в перспективе планирую выкладывать эти модел паки на общий доступ, и возможно их захочет заюзать кто-то еще (и мне бы очень не хотелось, чтобы у него были проблемы с этим:) )
А проблемы такие я ловил (например в пейнкиллере), очень досадные.
Тут стоит учесть такой момент, что хексен это игра "без пистол стартов", и зачастую предполагаемый геймплей там "стартанул в начале вадника, и прошел до конца вадника". В таком случае рисковать не очень захочется (а проблемы будут очень досадными).
Поэтому я сейчас хочу попробовать максимально далеко уйти от декорейта (в идеале вообще его не юзать), и только если никак не получится сделать задуманное (а результат с декорейтом будет действительно "шедевральный", и заслуживающий того, чтобы терпеть недостатки и потенциальные глюки), тогда попробую с ним.
Этим и привлекает думсдей, что там используется строго такая схема модел (и остальных) паков:
Скрытый текст:
И сейвы работают всегда и везде (от паков никак не зависят).
Да, если пофантазировать на тему "какие возможности и достоинства мне даст декорейт в моем модел паке", то там рисуются очень интересные перспективы довольно красивых результатов (возможно даже я таки решу им воспользоваться, посмотрим как пойдут дела с паком), но этим меня и привлекает порт думсдей, что там возможности (в плане графики) впечатляющие, и они никак не влияют на геймплей/сейвы. Даже банальные змейки, которые повернуты задом к дверям, тоже НЕдекорейтовые/НЕгеймплейные (удалил модель, а сейвы все равно пашут) !
alekv:
Не слышал еще про такие методы, врятли я буду парится с прозрачностью, долго делать кажется..
Вобщем рассказываю как я сделал вот такую
Скрытый текст:
прозрачную бутылку в гоззе "очень простым, но читерским" методом:
Скрытый текст:
Шаг 1: К модели бутылки в комплекте шел вот такой спрайт для юзер интерфейса:
Скрытый текст:
Шаг 2: Кормим его гоззе вместо стандартного спрайта флешетты - теперь флешетта будет выглядеть вот так:
Скрытый текст:
Шаг 3: Выбираем мага, подбираем флешетту (или вводим чит на предметы), и юзаем флешетту - будет такой эффект:
Шаг 3.1: Спавнится прозрачная флешетта:
Скрытый текст:
Шаг 3.2: Потом она взрывается
Так вот:
а) Конкретно я текущим поведением хайрез спрайта флешетты доволен (она кстати и на UI красиво выглядит), поэтому для себя я так и оставлю ее хайрез спрайтом
б) Если тебе нужна конкретно прозрачная 3дмодель (спрайт не катит), то специально для тебя я попробовал дать флешетте модельку виала. В результате, при юзании такой "виало-флешетты" магом, получается вот так:
Скрытый текст:
Скрытый текст:
Да, на скринах 3д модель. Да, на скринах гозза.
Выкладываю тебе оба пака моделей (в одном флешетта хайрез спрайтом, во втором вместо флешетты модель виала):
Мне сейчас лень это ковырять, но думаю, через декорейт и spawnitemex можно добиться того, чтобы "стекло" на модели флешетты было прозрачным, а жидкость не прозрачной, так что если тебе это интересно, можешь поизучать.
З.Ы.
Скрытый текст:
Я знаю что Danij написал свой генератор геометрии уровня, отличающийся от Vanilla. Геометрия уровня может отличаться от исходной и количеством разбиений на треугольники, и генерацией нормалей или UV-координат
С каждым днем все больше убеждаюсь, насколько все-таки четкий и продуманный порт думсдей. А если еще и поддержку boom и декорейта http://dengine.net/dew/index.php?title=ZDoom_support запилят, то вообще шедевр будет
Вроде и модели, что стоят у дверей, можно найти с неправильным углом поворота, даже в главном ваде Еритика. Там ведь не всегда "Змейки", как ты говоришь, используются. Мне режет глаз не только модели у дверей, а и все остальные объекты декораций, которые при представлении в виде 3Д-моделей - позиционируются во все стороны, но не так как нужно. Заметил это давно, искал решение лет 10 назад - внешних инструментов у Думсдей не было тогда, да и не думаю, что появились сейчас, задача уж слишком не приоритетная, а реализация, может быть сложна. Порт много-чего может делать с моделями, не зависимо от того, как они сделаны в редакторе - но индивидуально, с конкретным экземпляром модели в определенном месте конкретной карты - Думсдей работаеть не может. Физически - модель одна, а на карте их может быть 20, авторам порта нужно разрабатывать инструмент, для работы с этим. Если это будет сделано, то конечно, будут протянуты ручки управления этим "наверх", в виде команд дефиниций или пр., что-бы модеры могли настраивать это, как им нужно...
В любом случае, на сколько понимаю - тебе ведь нужно это решить в ГЗДум, какие там инструменты есть для этого, я не знаю.
Но думаю есть выход прописав каждую субмодель через декорейт и modeldef отдельно и спавнить там где надо и как надо с помощью A_SpawnItemEx()
Возник следующий вопрос: имеется в декорейте такая команда:
NULL A 0 A_SpawnItemEx("KeyGizmoFloatYellow_Shinemap",0,0,0,0,0,0,0) //,SXF_NOCHECKPOSITION)
по задумке она должна спавнить актор KeyGizmoFloatYellow_Shinemap, но в реале она ничего не делает
Я беру, и дублирую эту команду:
NULL A 0 A_SpawnItemEx("KeyGizmoFloatYellow_Shinemap",0,0,0,0,0,0,0) //,SXF_NOCHECKPOSITION) NULL A 0 A_SpawnItemEx("KeyGizmoFloatYellow_Shinemap",0,0,0,0,0,0,0) //,SXF_NOCHECKPOSITION)
Теперь объект спавнится (но только 1 раз).
Вопросы:
1) Почему это так? 2) Как сделать, чтобы спавн одного объекта был одной командой?
Если надо, могу выложить весь мод с полной версией декорейт файла. Код для актора-спавнера следующий:
Скрытый текст:
//SPAWNER Actor KeyGizmoFloatYellow_Spawner : KeyGizmoFloatYellow replaces KeyGizmoFloatYellow {
States { Spawn:
NULL A 0 A_SpawnItemEx("KeyGizmoFloatYellow_3D",0,0,0,0,0,0,0) //,SXF_NOCHECKPOSITION) NULL A 0 A_SpawnItemEx("KeyGizmoFloatYellow_3D",0,0,0,0,0,0,0) //,SXF_NOCHECKPOSITION)
NULL A 0 A_SpawnItemEx("KeyGizmoFloatYellow_Shinemap",0,0,0,0,0,0,0) //,SXF_NOCHECKPOSITION) NULL A 0 A_SpawnItemEx("KeyGizmoFloatYellow_Shinemap",0,0,0,0,0,0,0) //,SXF_NOCHECKPOSITION)
А эта команда в декорейте случаем не первой в стейте идёт? А то он иногда зохавывает. В общем желательно там задержку сделать перед спавном - скорее всего поможет.
1) Почему это так? 2) Как сделать, чтобы спавн одного объекта был одной командой?
c4tnt уже ответил, но попробуй написать NULL A 1 A_SpawnItemEx() //Тоесть поставить хотя бы 1 или 2 тика перед тем как спавнить предмет, ну или же просто поставить пустышку как написал c4tnt.
theleo_ua:
С каждым днем все больше убеждаюсь, насколько все-таки четкий и продуманный порт думсдей. А если еще и поддержку boom и декорейта http://dengine.net/dew/index.php?title=ZDoom_support запилят, то вообще шедевр будет
То гозза все равно будет лидером потому что acs рулит. Лучше бы систему LOD запилили бы хоть в 1 порт и желательно в гоззу..
С прозрачностью, наверное все таки помучаюсь, меня заинтересовал способ с сеткой, но это когда дело дойдет до зелий, если вообще дойдет, а RenderStyle Translucent не совсем то что мне надо =( Я еще не пробовал и незнаю будет ли работать такое, сделать 3д модель жидкости и стеклянной колбы отдельными моделями и спавнить модель колбы с тем же RenderStyle, а жидкость без рендера, но даже если и получится, все равно как-то не так смотреться будет..
theleo_ua:
Если я "подбираю" одну из сабмоделей (например оружие "замораживатель" состоит из двух сабмоделей, каждая из которых явлется отдельным актором в декорейте), то гозза сообразит, что вторую сабмодель уже не надо показывать, и этот айтем надо "удалить из памяти" ?
Если правильно понял(ты про инвентарный предмет который подбирает игрок и он состоит из N.. суб моделей), то надо делать так что бы 2 суб модели подбирались одновременно, с этим проблем быть не должно. Если ты про модели оружия на hud экране, то я сам пока что не знаю т.к. не делал таких моделей, но уверен выход есть всегда, даже если не через декорейт, то с помощью acs точно.. вопрос в том надо ли такие сложности?
theleo_ua:
Кстати - вот что сказал по этому поводу автор оригинальных моделей для хексена (которые я перекидывал в гоззу):
Передавай автору моделей так сказать респект, очень красивые модели и хорошо вписываются в атмосферу Hexen.
А эта команда в декорейте случаем не первой в стейте идёт? А то он иногда зохавывает. В общем желательно там задержку сделать перед спавном - скорее всего поможет.
alekv:
c4tnt уже ответил, но попробуй написать NULL A 1 A_SpawnItemEx() //Тоесть поставить хотя бы 1 или 2 тика перед тем как спавнить предмет, ну или же просто поставить пустышку как написал c4tnt.
Попробую, спасибо
alekv:
То гозза все равно будет лидером потому что acs рулит
Ну понятие "ZDoom support" включает в себя и acs в том числе, тут вопросов нет. Другое дело, что вероятность, что поддержку здума запилят, крайне мала
alekv:
а RenderStyle Translucent не совсем то что мне надо =(
Почему, если не секрет?
alekv:
Если правильно понял(ты про инвентарный предмет который подбирает игрок и он состоит из N.. суб моделей), то надо делать так что бы 2 суб модели подбирались одновременно, с этим проблем быть не должно.
А можно чуть конкретнее: каким образом ты сделаешь, чтобы "лишняя" моделька полностью вела себя, как надо, за исключением того, чтобы не давала "вторую копию" предмета игроку (ведь оба актора ты будешь наследовать от класса этого предмета, верно?)
И каким образом ты сделаешь, что если игрок сверху подлетает на претмет, то у него 100% не получится "верхнюю часть предмета взять, а нижнюю нет" ? Ну из-за различия Z координат у них
alekv:
Передавай автору моделей так сказать респект, очень красивые модели и хорошо вписываются в атмосферу Hexen.
Если не будет качаться, говори, я перевыложу. В том паке он выложил более новые версии своих моделей (например модель виала и фласка там уже выглядит чуть по другому, и не смотрит всегда лицом на игрока, как спрайт). Флешетта там по идее тоже изменена (не успел заценить еще).
Ну понятие "ZDoom support" включает в себя и acs в том числе, тут вопросов нет. Другое дело, что вероятность, что поддержку здума запилят, крайне мала
Не, просто если все фичи в Doomsday все таки запихают, у разрабов встанет серьезный вопрос с оптимизацией без которой красочные карты будут лагать похлеще гоззы(ИМХО).
theleo_ua:
а RenderStyle Translucent не совсем то что мне надо =( Почему, если не секрет?
Потому что прозрачность полученная таким образом не очень качественная, некоторые полигоны 3д модели выдиляются среди других, а если накладывать эффект ореола с помощью декорейта, там тоже некоторые недочеты возникают с дин. лайтом также.
theleo_ua:
А можно чуть конкретнее: каким образом ты сделаешь, чтобы "лишняя" моделька полностью вела себя, как надо, за исключением того, чтобы не давала "вторую копию" предмета игроку (ведь оба актора ты будешь наследовать от класса этого предмета, верно?) И каким образом ты сделаешь, что если игрок сверху подлетает на претмет, то у него 100% не получится "верхнюю часть предмета взять, а нижнюю нет" ? Ну из-за различия Z координат у них
Во первых делая такой итем, можно сделать так что бы 1 основной, спавнил 2 дополнительный и если 1 поднять пропадает и 2 при этом 2ой ничего не дает игроку. Во вторых, если делать реально отдельные друг от друга итемы одного предмета, то ничто не мешает тебе сделать одинаковые Height и Radius и спавнить их в одинаковых координатах, хотя 1 способ намного лучше! Только вот главное не ошибиться с A_Spawn... т.к. можно получить слайдшоу по истечению минут 5 игры. В гоззе не желательно делать итемы которые спавнятся постоянно и не пропадают.
theleo_ua:
Окей:) Согласен кстати, модели добротные. К слову, советую тебе скачать и оценить еще вот этот пак: http://dengine.net/forums/viewtopic.php?f=18&t=1491 (прямая ссылка https://dl.dropboxusercontent.com/u/25137016/xarp_01.box.zip ) Если не будет качаться, говори, я перевыложу. В том паке он выложил более новые версии своих моделей (например модель виала и фласка там уже выглядит чуть по другому, и не смотрит всегда лицом на игрока, как спрайт). Флешетта там по идее тоже изменена (не успел заценить еще).
Во первых делая такой итем, можно сделать так что бы 1 основной, спавнил 2 дополнительный и если 1 поднять пропадает и 2 при этом 2ой ничего не дает игроку. Во вторых, если делать реально отдельные друг от друга итемы одного предмета, то ничто не мешает тебе сделать одинаковые Height и Radius и спавнить их в одинаковых координатах, хотя 1 способ намного лучше! Только вот главное не ошибиться с A_Spawn... т.к. можно получить слайдшоу по истечению минут 5 игры. В гоззе не желательно делать итемы которые спавнятся постоянно и не пропадают.
Понял, спасибо за инфу. Если первый метод работает, то да - он лучше
Кстати - какими командами делается:
1) если 1 поднять пропадает и 2 2) 2ой ничего не дает игроку
Кстати - какими командами делается: 1) если 1 поднять пропадает и 2 2) 2ой ничего не дает игроку
Вот не большой пример это бывшее зелье жизни в моем старом моде и поверх него спавнился типо ореол. Названия переименовал
Скрытый текст:
Actor GGG : CustomInventory 7914 { Inventory.PickUpMessage "" Inventory.Icon "" Inventory.InterHubAmount 5 Inventory.MaxAmount 5 Inventory.Amount 1 +INVBAR +DROPPED +HUBPOWER -AUTOACTIVATE States { Spawn: MODL A 7 Bright A_SpawnItem("XXX",0,15) //Тут настраиваешь Z,X,Y координаты итема, думаю 2 часть модели, тоесть actor"XXX" лучше заранее в блендере выставить нужную высоту что бы потом не париться с высотой в декорейте(тоесть в блендере высота 1 итем "Z=0" 2 итем "Z=15") Loop \\Loop Обязательно должно быть тут т.к. будет постоянно спавнить 2 итем... Use: TNT1 A 0 A_JumpIf(Health>=100,3) TNT1 A 0 A_PlaySound("Item/DRINK") TNT1 A 0 HealThing(50) TNT1 A 0 A_Print("You Health is max!") Stop } }
Actor XXX 7765 { +NOGRAVITY States{ Spawn: EFF8 A 8 Bright Stop //Тут Loop не надо т.к. после 8 тиков актор XXX перестает существовать, но актор GGG ее занового спавнит(Так для справки если поставишь loop то GGG будет спавнить 2 итем пока не поймаеш слайдшоу ) } }
Таким образом игрок видит актора GGG который спавнит XXX, актор получает только GGG и все то что он дает при активации\поднятии, и помоему даже если выкинуть такой итем он все равно будет спавнить там где тебе надо 2 суб модель... Так же можно еще что-то придумать с A_SpawnItemEx(), но проверять долго, он по моему по другому спавнит..
Вот не большой пример это бывшее зелье жизни в моем старом моде и поверх него спавнился типо ореол. Названия переименовал
Скрытый текст:
Таким образом игрок видит актора GGG который спавнит XXX, актор получает только GGG и все то что он дает при активации\поднятии, и помоему даже если выкинуть такой итем он все равно будет спавнить там где тебе надо 2 суб модель... Так же можно еще что-то придумать с A_SpawnItemEx(), но проверять долго, он по моему по другому спавнит..
Интересная логика, спасибо за пример кода
alekv:
И думаю все же лучше эти вопросы задавать в этом разделе(жми на ссыль ). Как бы универсальная темка=)
1) Как сделать, чтобы модель всегда смотрела на тебя лицом?
2) Как сделать, чтобы модели статуй из еретика, которые держат сферы-индикаторы ключей, всегда спавнились спиной к дверям?
Чтобы это сделать, нужно переделывать мапы игры, поскольку в думе/Hexen/Heretic многие предметы имеют только один спрайт, который смотрит на тебя всегда лицом, про точку, куда должен "смотреть" предмет (при помощи Angle в ДБ) при создании мапы никто не парится, ведь какая разница, куда повернут на самом деле предмет, если он все равно "смотрит" только на тебя. Именно поэтому при добавлении моделей/дополнительных спрайтов с поворотами предметов несколько проблематично
1) Как сделать, чтобы модель всегда смотрела на тебя лицом? 2) Как сделать, чтобы модели статуй из еретика, которые держат сферы-индикаторы ключей, всегда спавнились спиной к дверям?
Помоему нашел выход, я сейчас делаю 2д мод, и там надо было менять угол персонажа, так вот такой простой скрипт повернет нужную тебе модель в нужное тебе направление, остается только прописать ID модели и куда повернуть. Более подробно жми тут Script 1 Enter {SetActorAngle(0,0.75);Terminate;}
Может я немного не по теме, но как запустить GZDoom на новом мониторе? Проблема в том, что моя видяха не поддерживает 1920 на 1080, а монитор у меня новый - 24 дюймовый - приходится заходить в меню при загрузке винды и ставить видеорежим с низким разрешением 640на480, а уже потом менять разрешение экрана на 1600 на 1200... Когда я запускаю GZD появляется сообщение на мониторе о том что не поддерживается 1920 на 1080! - Приходится перезагружать комп и снова из режима с низким разрешением менять разрешение на более высокое! Как запустить GZD так, чтобы он запустился с низким разрешением?
Помоему нашел выход, я сейчас делаю 2д мод, и там надо было менять угол персонажа, так вот такой простой скрипт повернет нужную тебе модель в нужное тебе направление, остается только прописать ID модели и куда повернуть. Более подробно жми тут Script 1 Enter {SetActorAngle(0,0.75);Terminate;}
Можно чуть подробнее: каким образом данный скрипт будет определять местоположение игрока (ведь для поворота лицом к игроку надо знать его местоположение) ? Можно ли юзать ACS скрипты без декорейта, или придется через декорейт переопределить актор игрока, и вписывать туда вызов данных скриптов?
Если же ты имел в виду "вращать модели независимо от игрока (разово при старте карты)", тогда следующий вопрос: каким образом через ACS определить, с какой стороны от модели находится "запертая ключем" дверь ?