Zoro попросил меня сделать несложную анимированную модель для custom AI. Это будет слизняк (примерно как в Wizardry 8 (http://www.tgeweb.com/ironworks/previews/Wizardry8/Wiz800000.JPG)). Он должен ползать и делать некоторые другие вещи. Вот примерный список анимаций:
- слизняк ползет (патрулирует маршрут)
- слизняк стоит на месте
- слизняк атакует
- слизняк получает повреждение
- слизняк умирает
Вся анимация - в виде колыханий бесформенной массы. В идеале - как в Wizardry 8 (http://www.youtube.com/watch?v=oKazbrYMuc8) (1:10 и дальше), но может быть и проще.
Пошарив по форумам, я не нашел никакой конкретной информации по анимированным моделям в Thief - все какие-то крупицы, которые сложно собрать в единое целое. Вот что мне удалось узнать/получить на текущий момент:
- туториал (http://wenchy.net/old/meshes.html) по созданию модели и привязке ее к готовому скелету;
- папку Motion Workshop внутри DromEd Toolkit, в которой есть несколько программ, одну из которых даже удалось запустить:
(http://hedonism.nm.ru/images/motion_editor.png)
Надо ли говорить, что я в шоке от способа редактирования?
И, как я понял, создание новых скелетов не предусмотрено - только использование существующих. Кстати, скелет паука, который, как мне показалось, ближе всего к слизняку, в Motion Editor не выбирается - только гуманоид.
Если кто-нибудь знает что-либо об изготовлении анимированных моделей для Thief, большая просьба проконсультировать меня в этом топике. Самый главный вопрос - стоит ли вообще начинать со всем этим разбираться или лучше всего сразу отказаться от этой затеи?
От конкретного слизняка, наверное, лучше оказаться. Вот почему.
Во-первых, соответствующего скелета не существует. Как создавать новые - никто не расскажет.
Во-вторых, в этой программке, по-моему, работает только человеческий скелет и рука игрока.
В-третьих, опасаюсь, что шок от способа редактирования перерастет в системный, но все-таки скажу. Превьюшки в правой части окна программы не соответствуют действительности. То есть ориентироваться по ним изредка можно, а чаще - нет. Дезинформируют. Единственный способ с помощью этой программки чего-то добиться - это каждое внесенное изменение отслеживать напрямую в игре.
Если бы мне приспичило вставить в игру слизняка, я бы ограничился жестко анимированной моделью (как сделаны крысы). Они могут патрулировать, они как бы движутся, но вся анимация осуществляется только за счет циклической смены модели. Естественно, здесь и речи не может идти о специальной анимации для атаки или для умирания, хотя путем долгой возни с подменой модели и мозгодробительного скриптования можно, наверное, добиться и этого.
Но готов ли Zoro этим заниматься?
А насколько DromEd отличается от ShockEd?
Во втором шоке были черви. Они могли нападать, ползать и умирать. Может их можно портировать?
Отличается настолько мало, что даже файлы, сделанные в одном, открываются в другом.
Идея хороша. К сожалению, больше ничего сказать не могу - ShockEd не пользуюсь, и даже игры у меня нет.
ЦитироватьВо-первых, соответствующего скелета не существует. Как создавать новые - никто не расскажет.
Во-вторых, в этой программке, по-моему, работает только человеческий скелет и рука игрока.
Это я уже понял. У меня такая мысль по этому поводу: что если поставить человека, пардон, раком, и заставить изображать слизняка?
Торс будет горбиком сверху. Конечности будут привязаны к периметру. В принципе, вся анимация в основном сводится к некоторым колебаниям горбика. Причем конечности могут и не гнуться для упрощения - можно считать их просто палками. Голову тоже можно считать конечностью - для лучшего контроля за формой. Она ведь гнется, да?
Я понимаю, звучит диковато, но если нет других вариантов, то почему бы не попробовать?
ЦитироватьТо есть ориентироваться по ним изредка можно, а чаще - нет. Дезинформируют.
Вот это плохо. Но насколько дезинформируют - может, при простых анимациях вполне достоверная картинка будет?
ЦитироватьОни могут патрулировать, они как бы движутся, но вся анимация осуществляется только за счет циклической смены модели.
То есть некая псевдоанимация. Получается, что в Thief нет полноценной вертексной анимации, только скелетная и описанный тобой крысиный вариант?
ЦитироватьВо втором шоке были черви. Они могли нападать, ползать и умирать.
Что-то даже не помню, как они выглядели... Как давно это было!
Может кто не видел: http://www.youtube.com/watch?v=fM-szCcWqo0
Цитата: clearing от 23 мая 2011 16:54:25
Может кто не видел: http://www.youtube.com/watch?v=fM-szCcWqo0
чтоб создать такое,надо быть извращенцем
это не анимация,а циклическая смена 24-х моделей
Цитата: Chuzhoi от 23 мая 2011 16:33:21
То есть некая псевдоанимация. Получается, что в Thief нет полноценной вертексной анимации, только скелетная и описанный тобой крысиный вариант?
Да, голова гнется, вращается, наклоняется в таких пределах, что человеку и не снилось. Легко можно изобразить поворот на 360 градусов в вертикальной плоскости.
ЦитироватьУ меня такая мысль по этому поводу: что если поставить человека, пардон, раком, и заставить изображать слизняка?
Я не осмелился предложить. Но раз уж ты сам... тогда плавно переходим к пункту 3.
ЦитироватьНо насколько дезинформируют - может, при простых анимациях вполне достоверная картинка будет?
Да, это не исключено. За все время работы с этой недоделанной (без оскорбительного смысла) программой мне так и не удалось уловить закономерность, с какого момента картинки вдруг перестают быть достоверными.
Скажем, я даже не смог однозначно определить, что находится на третьей картинке - вид сверху или вид снизу.
Поэтому установленный Thief со специально подготовленным MIS-файлом (где эта анимация уже подключена к персонажу) - единственный обнаруженный мной способ хоть как-то контролировать результат.
Кроме того, не забывай, что после создания анимации тебе еще предстоит редактировать схемы и заново компилировать motion database. К счастью, это делается только один раз - изменения самой анимации в схемах никак не отражены, и при правке уже существующей анимации достаточно заменить два отвечающих за это файла (которые сохраняются напрямую из программы). Ничего сложного в этом нет, но один раз придется разобраться.
А к несчастью - баз движений существует несколько, а подключить ты можешь только одну из них. Скажем, если ты возьмешь стандартную от игры, а автору потом захочется использовать движения из расширенной, то он этого сделать не сможет, не потеряв твоих изменений. Можно сразу брать и вносить изменения в расширенную, но там есть ряд глюков и особенностей.
ЦитироватьПолучается, что в Thief нет полноценной вертексной анимации
Если бы еще кто-нибудь взялся мне объяснить, что такое вертекс... но, видимо, ответ все-таки "нет", потому что две других описанных схемы полностью исчерпывают разнообразие Thief по части анимации.
Тем не менее мне почему-то кажется, что у тебя все получится. Предложенный тобой способ неудобен и требует много лишней работы (руки ведь надо будет куда-то пристраивать, даже если сделать их рудиментарными или - если такое допустимо - спрятать внутрь тела), но его несомненный плюс: он возможен.
т-е всемто одной,анимированной модели слизняка,лучше иметь 50 не анимированых,но циклически меняющихся ?
Возьмись, разработай новый скелет. Это не будет извращением.
Вчера вечером осваивал DromEd. Научился создавать простые уровни, пускать охрану по маршруту, создавать подклассы в иерархии, сохранять gamesys.
Вопрос, не связанный с темой: почему, если я беру оглушенное тело охранника, у меня исчезают шаги до тех пор, пока не подпрыгнешь, или не сменится поверхность? Я такое изредка встречал в Thief, но у меня это повторяется стабильно.
Как версия: возможно, стартовая точка расположена слишком низко.
Кстати, возвращаясь к теме: вроде бы всплыли исходники той самой программки для создания анимации, и кто-то на TTLG пытается с этим разобраться. К сожалению, она написана на Delphi, так что осложнения неизбежны.
http://ttlg.com/forums/showthread.php?t=135627
http://ttlg.com/forums/showthread.php?t=135757
ЦитироватьКак версия: возможно, стартовая точка расположена слишком низко.
Я тоже так сначала подумал. Но потом я ее поднял (игрок вначале падает с воздуха), но эффект остался. Ну да ладно.
Еще пара побочных вопросов:
1. Можно ли сделать, чтобы лайтмэпы были видны в DromEd? У меня они видны только на дальних стенах, вблизи стены отображаются в полную яркость.
2. Каково нормальное значение Ambient Light? Я использовал, кажется, 20 20 20. Дефолтное значение оказалось очень ярко - камень постоянно светился.
PS. Я стукнул бесчувственного охранника дубинкой и он выругался. Это нормально?
Теперь по теме.
Не мог бы ты (или любой, кто желает помочь) вкратце расписать путь, по которому мне теперь двигаться, или хотя бы дать ссылку на хороший туториал по созданию кастомных персонажей? Я, например, не знаю, что такое "схема". Что мне нужно вообще сделать, чтобы модель/анимация, которые я создам, появились в игре?
Можно посмотреть мои "заметки": http://darkfate.ru/?show=files/editors/dromed/tutorials/dromed_notes_part2.pl пункт 8.0.4. Но там расписано, только как использовать уже готового персонажа с уже готовыми движениями.
Схемы - по-хорошему, вместе с DromEd должен быть ещё и архив schema.crf (если нет - можно найти). Там расписаны оригинальные схемы, можно делать по аналогии с ними.
ЦитироватьPS. Я стукнул бесчувственного охранника дубинкой и он выругался. Это нормально?
Ага.
Цитироватьвместе с DromEd должен быть ещё и архив schema.crf (если нет - можно найти)
http://darkfate.ru/?show=files/editors/dromed/dromed
Цитировать1. Можно ли сделать, чтобы лайтмэпы были видны в DromEd? У меня они видны только на дальних стенах, вблизи стены отображаются в полную яркость.
Ты имеешь в виду - в окошке 3D? Нет, нельзя. Хотя в DromEd 1 это окошко все показывает.
Цитировать2. Каково нормальное значение Ambient Light? Я использовал, кажется, 20 20 20. Дефолтное значение оказалось очень ярко - камень постоянно светился.
Ambient Light не оказывает влияния на камень. Светился он из-за того, что не были первый раз выполнены стандартные для любой FM процедуры - построение Room database, AI Room database и Pathfind database. Также должны быть загружены стандартные скрипты - Convict и Gen.
20 20 20 - нормальная величина, если не требуются глубокие тени. Собственно, это будет довольно светлая FM. Попробуй задать 10 10 10 для сравнения - возможно, понравится больше.
Всем спасибо! Буду разбираться дальше.
Выяснил, что в архиве mesh.crf есть текстовые файлы *.map и *.mjo вполне понятного содержания. Если это и есть определения скелетов, то разработать новый скелет - раз плюнуть. Вопрос только в том, как потом этот скелет анимировать...
ZontikЦитироватьЕсли бы еще кто-нибудь взялся мне объяснить, что такое вертекс...
[off]Вертекс - это вершина (в геометрическом смысле). То есть точка, в которой сходятся полигоны.
Вертексная анимация - это когда для каждого последующего кадра полностью трансформируется модель путем перемещения вертексов. Поскольку средняя модель в Thief состоит из 200-500 вертексов (а в современных моделях их по нескольку тысяч), то анимация превращается в долгий муторный процесс. К тому же, когда нарисованы сотни кадров анимации, вносить изменения в модель - это означает практически все переделывать. Хотя в старых играх (Quake, Unreal) анимация была именно вертексная.
При скелетной анимации вертексы разбиваются на группы, и каждая группа привязывается к своему суставу скелета, после чего анимируется сам скелет.
Преимущества очевидны - скелет анимировать быстрее и проще (вместо сотен вершин - пара десятков суставов). Кроме того, уже после создания анимации можно вносить изменения в модель, или разработать совершенно новую модель и повесить ее на существующий скелет.
У вертексной анимации тоже есть преимущества - с помощью нее можно анимировать что угодно и как угодно, в то время как возможности скелетной анимации ограничиваются движениями скелета. Скажем, для слизняка, наверное, скорее подошла бы вертексная анимация (действительно, какой скелет может быть у слизняка?)
То, что ты описал с крысой - в принципе это и есть подобие вертексной анимации, только без возможности выбора движения.[/off]
[off]Спасибо, теперь понял. А какой тип анимации у AI в TDS? Спрашиваю просто из любопытства. Интересно, может ли мимика анимироваться с помощью скелета. У людей может, а как с этим у AI?[/off]
[off]Насчет лиц точно не знаю. Яндекс по запросу "лицевая скелетная анимация" выдает ответы в виде "лицевая и скелетная анимация"
Хотя есть картинка:
(http://www.gamasutra.com/features/20010418/moore_04.jpg)(http://www.gamedev.ru/articles/3dmod/20508ca.jpg)
Насколько мне известно, анимация лиц делается отдельно от анимации тел, поэтому не исключено, что там применяются какие-то особые технологии.
[/off]
Как сделать так, чтобы при редактировании движений и схем не приходилось перезагружать DromEd (а то без этого Thief не понимает, что движения отредактированы)?
Видимо, никак, поскольку похоже, что ресурсы загружаются при запуске или при первом входе в игровой режим. Во второй раз и последующие все данные уже считываются из какого-то буфера.
То есть нужно нажзать Alt-G, Alt-E, снова Alt-G? Я так и делал. Поначалу срабатывало. Но вчера вообще перестало. Приходилось полностью перезагружать DromEd. С чем это связано - не знаю.
Кстати, в ридми к Motion Database Editor автор пишет, что не понимает, что за цифры прописаны за движениями в mos-файлах. Например, схема может состоять из 4 движений, список которых выглядит так:
motion NM113000 4 500
motion NM113001 0 500
motion NM113002 0 500
motion NM113003 0 500
Похоже, мне удалось разобраться с этими цифрами (хотя я могу ошибиться в некоторых деталях).
Первая цифра может быть равной 1, 2, 4 или суммой этих чисел (ну, степени двойки, сами понимаете). При суммировании эффекты комбинируются.
1 - интерполяция между движениями. Видна только на анимациях с очень низкой частотой кадров.
Вообще, анимация между кадрами в пределах одного движения интерполируется всегда. А вот если движение зациклено, или схема состоит из нескольких движений, то интерполяция между последним кадром предыдущего и первым кадром последующего происходит только тогда, если первое число содержит 1.
Кстати, при анимациях из нескольких движений всегда происходит пауза между движениями длительностью в один кадр, особенно заметная при анимации с низким FPS, и никакая единица не помогает (она лишь немного сглаживает движение).
2 - странные круговые движения вокруг вертикальной оси. Модель идет не по маршруту, а утыкается в стену и начинает елозить лицом по этой стене, хаотично поворачиваясь вправо и влево.
4 - отключение движения по горизонтали ("бег на месте").
Вторая цифра изменяет равномерность анимации. Если она равна 0 - то кадры будут идти с равномерной частотой. Если больше 0 - то анимация будет начинаться медленно, к середине движения ее скорость возрастет, а к концу опять замедлится, причем чем больше число, тем сильнее будет этот эффект. Подходит в основном для одиночных движений (для которых, как правило, используется значение 500). Для повторяющихся движений типа ходьбы эта цифра обычно установлена в 0 или используются небольшие значения (до 200).
Бесценная информация! Скопировал в файл.
Пара комментариев.
Цитировать1 - интерполяция между движениями.
Очень полезная вещь, когда трудно или невозможно зацикливать движение вручную.
Цитировать4 - отключение движения по горизонтали
Но это, пожалуй, намного ценнее.
Дело в том, что при многократном повторе одних и тех же движений (скажем, мытье посуды или дерганье за рычаг - как было у меня в "Зеркале") персонаж часто "уезжает" в сторону. Теперь понятно, почему - видимо, вместо 4 была выставлена единица. Простое исправдление схем, возможно, решило бы эту проблему ценой небольшого рывка в конце анимации.
ЦитироватьПростое исправдление схем, возможно, решило бы эту проблему ценой небольшого рывка в конце анимации.
По моим наблюдениям, цифры можно складывать (т. е. установить 4+1=5). Хотя тут нужна более тщательная проверка.
ЦитироватьТо есть нужно нажать Alt-G, Alt-E, снова Alt-G?
Цитироватьресурсы загружаются при запуске или при первом входе в игровой режим.
То есть перезагрузка DromEd - это единственно верный способ. Почему у тебя раньше срабатывало? А фиг его знает. Не смог считаться буфер по какой-то причине, и произошла подгрузка. Я так понимаю.
1. Как сделать, чтобы AI не реагировал на игрока?
2. Как принудительно запустить какую-нибудь анимацию?
[off]Я название темы подкорректировал.[/off]
Жирный оффтоп.
[off]Вопросы от Chuzhoi. Вопросы от Чужой. Вопросы от незнакомки...
Надо тему переименовать, а то у Чужого пол меняется :lol:[/off]
1. Не реагировал в игре или в отладочном режиме редактора?
Если вообще - то можно задать ему свойство AI > Core > Team > Neutral. Но он при этом будет реагировать на резкие звуки, найденные тела и другие события, в том числе и спровоцированные игроком.
Если только на время теста в редакторе - то просто включается специальный режим "никто не знает, что игрок тут" - простой командой типа ai_aware_of_player. Точно не помню, поскольку эта команда встроена у меня в пользовательское меню.
Уточни, что именно тебе нужно.
2. Лучший способ - диалог, срабатывающий от нажатия на кнопку. Есть хорошая демка, где таким образом показаны все стандартные движения. Я так понимаю, речь идет об отладке анимации? Тогда в диалоге нужно единственное действие AI - Play Sound/Motion, анимация прописывается в последнюю строку из трех. Можно также добавить следующим действием Frob Object и написать номер кнопки, запускающей диалог - тогда он постоянно будет перезапускаться, ты увидишь движение зацикленным и сможешь любоваться им бесконечно. Поскольку это не игра, процедуру выхода из цикла предусматривать не нужно.
clearing, верни, пожалуйста, название темы взад. Во-первых, анимация все-таки в Thief, а во-вторых, вопросы может задать любой желающий.
ZontikЦитировать1. Не реагировал в игре или в отладочном режиме редактора?
Именно в отладочном.
Попробуй ai_aware_of_player
Zontik Сработало!
Обнаружил один баг.
Если создать новое движение с новым именем, которого еще нет в motions.crf, то в нем не работает анимация головы. Почему не работает и почему именно головы - понятия не имею (меня как программиста всегда забавляли такие "абсолютно нелогичные" глюки). Причем включение файлов прямо в motions.crf не помогает.
Поэтому для полноценной анимации нужно создавать движения с уже существующими именами (причем любыми, что за движение и от какого существа - не имеет значения). Я думаю, движения буррика вполне подойдут - ведь в Thief 2 нет бурриков, не так ли?
Что-то ты делаешь не так.
Я создавал для "Истории короля" движения с новыми именами, головы двигались нормально.
У меня, впрочем, есть одно предположение. Ты вносил новые "концепции" движений в дополнительный файл? В базе данных движений есть три файла с отличающимися расширениями, вот в них и нужно вписывать новые имена в дополнение к тому, что ты вписываешь их "куда надо". Кажется, в этих файлах описываются торсы, причем еще задаются какие-то параметры (я так и не понял - какие, делал по аналогии) - возможно, именно с этим и связан твой шейный паралич.
Я бы посоветовал открыть папку MSCHEMAS из "Истории короля" и посмотреть, что я там менял и как. В архиве - только измененные файлы; все добавленные строки я, насколько помню, старался комментировать. Так что разберешься.
Что касается использования "готовых" имен - это плохая практика, что для текстур/звуков, что для движений, и рано или поздно каждый автор приходит к тому, что так делать все-таки не надо. Да и буррики в T2 есть, не в ОМ, так в куче FM.
Да, кстати: я полагаю, ты компилировал базу движений заново? Надеюсь, что да. Это нужно делать после каждого изменения в схемах (но, к счастью, не нужно после изменения самих движений).
И последнее. Насчет ai_aware_of_player я, не подумав, написал глупость. Оно, конечно, работает, но каждый раз при запуске вводить эту команду... Ты же делаешь демку для отладки движений, так? Тогда лучше самого AI сделать невосприимчивым и не париться каждый раз с вводом команд. Еще раз: задай своему AI свойство AI > Core > Team > Neutral, для твоих целей этого будет достаточно.
Я вроде бы все делал как ты описываешь: и moc-файлы (которых три) редактировал, и базу каждый раз перекомпилирую. Единственное отличие: папка MSCHEMAS лежит у меня не в Thief2, а отдельно. При компиляции в Thief2 сбрасывается лишь motiondb.bin - мне казалось, что этого достаточно. Может быть, в этом причина?
Нет, не в этом. Папка MSCHEMAS для игры вообще не нужна, это же скомпилированные в motiondb.bin исходники. Остальное все правильно.
А что, собственно, подразумевается под головой? Шея? Поскольку никакой другой головы в скелете как бы и нет.
Мне трудно судить, не видя самого движения, но, может, это как раз глюк, связанный с неверным отображением в красном-синем-зеленом окошках? То есть ты задаешь координаты, ориентируясь на положение головы в этих окошках, а в реальности никакого движения и нет? И еще вариант - если кадров много, а движение быстрое, может, ты просто не успеваешь увидеть, как голова дергается?
Я бы попробовал сделать медленную анимацию с заведомо отличающимся положением головы - скажем, для простоты всего из двух кадров: смотрит вперед - смотрит назад (как сова). Потом уже можно будет делать какие-то выводы.
Под головой подразумевается именно шея и то, что на ней. В случае слизняка это его передняя часть, но пока я экспериментирую на временной модельке из параллелепипедов.
Я уже какую только анимацию ни пробовал. И дело не в неправильном отображении в Motion Editor, и не в слишком быстрой анимации.
Попробую описать проблему более подробно:
- если я создаю новое движение и присваиваю ему новое имя, то шея в игре не двигается. Если я беру то же самое движение, но сохраняю его под любым именем, позаимствованным из motions.crf, то шея в игре приходит в движение, причем оно полностью соответствует движению в ME.
- если я беру любое из стандартных движений из motions.crf, и сохраняю его под новым именем, то шея не двигается. Если же я пересохраняю его под старым именем, или использую любое имя из архива motions.crf (неважно, какое), то шея приходит в движение.
Естественно, после каждого такого переименования редактируется mos-файл, перекомпилируется motiondb.bin и перезапускается Dromed.
В таких экспериментах я вчера провел весь вечер, и в конце концов решил использовать буррика.
Сегодня я еще раз попробую, а также посмотрю движения из "Истории Короля".
PS. Кстати, обнаружил чертовски удобную функцию в ME - интерполяция движений. Позволяет строить движения не покадрово, а по некоторым промежуточным точкам. Правда, интерполяция линейная, но вручную, учитывая способ редактирования, лучшего добиться трудно.
Без интерполяции у меня бы элементарно не хватило терпения создать даже хотя бы одно движение.
По описанию совершенно ясно, что проблема у тебя действительно есть, и она какая-то странная.
Я не помню сейчас точно, как называется движение, в котором наверняка использованы движения головы - кажется, это одна из вариаций Kingseat, где AI как бы читает книгу, слегка поводя при этом головой справа налево. Думаю, что у скрипача (Violinist) голова тоже подвижна, хотя не на 100% уверен.
Такое ощущение, будто мы оба забыли сделать какой-то важный шаг в алгоритме. То есть я забыл сейчас, а тогда помнил, и все получалось.
Подожди, подожди...
ЦитироватьЕстественно, после каждого такого переименования редактируется mos-файл, перекомпилируется motiondb.bin и перезапускается Dromed.
А как насчет
другого файла, в котором, собственно, и описывается движение? Один из тех, которых в папке не три, а много? Забыл упомянуть?
Если бы ты имел дело с DromEd раньше, ты бы заметил аналогию со звуковыми схемами для диалогов. В "общих" файлах (аналог MOC) указывается "концепция" диалога (то есть его название), а отдельные фразы и соответствующие им голоса и имена WAV-файлов описываются в другом файле, "частном".
Со схемами движений все очень похоже. Так что там насчет "частных" файлов (MOS, кажется?)? Ты их дописываешь?
Все получилось! Подробности завтра.
Значит, так.
Цифра 1 после имени движения в mos-файле, как я уже писал, означает интерполяцию. Полагая, что интерполяция - это очень хорошо, я ее и ставил после всех движений, которые делал и тестировал. То, что при 30 fps она совершенно не видна, а также то, что в стандартных mos-файлах она используется крайне редко, меня не смутило.
Оказалось, что именно цифра 1 убирает движения головы. Стоит ее заменить на 0 (или 4) - голова начинает нормально крутиться.
Кстати, я до сих пор не уверен, что я правильно понял значение цифры 1, но при 2-3 fps это выглядело именно как интерполяция при переходе от одного движения в цепочке к другому.
Кстати, обнаружил еще один эффект - если использовать уже существующее имя движения (как я хотел с бурриком), то оба этих движения (стандартное и кастомное) суммируются и получается смесь движений. Раньше этого я не замечал - видимо, потому, что тестовая модель, на которой я провожу эксперименты, состоит из туловища, головы и левой руки (без суставов), а не все игровые движения затрагивают именно эти суставы.
Остается непонятным, почему в этом случае я видел нормальные повороты головы - ведь база движений (motiondb.bin) существует в одном-единственном экземпляре, в ней для данного движения прописан вполне конкретный режим (единица), и никаких наложений этой единицы на что-то другое по идее быть не должно.
Теперь вопрос. Как все-таки запускать диалоги (чтобы вызвать то или иное движение)?
ЦитироватьТеперь вопрос. Как все-таки запускать диалоги (чтобы вызвать то или иное движение)?
Необходимо создать самого AI и маркер (обычный). Маркер будет отвечать за ход событий: ему нужно прописать скрипт (S -> Scripts у него в свойствах) TrapConverse и связать его с AI связью AIConversationActor. Обязательно нужно проставить номер (скажем, 1).
Затем, чтобы диалог можно было включить кнопкой, связываем кнопку с маркером связью ControlDevice.
После чего прописываем, за какое движение отвечает маркер: у него в свойствах AI -> Conversations -> Conversation. Выбираем самый первый шаг (00), откроется большое окошко. Тут достаточно определить первый и единственный шаг - проигрывание движения. Это пункт Play sound/motion. Движение, которое нужно воспроизвести, записать надо как
третий (Последний! Не первый, не второй.) аргумент. И выбрать актёра, который будет это движение воспроизводить - это ActorOne.
Можно сделать также по аналогии с демо-миссией Yandros'а, где показаны все движения. Название не помню, но на том же Keep of metal and gold или Thiefmissions по поиску по автору найти легко.
Маркер, да еще и обычный... Ладно, будем разбираться!
(можно удалить)
На выходных добился первых успехов. Слизняк ползает по маршруту - правда, при этом он висит в воздухе и ругается человеческим голосом. Анимация не совсем та, которой я бы хотел добиться в идеале, но, учитывая способ редактирования, оценки "хорошо", на мой скромный взгляд, заслуживает.
Теперь вопрос. Как правильно настроить физическую модель, чтобы слизняк ползал по полу, а сама физ. модель очертаниями напоминала тело слизняка (для правильного взаимодействия с мечом/дубинкой/телом игрока)?
В настоящий момент слизняк сделан из обычного охранника, у которого заменена модель. Поскольку положение по умолчанию у охранника стоя (представляете стоящего слизняка?), то его пришлось развернуть на 90 градусов по направлению движения, положив лицом на землю, и вместе с ним повернулась и физическая модель. На ощупь это снеговик из двух сфер - именно лежащий снеговик.
Идеальный вариант - невысокий цилиндр или сильно приплюснутая сфера. Но возможно ли такое?
Да, и можно ли посмотреть, как выглядит физическая модель в игре?
Вот так примерно он выглядит в настоящее время:
в максе (http://hedonism.nm.ru/images/slug/slug.png) (модель слегка искажена, чтобы более напоминать то, что мы видим в игре; на самом деле она в исходном состоянии более плоская)
в игре (http://hedonism.nm.ru/images/slug/slug_game.jpg)
в Motion Editor (http://hedonism.nm.ru/images/slug/slug_me.png)
Я почти уверен, что по полу он не ползает из-за того, что в Motion Editor не был "приземлен".
"Идеальные варианты" невозможны. Возможна одна сфера (сферическая), но я не уверен, применимо ли это к AI. Попробуй изменить количество субмоделей в свойстве Physics > Model с 2 на 1; еще один возможный вариант - изменить в этом же свойстве саму модель на Sphere Hat.
Посмотреть физическую модель в игре можно. К сожалению, у меня эта крайне полезная команда встроена прямо в меню, так что я с трудом представляю себе ее синтаксис. Файл меню от меня сейчас слишком далеко, чтобы заглянуть туда.
Я сначала не понял, как тебе удалось развернуть AI лежа (до сих пор никому это не удавалось), но потом выяснил, что ты сделал это прямо в Motion Editor. Здорово.
ЦитироватьЯ сначала не понял, как тебе удалось развернуть AI лежа (до сих пор никому это не удавалось).
Мне это тоже долго не удавалось. Выяснилось, что как ни верти модель в Максе, Dark Engine все равно ее поставит вертикально.
В Максе для модели указываются специальные маркеры, означающие голову и пятки (на картинке не показаны) - видимо по ним движок и ориентирует модель.
Кстати, только сейчас осенило: а что будет со зрением у AI, если его положить? Не будет ли он смотреть все время в пол, не видя игрока? Возможно ли создать круговое зрение у AI, равномерное во все стороны (для слизняка это может быть вполне приемлимо - будем считать, что у него нет глаз)?
Со зрением проблема только в куче настроек, но фактически настроить можно его как угодно. Есть набор так называемых "конусов видимости", и каждый из них настраивается раздельно: уровень тревоги, ночное зрение, дальность, направление, угол... еще море параметров. Вот только тестировать это довольно сложно.
Ага, я нашел статью про эти конусы... Все это чрезвычайно интересно.
Если бы еще слух мог настраиваться подобным образом! А так - все, что мы имеем, это 6 градаций. И никаких параметров.
К великому сожалению, нет также команды, которая бы позволила видеть эти зрительные конусы в игре (как мы можем видеть физические модели). То есть тестировать можно только вслепую.
Цитироватьа что будет со зрением у AI, если его положить? Не будет ли он смотреть все время в пол, не видя игрока?
В редакторе есть какая-то отладочная команда, показывающая направление взгляда ИИ. Попробуй, но я уверен что у спячего ИИ зрение просто отключено, только слух.
[off]Похоже, спят тут не только ИИ.[/off]
ЦитироватьПосмотреть физическую модель в игре можно.
Команда называется show_phys_models.
Экспериментально выяснено, что слизняк смотрит все-таки вперед (а не вниз). Так что, возможно, и не придется трогать конусы.
Возможно, конусы просто не привязаны к положению модели?
Кстати, "экспериментально" может быть и ошибкой. Конусы-то разные, и это конусы, а не линии. Так что не исключено, что он просто захватывает игрока каким-нибудь "затылочным" конусом.
Но раз работает, то больше ничего и не надо.
Я пробовал команду ai_draw, и она нарисовала кучу стрелок разной формы и размеров, направленных именно вперед. Другие команды из семейства ai_draw_* ничего не вывели (хотя пробовал не все).
Также пробовал команды из серии ai_watch_*, но они тоже ничего не вывели. Например, ai_watch_sight.
Но я отключал его нейтральность, и выяснилось, что сзади него можно спокойно идти, а вот если встать на пути... Зрелище жуткое (учитывая, что голос и остальная анимация у него пока человеческая).
По поводу физической модели. Пробовал разные варианты, но то ли отображается она не совсем корректно, то ли не все варианты работают, но пока единственное, чего удалось добиться - это сфера, у которой можно изменить размер. Сместить сферу не удалось.
Можно задать несколько сфер, но в окошко с координатами рассчитано только на две сферы (хотя, например, у паука их три).
Также не понял, что такое Sphere Hat и чем оно отличается от сферы. Мне казалось, что это полусфера, или часть сферы, но движок отображает ее как сферу.
Я тоже как не крутил, так и не понял причем тут шляпа.
ai_watch #AI - команда для отслеживания поведения конкретного AI во время игры. Подробнейший отчет пишется в монолог.
(#AI - номер соответствующего объекта, т.е. AI.)
Кстати, после запуска этой команды и входа в игровой режим можно будет посмотреть, кого AI видел (возможно даже, каким конусом) и как это на него повлияло.
И где же этот монолог?
monolog.txt в папке с игрой.
Не нашел никакого монолога. Ну да ладно.
Можно ли сделать так, чтобы при открытии DromEd сразу открывалась миссия? Чтобы не делать несколько лишних телодвижений.
Как же неудобно без редактора под рукой!
В какой-то из конфигурационных файлов вписывается отдельная строчка "monolog" (без кавычек), после чего данный файл (с расширением TXT) создается в папке с игрой и обновляется при каждом запуске игры или редактора. Вся нужная и ненужная информация сливается туда.
Да, можно сделать так, чтобы миссия открывалась сразу, для этого создается cmd-файл, в который пишется строчка определенного синтаксиса (в том числе и с именем миссии, которую надо запустить), а имя данного cmd-файла вписывается в какой-то уже существующий конфигурационный файл, чтобы он запускался при старте.
Но все это уже описывалось где-то в соседних ветках, так что попробуй поиск по слову Monolog или - вопрос №2 - start.cmd или что-нибудь похожее.
Спасибо! Поищу.
Текущий прогресс.
1. Пришлось отказаться от концепции "раком". Скелет теперь поставлен вертикально, голова привязана к горбику слизняка, конечности - к его периметру.
Причина - при наклоне слизняка вперед на 90 градусов он повисает в воздухе (т. к. крутится вокруг центрального сустава - jbutt). Попытка искусственно приземлить его в Motion Editor приводит к разнообразным глюкам - он начинает прыгать вверх-вниз, или, как вариант, просто медленно взлетает под потолок, словно дирижабль.
Чтобы таких глюков не было, координата Z, как я выяснил, в начале анимации должна быть равна 0. И в конце анимации тоже.
2. Сделаны анимации ползания, получения повреждения, умирания. Работаю над остальными.
3. В данный момент слизняк сделан из человека, у которого заменена модель и схема движений. Правильно ли это в принципе - я не знаю. Но если прикрутить звуки, характерные для слизняка, то это должно выглядеть как 100%-й слизняк. Но не приведет ли такой путь к каким-либо побочным эффектам?
И еще одна подробность по поводу физики. Решил остановиться на модели типа "снеговик". Причина - физическая модель не должна касаться пола, иначе возникают глюки (застревания при ползании на ровном месте, взлет). У снеговика верхняя сфера находится повыше (в районе шеи), и поэтому ее можно сделать побольше. Конечно, форма далека от формы слизняка, но другой возможный вариант - единственная сфера очень маленького размера - еще хуже.
Заметил также, что после каждого игрового сеанса размеры снеговика сбрасываются в дефолтные (нижняя сфера - 1,0, верхняя - 1,2), но на один сеанс их все-таки хватает. Еще один предмет для разбирательства. Эй, Zoro, ты еще не очень соскучился?
Цитироватьпосле каждого игрового сеанса размеры снеговика сбрасываются в дефолтные (нижняя сфера - 1,0, верхняя - 1,2)
Измени эти параметры у родительского класса. Если они там 1,0 и 1,2. По-моему параметры как раз в родительские сбрасываются.
ЦитироватьНо не приведет ли такой путь к каким-либо побочным эффектам?
Думаю, ничего неустранимого. По мелочам может много чего повылезать (например, взятие тела), но, как правило, это легко устраняется.
ЦитироватьИзмени эти параметры у родительского класса. Если они там 1,0 и 1,2. По-моему параметры как раз в родительские сбрасываются.
Не помогает совершенно.
Иерархия сейчас такова:
Object -> ... -> Human -> Slug
Так вот, изменение этих параметров ни в базовых классах, ни в моем собственном классе Slug не помогает. В иерархии все сохраняется, но непосредстванно у слизняка (A slug) сбрасывается в 1.0 и 1.2.
Более того, в ни в одном из базовых классов не указаны эти параметры. Они просто появляются сами уже у объекта, когда вставляешь слизняка (или, например, человека).
Такое впечатление, что некая неведомая сила действует, обходя иерархию.
ЦитироватьДумаю, ничего неустранимого. По мелочам может много чего повылезать (например, взятие тела), но, как правило, это легко устраняется.
А, скажем, такая проблема может возникнуть: можно убивать монстров, но нельзя людей. Но, если слизняк будет считаться человеком, то при его убийстве возникнет провал миссии. Это устранимо?
Погоди, а 2 "шара" вместе находятся? Т. е. центр одного шара (1.0) в центре другого (1.2)?
Так происходит когда убиваешь или глушишь NPC. Сколько я не пробывал - по-моему от этого не избавиться.
Цитироватьесли слизняк будет считаться человеком, то при его убийстве возникнет провал миссии. Это устранимо?
Да. Скрипт JAccuse сообщает игре что игрок убил живого NPC. Исп-ся при создании заданий "никого не убивать (из людей)". Добавь слизняку св-во "Scripts", скопируй названия всех скриптов (кроме JAccuse) из Human и поставь галочку "Don't Inherit".
ЦитироватьТакое впечатление, что некая неведомая сила действует, обходя иерархию.
Вполне возможно.
Цитироватьесли слизняк будет считаться человеком, то при его убийстве возникнет провал миссии.
Считается ли он человеком - зависит от способа обработки выбранной цели и его положения в иерархии. Скажем, типичное задание не убивать людей задается переменной goal_target_x со значением -14, где -14 - номер архетипа Human в иерархии. Если твой слизняк находится снаружи этого архетипа, он не считается человеком. Анимация тут совершенно ничего не значит.
Да, это подразумевает наличие отдельного архетипа для слизняка, но если их будет в миссии много, это в любом случае имеет смысл.
Текущий прогресс.
Вы меня убедили. В том, что слизняк - не человек. Поэтому теперь он является прямым потомком класса Creature. К моему удивлению, он перенесся простым драг-энд-дропом (такой маленькой радости от DromEd я не ожидал). Также, к моему еще большему удивлению, он ведет себя очень адекватно - хотя я ему задал очень мало свойств (у стандартных существ их гораздо больше).
Вчера я часа три потратил на то, чтобы научить его стрелять, пока не выяснил, что его нужно было просто удалить и установить заново (тогда свойства, касающиеся стрельбы, появятся в экземпляре, а не только в классе). Ну и чудак этот DromEd.
Анимация практически готова и выглядит весьма неплохо. Сделано специальное движение IdleGesture - для разнообразия анимации стояния. Есть еще пара спорных моментов, но пока попробую разобраться самостоятельно.
Самый больной вопрос - физическая модель - остается в силе. Поскольку снеговик так и не захотел менять размер, то, скорее всего, придется использовать Sphere Hat. Но при этом, из-за низкого расположения сферы, ее размер будет довольно невелик и при стрельбе придется целиться как можно ближе к центру слизняка.
PS. Мне казалось, что некие существа в Thief - например, пауки - плюются ядом, но видимо я перепутал с Wizardry 8. Придется делать ядовитый снаряд самому. Кстати, а можно ли сделать, чтобы здоровье после попадания снаряда падало постепенно, сопровождаясь охами и ахами игрока?
Сделать можно (не уверен насчет охов и ахов, хотя явных препятствий не вижу), но как именно - тебе придется копать самому. Это все делается через Sources, причем кое-что при настройке работает совсем не так, как ожидается. Нужно добиться эффекта, обратного выпиванию зелья здоровья.
С другой стороны, опасная фишка. Игрок увидит, что повреждения незначительны, и запишется сдуру. А через десять секунд откинет копыта.
Ядом плюётся красный паук в Thief 1. Также он кидает паутину.
ЦитироватьЯдом плюётся красный паук в Thief 1.
Значит, ощущения меня не обманули.
ЦитироватьС другой стороны, опасная фишка. Игрок увидит, что повреждения незначительны, и запишется сдуру
Да, тут возможна проблема.
Но можно ограничить время отравления несколькими секундами, сопровождаемыми непрерывными охами. Это будет чисто психологический эффект, направленный на запугивание. Вряд ли здравомыслящий игрок будет записываться в такой ситуации.
Но это просто вариант. Если это сложно сделать - ограничусь обычным повреждением.
ЦитироватьА через десять секунд откинет копыта.
Так это здорово! Оставьте.
Это пока только идея. Если ее реализовать аккуратно, может получиться неплохо.
Выяснил, что нужны еще как минимум три телодвижения: шаг назад, шаг вправо и шаг влево.
Первое очень часто выполняется персонажем при подходе вплотную лицом к лицу. То есть отступление на безопасное расстояние.
Движения вправо-влево выполняются довольно редко в очень специфической ситуации - если спрятаться за углом, то персонаж будет сдвигаться вбок, чтобы поймать игрока в поле зрения и продолжить стрельбу.
Зато с чувством глубокого удовлетворения могу сообщить, что специальной поисковой анимации не понадобилось - вместо нее сошло обычное движение вперед (слегка замедленное). Слизняк - существо туповатое, и трудно представить, чтобы он рыскал челноком, вертя носом вправо и влево. По крайней мере, процесс поиска меня сейчас визуально удовлетворяет на 100%.
Да, слизняк - тупой. Нужен ли ему вообще режим поиска? Мне кажется, потеряв игрока, он должен довольно быстро успокоиться и поползти дальше.
Думаю, выбор сделан верно. Разве что автор FM должен будет при настройке сократить время возвращения на первоначальный уровень тревоги.
Почему, когда я попадаю стрелой во врага, стрела остается в воздухе (в то время как враг уползает)?
Ты строишь миссию?
Если нет, то расслабься. Это пресловутый Death Stage 12. Вылечить можно, но оно тебе надо?
Расслабился.
Что это за палитра и где ее посмотреть?
(http://hedonism.nm.ru/images/slug/particles.png)
Обнаружил забавные особенности.
1. Иногда слизняк пытается выстрелить, но у него словно не получается. Этакая неудачная попытка. Примерно 10% случаев.
2. Плевок слизняка способен потушить факел, как водная стрела. Почему - не знаю, я специально ничего для этого не делал.
А чем стреляет слизняк? Каким снарядом?
Плюется ядом/кислотой.
Вопросы:
1. Чувствительность AI меняется при изменении уровня сложности? (извините за тупой вопрос, но обычно играю на максимальном).
2. Как из DromEd запустить игровой режим на других уровнях сложности, кроме минимального?
Мне сейчас кажется, что чувствительность слизняка недостаточна. Но если она возрастет на более высоких уровнях, то может быть сойдет и такая.
Цитата: Chuzhoi от 01 июля 2011 04:14:28
2. Как из DromEd запустить игровой режим на других уровнях сложности, кроме минимального?
Туториал же :)
http://darkfate.ru/?show=files/editors/dromed/tutorials/dromed_basic_tutorial.pl#difficulties
команда
process_difficulty N Только в игре и не сохранять миссию после этого.
1. Никогда этого не знал наверняка. Хотя всегда был уверен, что да.
2. Есть технология запуска и специальные наборы команд, как это делать. Но у меня почему-то так ни разу и не получилось, хотя делал все точно по инструкции (ну, может, недостаточно точно, раз ничего не вышло).
Я в этом случае просто запускаю игру и выбираю нужный уровень сложности. Но, конечно, для этого миссия должна быть полностью готова к работе и подключена (missflag.str, всякие там параметры миссии в редакторе и т.п.).
0. Никак не отвечу на вопрос про палитру. Как только доберусь до дома - забываю напрочь. Но ответ существует, так что подожди еще чуть-чуть.
Ага, вот и она (палитра). Или он (ответ).
(http://s61.radikal.ru/i173/1107/c2/97a57f5c1349.jpg) (http://www.radikal.ru)
Zontik, DJ Riff Спасибо!
Вопрос.
Нужно отключить или уменьшить физ. модель до начала проигрывания смертельной анимации.
Вообще она отключается, но только уже после того, как эта анимация проиграна. А нужно до.
Причина - слизняк при умирании "расплывается" в нечто вроде плоской лепешки, а физ. модель не дает этой лепешке полностью опуститься на землю. А повисший в воздухе на высоте 20-30 сантиметров труп - это не очень эстетично.
Что делать?
У меня была внешне похожая проблема с лошадью-оборотнем: из-за огромных размеров она при падении не долетала до земли и повисала в воздухе.
Вылечилось исправлением финальной Z-координаты в анимации смертельного падения. Я сместил ее ниже нуля.
Именно так у меня и сделано. Причем пробовал задавать смещение заведомо большее, чем нужно - никакого эффекта. Когда физическая модель достигает земли, движение по вертикали прекращается.
Кстати, если поставить снеговик, то перед смертельной анимацией размер модели уменьшается (как раз, видимо, чтобы не мешать падению). Но я использовал Sphere hat, т. к. снеговик не захотел менять размер.
Тогда я не знаю простого способа.
Можно попробовать принудительное изменение свойств через скрипт TrigSlain (он вроде бы срабатывает сразу, а не после завершения анимации), но это громоздкий способ, ктому же требующий знания S&R. И я совершенно не уверен, что физический размер модели можно изменить динамически.
Я не пробовал экспериментировать с моделью Sphere Hat... там нет такого понятия, как смещение? У OBB есть по всем трем координатам (Physical > Dimensions), и это очень удобно - можно поставить физическую модель вообще в противоположном углу комнаты от объекта.
Я просто не понял: а что, в нормальном положении физическая модель находится выше земли? Если да и это не критично, может, просто приподнять ее еще?
Как я понял, у AI физическая модель жестко привязана к суставу таза (JBUTT). Все попытки ее сдвинуть путем ввода координат были безрезультатны (хотя у неживых объектов физ. модель вроде бы нормально смещается).
В нормальном положении слизняка физ. модель находится чуть выше земли, что позволяет при анимациях сместить ее вниз на 0,1 единицы, но не более. Для смерти требуется смещение примерно 0,4-0,5 единиц. Можно уменьшить физ. модель, но тогда будет очень трудно попадать по слизняку (мечом или стрелой).
Можно еще чуть-чуть приподнять сустав таза ценой небольшого искажения анимации, но уже практически некуда.
Я думаю, проблема в несовершенстве выбранной физической модели.
Снеговик в этом плане работает несколько четче. Возможно, сферическая шляпка просто не предназначалась для AI.
В том-то и дело, что со снеговиком было еще хуже - он жестко настроен на людей (две сферы, нижняя в тазе радиусом 1,0 ед, верхняя - в районе шеи, радиус 1,2 ед.) И все. Ничего не смещается и не изменяется. В Sphere Hat удалось по крайней мере радиус поменять.
Вчера я довольно робко смотрел на LGScript (http://dromed.whoopdedo.org/lgscript/index). Сегодня смотрю уже гораздо смелее. Попробовать, что ли?
ЦитироватьLGScript
Здорово! :yay:
Неужели весь предыдущий хлам теперь можно выбросить на помойку и писать собственные свитки с заклинаниями, а не пользоваться чужими?
Попробовал.
Все прекрасно работает.
Вот скрипт:
function Slain(msg)
lgs.PhysSrv.DeregisterModel(msg.to)
return true
end
Правда, возникла одна проблемка. Когда физическая модель убирается, стрела пролетает прямо сквозь слизняка, втыкаясь в ближайшую стену, что нехорошо. Death Stage установлен в 0 - если выстрел не смертельный, то стрела исчезает.
Не знаю теперь, что с этой стрелой делать.
Итак, проблема решена.
function Slain(msg)
lgs.PropertySrv.Set(msg.to, "PhysDims", "Radius 1", 1)
return true
end
Перед проигрыванием смертельной анимации физическая модель не убирается, а уменьшается в размерах. Последний параметр (единица) - это новый радиус модели (у живого слизняка он равен 1.35).
Специально пострелял по краям сферы - все нормально, стрела не пролетает.
Никак не могу добиться проигрывания звука при попадании стрелой/мечом. Не болевого вопля (с ним все в порядке), а именно звука попадания.
Вроде все делаю по образу и подобию.
1. В ENVSOUND.SPC добавил CreatureType:
tag CreatureType Ape Apparition ...... Zombie Slug
2. В HITS.SCH вписал Slug везде, где описаны попадания, например:
//Hitting unarmored person
schema arrow_body
archetype HIT_PROJECTILE
ar_body1 ar_body2
env_tag (Event Collision) (CreatureType Ape Apparition Burrick Frog Rat Servant Spider Zombie Slug) (ArrowType Broadhead Rope Vine)
3. Звук шагов (FEET.SCH) пока не делал за неимением такового
4. Назначил архетипу слизняка Class Tags: CreatureType Slug
5. Сделал reload_schemas и сохранил Gamesys
При попадании мечом/стрелой никакого звука не слышно. Если же убрать CreatureType Slug, то звуки появляются - но это звуки с металлическим оттенком, унаследованные от родительского архетипа creature (CreatureType Guard). А мне нужна обычная плоть.
Можно, конечно, задать любой подходящий CreatureType (например, Servant), и тогда звук ударов появляется, но все равно для звуков шагов придется делать отдельный CreatureType.
Думаю, ты просто где-то в какой-то строчке что-то пропустил. Нужно еще раз внимательно просмотреть все схемы. Должно работать.
Если вдруг ничего не выйдет - как вариант могу предложить пойти на обман: привязать звуки ударов к воплям боли (загнать их прямо в WAVы). Сделать побольше разных вариантов, чтобы чаще чередовались.
Еще как маловероятная версия: в некоторых строках возможно превышение максимальной длины. Какая она - никто толком не знает, но даже сами LGS разбили некоторые особо длинные строки на две. Возможно, когда ты дописываешь Slug в какую-нибудь длинную строку, она как раз вылезает за предел, а при интерпретации движок отбрасывает все лишнее. Slug последний, он и оказывается лишним.
ЦитироватьЕще как маловероятная версия: в некоторых строках возможно превышение максимальной длины.
Именно эта версия и оказалась правильной! Когда описывается env_tag, то существ в одной строке должно быть не больше восьми.
Причем это превышение было именно в строках, где удар мечом и попадание стрелой. Все остальные удары, вероятно, работали нормально - но ударить его дубинкой или пострелять из обезьяней трубки я как-то не догадался...
Ох, я чувствую, Zoro так и не получит своего слизня. Придется ему выковыривать его из твоей FM, и еще разрешения спрашивать...
(просто намекаю на setup, который уже на два порядка сложнее самой модели)
Ничего, пусть подождет, немного осталось. Самое сложное из оставшегося - звук "шагов", который я пока еще смутно представляю, как он должен звучать и как его получить.
Что касается собственной ФМ, то я пока не готов ее делать в DromEd - мне по-прежнему многое кажется в нем крайне неудобным. Хотя бы это маленькое окошко, сильно ограничивающее обзор... Хотя субтрактивная геометрия (почти как в Unreal Engine) - это, безусловно, огромный плюс по сравнению с тем же Doom 3.
Не знаю, в курсе ты или нет... в общем, это окошко распахивается почти на весь экран одним щелчком правой мышиной кнопки. Так же убирается обратно.
Правда, сам я этим пользуюсь только для снятия скриншотов. В половине или даже больше случаев это окошко вообще лишнее.
Шаги, я думаю, должны быть непрерывными. То есть такой растянутый во времени всхлип. Если каждый такой всхлип будет, не успев проиграться до конца, прерываться следующим шагом - это хорошо; если они (всхлипы) будут чуть-чуть накладываться друг на друга (я точно не знаю, как движок поступает в таком случае) - это еще лучше.
ЦитироватьНе знаю, в курсе ты или нет... в общем, это окошко распахивается почти на весь экран одним щелчком правой мышиной кнопки.
Да, про это я в курсе. Я имел в виду, что редактор не работает при размерах окна, больших 1024*768. При моем нынешнем (довольно скромном) разрешении монитора (1680*1050) это менее 50% площади экрана. Есть и другие неудобства - например, лайтмэпы (в режиме Toggle Lightmaps) отображаются только на изрядном расстоянии, что ставит под сомнение полезность этого режима... Но самое страшное происходит, когда я пытаюсь изменить размер браша с помощью Ctrl и мыши - он у меня обычно становится каким угодно, только не таким, каким я хочу. После такого масштабирования часто приходится исправлять размеры цифрами.
Есть, конечно, плюсы - например, очень быстрый (просто молниеносный) переход в игровой режим. Независимо от размера миссии.
Остается надеяться, что товарищи, обрабатывающие исходники, подправят хотя бы некоторые из недостатков редактора (первую очередь это касается разрешения).
Цитироватья пытаюсь изменить размер браша с помощью Ctrl и мыши - он у меня обычно становится каким угодно, только не таким, каким я хочу.
Потому что включён режим выравнивания брашей по сетке (кнопка Use слева ближе к низу). Отключать его не рекомендуется - тогда размеры будут какие хочешь, но движок может это не переварить и отрыгнуть ошибку, накрыв весь уровень медным тазом.
Можно уменьшить размер сетки, тогда браши будут искажаться не так сильно. Наименьший из рекомендуемых - 12, крайний случай - 11.
Когда я первый раз запустил DromEd 2 (после долгой работы с DromEd 1) меня эти лайтмэпы тоже здорово нервировали. Сейчас я просто привык не обращать на них внимания.
И уже почти забыл, что размеры брашей можно менять мышью. Всегда оперирую только цифрами.
Кстати, получилось что-нибудь с запуском определенного уровня сложности из-под редактора?
ЦитироватьКстати, получилось что-нибудь с запуском определенного уровня сложности из-под редактора?
Я его запускал твоим способом - через игру.
И пришел к интересному выводу: чувствительность AI не зависит от уровня сложности. Реагирует он на том же расстоянии, слышит так же, успокаивается примерно через столько же. Экспериментировал не только на слизняке, но и на обычном охраннике.
Возможно, я что-то не так сделал, но уровень здоровья у игрока при изменении уровня сложности менялся, квестовые задачи переключались.
А что можно сделать не так при запуске через игру?
Интересное наблюдение. Я всегд был уверен, что чувствительность зависит от уровня сложности. Но сейчас вдруг до меня дошло, что я практически ни одной миссии (кроме собственных) на разных уровнях сложности не переигрывал. То есть я и сравнивать-то толком не могу. Возможно, чувствительность разная в разных миссиях, но это уже целиком воля автора. И там, где мне чувствительность казалась повышенной на Эксперте, она просто была искусственно завышена автором (для всех уровней сложности).
По моим наблюдениям - чувствительность одинаковая при любом уровне сложности. Если специально этого не менять.
В оригинальных миссиях что на Норме, что на Трудно, что на Эксперте - народ на всё реагировал одинаково.
Не факт. На Эксперте замечают открытые двери и украденный лут. С этим проблема в миссии Undercover.
В Undercover AI и настроены так, чтобы замечать пропажу, открытые двери, повёрнутые рычаги, потухшие факелы, мох на полу и нахождение игрока в неположенном месте. В остальных миссиях такого не припомню.
А не за это ли отвечает скрипт SuspiciousReactions, прописанный именно для людей?
Да, но это никаким образом не особенность движка.
http://www.ttlg.com/forums/showthread.php?t=136453&page=1
Цитата: clearing от 02 августа 2011 07:32:47
http://www.ttlg.com/forums/showthread.php?t=136453&page=1
Хехе, прототип пса. Прикольно.
На всякий случай сообщаю, что моделька слизняка полностью готова (еще в июле месяце) - анимирована, затекстурена, озвучена, настроен AI - и передана заказчику. Спасибо всем, кто помогал и консультировал! Зонтику - персональное спасибо за его советы.
Ждите миссию от DiegoSan (он же Zoro).
(Хотя... Кто его знает - может, я соберусь делать свою).
отлично. хотелось бы увидеть нового монстряку. А скрин будет или ждать ФМ?
Цитата: Chuzhoi от 05 сентября 2011 09:28:22
На всякий случай сообщаю, что моделька слизняка полностью готова (еще в июле месяце) - анимирована, затекстурена, озвучена, настроен AI - и передана заказчику. Спасибо всем, кто помогал и консультировал! Зонтику - персональное спасибо за его советы.
Ждите миссию от DiegoSan (он же Zoro).
(Хотя... Кто его знает - может, я соберусь делать свою).
Я твоего слизняка не брошу. Но если хочешь сделать свою миссию, валяй. Слизняк твой, он полностью в твоих руках... :yes:
хоть бы на скриншоте слизняка показали :)
Зачем? Глупо и неуместно.
Можно ли как-нибудь быстро найти конкретное движение из стандартных? Или нужно в ME открывать все файлы из motions.crf, пока не найдутся, например, походки страшников с мечом и луком?
Поза стоящего ai - это движение или заданная в 3d-редакторе поза? То есть можно ли без 3d-редактора сделать так, чтобы лучник стоял на месте в той же позе, как и когда он двигается, держа лук?
И последнее, когда я создаю новое движение (не переписываю старое), сохраняя файлы *.mc и *.mi, кидаю в папку motions - как потом это движение назначить ai?
Первый вопрос: читай и изучай схемы движений (такие же текстовые файлы, как и звуковые схемы). В оригинальной игре их нет, нужна Shadowspawn's motion database.
Второй вопрос: в 3D-редакторе задается только одна поза - руки крестом. Все остальное - анимация.
Сделать лучника можно, но неподвижен он будет, аки статуя. Если хочешь, чтобы он хотя бы дышал - путь лежит через Motion Editor. Для "режима ожидания" изначально существует практически единственный набор анимации - под классом Idlegesture.
Третий вопрос: а что ты делаешь, когда создал музыкальный фрагмент и кинул его в папку? Как он подключается к звуковому маркеру? Правильно, через схемы и reload_schemas (то есть размещение в иерархии). Здесь все делается похожим образом, но понадобится (см. вопрос 1). Сначала файлы прописываются в схемах (причем, как и диалоги, не в одной, а в двух: само конкретное движение - в одном файле, а "класс" - в другом), затем выполняется аналогия команде reload_schemas - компиляция базы. Но делается это, в отличие от звуковых схем, вне редактора, в специальной программе (входит в состав упомянутого средства).
После чего готовый файл motiondb.bin просто перекидывается в папку с игрой, заменяя существующий.
Если впоследствии ты исправляешь уже прописанные в базе файлы движений, схемы переделывать не надо! В точности, как и в случае с исправлением звуковых файлов.
New Animated Rat: RATTY!! http://www.ttlg.com/forums/showthread.php?t=139159
Поселил у себя пару :up:
А я еще раньше у него выпросил.
Жаль только, что останавливаться они не могут. Те, оригинальные, могли стоять на месте, слегка шевелясь - создавалась иллюзия, что крыса хоть и не бегает, но живая. А эта - лапами перебирает. И отключить движение можно только навсегда или заскриптовать как событие.
Что нельзя рычагом?
Почему нельзя, можно. Это я и называю "заскриптовать событие".
А так, чтобы ходила по маршруту и в некоторых местах останавливалась - нет, нельзя. То есть останавливаться будет, но при этом продолжая быстро перебирать лапами на месте.
То есть технически и это возможно поправить, но скриптовая система будет такая, что лучше уж потратить время на что-нибудь более важное.
Цитата: Zontik от 27 апреля 2012 10:54:13
Первый вопрос: читай и изучай схемы движений (такие же текстовые файлы, как и звуковые схемы). В оригинальной игре их нет, нужна Shadowspawn's motion database.
Почти ничего непонятно, как с впервые открытым Дромом :)
Вот это схема?
231: +Haunt 0
70: 118 (+BH111001)
Что за цифры по второй строчке?
ЦитироватьСделать лучника можно, но неподвижен он будет, аки статуя.
И как сделать, чтобы он застыл в двигающейся позе?
ЦитироватьСначала файлы прописываются в схемах (причем, как и диалоги, не в одной, а в двух: само конкретное движение - в одном файле, а "класс" - в другом), затем выполняется аналогия команде reload_schemas - компиляция базы. Но делается это, в отличие от звуковых схем, вне редактора, в специальной программе (входит в состав упомянутого средства).
В МЕ? Где там это делается? И еще как открыть то, что лежит в MShemas и зачем эту папку кладут в архивы с фм, если все движения в motiondb.bin?
Цитата: Soul_Tear от 15 мая 2012 18:44:25
Вот это схема?
231: +Haunt 0
70: 118 (+BH111001)
Не понимаю, откуда это взято. То, что в скобках, похоже на имя движения. Но в целом на схему не похоже.
ЦитироватьВ МЕ? Где там это делается? И еще как открыть то, что лежит в MShemas
То, что лежит в MShemas - это и есть схемы. Открываются и редактируются текстовым редактором. Затем компилируются с помощью программы Makmdb.exe, которая входит в Motion Workshop.
То, что лежат в папке Motions - это движения. Открываются и редактируются через Motion Editor.
Общий путь таков: создаешь новое движение в Motion Editor, сохраняешь в Motions. Затем прописываешь это движение в схеме твоего персонажа текстовым редактором и перекомпилируешь motiondb.bin программой Makmdb.exe. В архив с твоей ФМ-кой нужно положить свои новые движения (папка Motions) и motiondb.bin. Схемы (MShemas) включать в архив необязательно (их кладут, видимо, чтобы другие авторы могли использовать эти схемы в своих ФМ).
ЦитироватьИ как сделать, чтобы он застыл в двигающейся позе?
Если нужна просто неподвижная поза, то можно создать движение из двух одинаковых кадров.
Цитата: Chuzhoi от 15 мая 2012 19:57:20
Не понимаю, откуда это взято. То, что в скобках, похоже на имя движения. Но в целом на схему не похоже.
Это тэги движений (http://www.angelfire.com/games4/shadowspawn/T2MotionTags.txt), думал это и есть схемы.
Цитировать
То, что лежит в MShemas - это и есть схемы. Открываются и редактируются текстовым редактором. Затем компилируются с помощью программы Makmdb.exe, которая входит в Motion Workshop.
Первый раз о таких слышу, где их взять?
Цитироватьгде их взять?
http://darkfate.org/view/details/files/editors/dromed/dromed
Soul_Tear По ссылке Клиринга скачай Dromed Toolkit и там ищи Motion Workshop.
Creature > Current Pose.
В первой строчке выбираешь не Tags, а другой вариант (забыл формулировку). Их всего два, так что не ошибешься.
В пустой строке вписываешь имя ФАЙЛА движения, взятое из схем.
Это самый надежный и рабочий способ. С тэгами разбираться - скорее поседеешь. Иногда удается угадать, чаще - нет.
Но вообще можешь еще глянуть на статуи рыцарей в Тронном зале из "Истории короля". Не помню, как я их сделал, но когда понадобится вспомнить, буду смотреть именно там.
Трюку с именами файлов я научился во втором Роксбурге, там трупы повсюду навалены в самых забавных положениях. Обрати внимание на галочки в непонятных по назначению окошках Current Pose - они особенно важны, с неправильно выставленными галочками тело может или проваливаться сквозь пол, или произвольно возвращаться в удобное ему положение.
Спасибо :)
Цитата: Zontik от 12 октября 2012 16:15:33
Если только это не последний сустав конечности, потом придется исправлять все, что осталось дальше от позвоночника - их движение тоже нарушится. Так что терпения...
Пока вообще ничего не меняется, причем непонятно, почему. Файл сохранил под тем же именем, что и открывал. Все равно надо компилировать новый bin?
Как оказалось ничего исправлять не пришлось, правда всего два кадра. Результат такой-же как в окошке ME.
(http://i1241.photobucket.com/albums/gg502/lagoona13/dump007.jpg)
А задние ноги у нее так же как и передние двигаются?
Скорее у нее только задние и двигаются, ведь это двуногая модель. Поэтому двигаться она вообще не будет, только слегка поворачиваться и поднимать голову.
Оставлю пока статику, а нервы мне еще пригодятся для других задач.
(http://i1241.photobucket.com/albums/gg502/lagoona13/dump004-1.jpg)
Хотелось бы оставить верхний вариант, но нижний правильнее, к тому же морды можно будет увидеть не только в конюшнях, все-таки ai - это не вшивый манекен.
(http://i1241.photobucket.com/albums/gg502/lagoona13/stable.jpg)
Недурно, отличные конюшни :up:
Народ, а не подскажите фан миссию под Dromed 2, где все анимации для нпс выведены на кнопочки, чтоб просматривать проще было. Где-то видел, теперь найти не могу.
Цитата: Chelsun от 18 ноября 2012 02:03:10
Народ, а не подскажите фан миссию под Dromed 2, где все анимации для нпс выведены на кнопочки, чтоб просматривать проще было. Где-то видел, теперь найти не могу.
http://www.wearytaffer.com/tools/toolsF.html
Utilities >>>
Motion Tag DemoНет? Не то?
Ога, вот спасибки!
Ребята, по-моему это мега круто.
http://www.ttlg.com/forums/showthread.php?t=140447&page=2
Ага :yes:
Здесь обсуждали: http://darkfate.org/forum/index.php?topic=4201.msg158366#msg158366
Цитата: clearing от 05 декабря 2012 22:31:02
Ага :yes:
Здесь обсуждали: http://darkfate.org/forum/index.php?topic=4201.msg158366#msg158366
Да, но там обсуждался его арт, а тут он ещё оказывается пишет скрипт для 3D max позволяющий сетапить и затем анимировать персонажей это гораздо лучше и удобней чем в Motion Editor или ещё где-то.
PinkDot вообще молодец. Кстати, его сайт: http://www.juliuszk.com
Цитата: Vladimiroquai от 05 декабря 2012 22:20:28
Ребята, по-моему это мега круто.
http://www.ttlg.com/forums/showthread.php?t=140447&page=2
вот это стоящая вещь. наконец то. :up:
Кто-нибудь следит за ттлг? Что там делает PinkDot? Новую программу анимации для Thief?
Цитата: Soul_Tear от 25 февраля 2013 14:06:18
Что там делает PinkDot?
PinkDot делает плагин для макса, экспортирующий персонажей в нативные бинарные форматы даркенджина.
Цитата: Soul_Tear от 25 февраля 2013 14:06:18
Новую программу анимации для Thief?
Это было бы самой дурной работой в мире. Есть старые программы анимации для всего, вот в них и надо анимировать. Не хватает всего лишь инструментов пайплайна.
Боюсь (если я правильно его понял), это всего лишь плагины для Макса.
А, опоздал. Выходит, не зря боялся.
Значит польза от этого будет (если будет), только для тех, кто макс юзает.
Ну, польза-то будет для всех. Только не по заказу.
Еще одна причина закрыть тему "Какой 3D-редактор самый лучший".
Цитата: Soul_Tear от 26 февраля 2013 15:55:22
Значит польза от этого будет (если будет), только для тех, кто макс юзает.
Не исключено, что подобное со временем появится и под блендер.
Цитата: Zontik от 26 февраля 2013 17:17:38
Ну, польза-то будет для всех. Только не по заказу.
Хм, а что по-твоему было бы по заказу?
для Блендера вроде что то уже есть. насколько я помню Vladimiroquai конвертировал свои модели как раз через Блендер.
Kolsy
Модели персонажей со скелеталкой?
извиняюсь. я просто не внимательно прочитал. нет у него просто обьекты.
Идея в том, чтобы делать годные, грамотные сетапы в целевой программе, анимировать их удобно и быстро, а потом отливать напрямую в бинарные форматы.
А не унижаться вот так (http://wenchy.net/old/meshes.html).
а какой вид скелета будет поддерживаться Bones или Biped ? или и то и другое. я имею ввиду Макс.
Насколько я знаю, сейчас у него всё основано на костях, а развесовка на skin-е.
с костями я не работал. с Biped по моему как то попроще.
Байпед — это набор шаблончиков (плеймобиль), а кости — материал для любых произвольных сетапов (лего). Вот захочешь ты кентавров в вора запилить — где ты в байпеде будешь искать кентаврогенератор?
Всё правильно делает дядя PinkDot.
согласен. тут не поспоришь.
ЦитироватьХм, а что по-твоему было бы по заказу?
Отдельный простенький Motion Editor, в котором при желании и олух может разобраться. Ну хотя бы чуть более адекватный, чем существующий на сегодня.
Да, кентавра там не сделать, но 99% потребностей он бы перекрыл. А так - для создания одного-единственного необходимого движения авторам грозит осваивать 3D-редактор, по сложности сравнимый с самим DromEd'ом. Ну и кто в здравом уме пойдет на это? Остается одно: просить тех, кто по счастливой случайности уже умеет. То есть фактически для подавляющего большинства авторов ничего не изменится.
Цитата: Zontik от 27 февраля 2013 10:05:51
для создания одного-единственного необходимого движения авторам грозит осваивать 3D-редактор, по сложности сравнимый с самим DromEd'ом
Что-то подсказывает, что если человек не имеет шапочного знакомства с методами анимации в 3D-редакторах (а это не рокет саенс), то и движения у него будут получаться мягко говоря не очень, особенно в примитивном "экселе с превьюшкой". Пусть цикл ходьбы сделает, врисовывая цыфарки в "motion editor", ага. Результат даже представить страшно.
Область применения того, что ты предлагаешь — заменить пару значений в паре кадров существующих анимаций. Любая задача посерьёзнее потребует 3D-редактора и исходников сцены. Ну мы и не в сказке живём.
Цитата: Zontik от 27 февраля 2013 10:05:51
То есть фактически для подавляющего большинства авторов ничего не изменится.
Чтобы для автора что-то в этом плане изменилось, ему надо сесть и научиться анимации. А хорошая анимация — это не тогда, когда знаешь наизусть кнопки редактора.
Кнопки редактора, тем не менее, остаются одним из необходимых условий.
И вообще, теоретически расуждения совершенно верны, но практика показывает некоторые расхождения с теорией. Да, ходьбу не сделать, но кому она, по большому счету, нужна? Ходить AI как бы и без того умеют.
Мне вот в свое время понадобилась анимация аплодисментов. Ну нет такой ни у кого. Тупик? Да нет, поиграл недельку с циферками и сделал. Мы же не фильмы для проката готовим все-таки.
Но если бы мне пришлось для той же цели полгода изучать 3DMax и теоретические основы правильного анимирования - просто не было бы ни аплодисментов, ни даже FM в результате. Сидел бы и изучал.
Я не спорю, тяжелая артиллерия тоже нужна, чтобы стрелять по угрожающим жизни астероидам. Но чаще как-то приходится палить по одиночным воробьям.
Цитата: Zontik от 27 февраля 2013 15:15:37
Мне вот в свое время понадобилась анимация аплодисментов. Ну нет такой ни у кого. Тупик? Да нет, поиграл недельку с циферками и сделал.
А если бы была возможность импортировать в макс, сделать за вечер (по тутору) и экспортировать обратно, даже тогда из принципа не стал бы? =)
Цитата: Zontik от 27 февраля 2013 10:05:51
Отдельный простенький Motion Editor, в котором при желании и олух может разобраться.
А хуже олуха как называется?
ЦитироватьА если бы была возможность импортировать в макс, сделать за вечер (по тутору) и экспортировать обратно, даже тогда из принципа не стал бы? =)
Какие могут быть принципы, когда дело сделать надо? Но если для этого сначала надо искать сам Макс, потом его скачивать, потом искать лекарство, потом устанавливать, потом искать руководство, потом нужную страницу в нем... эх, опять одна голая теория. На практике все по-другому и одним вечером тут никак не обойтись. Ну разве что этот вечер будет за Полярным кругом.
Если когда-нибудь это станет хотя бы чуть-чуть удобнее, чем Motion Editor, тогда и посмотрим. Но пока у меня ощущение, что для полноценной работы с
костями нужно будет специальный институт заканчивать. А у меня нет столько времени.
ЦитироватьА хуже олуха как называется?
Не бери в голову, я имел в виду как раз другую версию Motion Editor - ту, которой, похоже, никогда не будет. А в этой способен разобраться только фанатик. Ну или человек в крайнем отчаянии, у которого активизируются скрытые резервы.
Цитата: Zontik от 28 февраля 2013 09:27:38
сначала надо искать сам Макс, потом его скачивать, потом искать лекарство, потом устанавливать, потом искать руководство, потом нужную страницу в нем... эх, опять одна голая теория
Чё его искать? На сайте производителя лежит 30-дневная триалка с документацией. В документации прочитать про то, что такое ключи, как их ставить/удалять/копировать и как юзать dope sheet и curve editor.
Цитата: Zontik от 28 февраля 2013 09:27:38
А у меня нет столько времени.
Ты совершенно забесплатно делаешь уровни для игры 15-летней давности. Инструментами, воплотившими страшное наследие тех же времён (неделю на с позволения сказать "motion editor" — обалдеть можно). Извини, но в острую нехватку времени не очень верится =)
Впрочем, пока ни PinkDot, ни кто-либо ещё не порелизили ничего дельного, всё это и правда сплошная теория.
Триалки принципиально не использую. Сегодня она мне пригодилась, а завтра?
ЦитироватьВ документации прочитать про то, что такое ключи, как их ставить/удалять/копировать и как юзать dope sheet и curve editor.
На самом деле для начала необходимо знать, зачем мне эти ключи и что ими открывать. Иначе я даже не пойму, что там искать. И вообще этот разговор смахивает на словесное описание радуги для слепого. Единственное, что я понял: радуга - это красиво.
Насчет нехватки времени - так из-за всего перечисленного она и возникает. Может, разумнее было бы потратить ту неделю на Макс. Но это какой-то слишком уж далекий журавль в небе. Когда с Motion Editor все было ясно с самого начала: его можно взять просто измором. Результат гарантирован.
А вообще я не исключаю, что в конечном итоге Макс придется поставить и освоить. По совершенно другим причинам.
Слово аффтарам оригинального Dark Engine-а:
Цитировать
// Every creature has a creature type and an actor type
// All creatures of a given creature type have the same actor type.
//
// Creature type specifies the skeletal configuration and phys model size
// for a creature.
//
// Actor type specifies the set of motion schemas that make sense to play
// a creature of that type (every schema has exactly one actor).
//
// Both are defined on a per-game basis. Similarly, the creature type
// definition modules (crhumand.c etc) are considered game-specific, and
// include this header to specify their actor type.
//
// Creature type and actor type are two different things because it's possible
// for two creatures to have different skeletal configurations but use the
// same motion captures (a legless droid and a human, for example).
//
// While we could have disjoint sets of motions to be played on two creatures
// of the same skeletal configuration (a human and a burrick, for example),
// I'm still making it so that the creature type determines the actor type.
// This is for simplicity, because tags can be used take care of this case,
// and because things like humans and burricks probably need to be different
// actor types anyway because of phys model size and placement.
(Обнаружилось в утечных исходниках.) Это как бы говорит нам:
- Какую бы крутую сетку мы ни смастерили, насаживать мы её будем всё на те же унылые три с половиной кости, что захардкожены в ресурсах игры.
- Пользовательский тип персонажа завести не получится.
- Кентавры отменяются.
- Рты не откроются никогда.
Клёоооооваааааа.
они не аффтары, они гении своего времени
не стоит забывать, чт прошло уже 15 лет с тех пор
Цитата: DonSleza4e от 20 апреля 2013 09:43:24
они гении своего времени
Ок. Но возможность кастомизировать скелеты они благополучно зажали.
В 1998 году (и еще в течение 5 лет после этого) невозможность открывания ртов - это нормально. Вообще, графика Thief прекрасна для того времени. Удивляют те люди, которые с высоты сегодняшних дней называют ее "примитивной" или "убогой".
Цитата: Chuzhoi от 20 апреля 2013 16:02:44
В 1998 году (и еще в течение 5 лет после этого) невозможность открывания ртов - это нормально. Вообще, графика Thief прекрасна для того времени. Удивляют те люди, которые с высоты сегодняшних дней называют ее "примитивной" или "убогой".
В 1998 году вышли Half-Life и Unreal. В первой была скелетная анимация (её возможности, кстати, не ограничивались пресетами из игры) и пресловутые рты. Вторая — без скелеталки, зато пример отменной на тот период графики. Так что и по тем временам Dark Engine давал довольно жалкую картинку.
Да, я помню... Жуткая артикуляция у хайлф-лайфовских ученых (два положения рта - "открыто" и "закрыто"), кубообразные горы в Unreal... Все это уже через 5 лет казалось в той же степени "жалким", что и графика в первом Thief. Да, Unreal и Half-Life для своего времени были лучшими играми по графике и технологии, но, по сути, они больше ничем не выделялись - фактически они были обычными шутерами, в то время как Thief предложил принципиально новый жанр. Причем чисто графически Thief не намного от них отстал - максимум на год-полтора, не больше.
Вообще, я не понимаю претензий типа "игра-то хорошая, но движок - дерьмо". Все, что хотели сделать разработчики - игру, в которую интересно играть, и с этой задачей они справились. Никто не обязывал их в дополнение к игре (или вместо игры) делать конструктор.
Цитата: Chuzhoi от 20 апреля 2013 17:50:34
Вообще, я не понимаю претензий типа "игра-то хорошая, но движок - дерьмо".
Ну а где ж ещё, как не в теме "Анимация в Thief", написать, что с модингом анимаций всё очень плохо? =)
Наблюдение вполне себе технического плана. Как повезло тхедаркмодошникам, как не повезло вам.
Цитата: nemyax от 20 апреля 2013 18:06:35
Цитата: Chuzhoi от 20 апреля 2013 17:50:34
Вообще, я не понимаю претензий типа "игра-то хорошая, но движок - дерьмо".
Ну а где ж ещё, как не в теме "Анимация в Thief", написать, что с модингом анимаций всё очень плохо? =)
Наблюдение вполне себе технического плана. Как повезло тхедаркмодошникам, как не повезло вам.
ага,только DarkEngine автоматически делает то,что тхедаркмодошники делают руками,а именно автоматически отсекает видимость порталами
Цитата: Shadowhide от 21 апреля 2013 18:02:03
автоматически отсекает видимость порталами
А порталы это не про анимацию, вот так.
Да, в Thief убогая скелетная анимация!!! Рты не открываются. Кентавров зажали. Костей всего три с половиной, и даже пальцы не гнутся!
Ну как, полегчало?
Zontik
Не, не полегчало. Я-то хотел сделать экспортёр для блендера, который отливал бы в том числе кастомные скелеты. Но с этим движком такое не прокатывает. Остаётся либо делать на основе движковых шаблонов, либо не делать вовсе. Либо как-то выпросить у ньюдарковцев новый creature type для кастомных сетапов. Тогда бы полегчало, да.
Тогда извини, сочувствую по полной программе.
Если вдруг кто не видел, PinkDot совершил небольшой прорыв в своём максовом скрипте для работы с анимациями даркошных персонажей:
http://www.ttlg.com/forums/showthread.php?t=140447&page=3&p=2221126&viewfull=1#post2221126
Интересный прорыв.
Тов. PinkDot снова в седле (http://www.ttlg.com/forums/showthread.php?t=140447&page=3&p=2247891&viewfull=1#post2247891).
Тут возник такой вопрос. Есть ли где хоть какая-нибудь документация про то, из каких файлов состоит анимированный персонаж в движке? Мол, такой-то файл для геометрии, такой-то для анимаций, такие-то записи в базке игровых ресурсов.
Не знаю, есть ли список, но вот что мне известно:
В папке mesh:
.bin - сама модель.
.cal - предположительно, файл описания скелета.
Файлы получаются с помощью meshbld.exe
В папке mesh\txt16 - текстуры.
В папке motions:
.mi и .mc - файлы движений (на каждое движение - своя пара файлов). Можно получить с помощью Motion Builder (или уже есть более удобное средство?)
Кладутся в папку MSchema утилиты makmdb.exe:
.mos - схема движений персонажа (прописывается, в каких ситуациях какие движения используются). Имя схемы также прописывается в файл tags.moc. Указанные файлы (вместе с другими .mos и .moc файлами, предназначенными для остальных персонажей) с помощью makmdb.exe преобразуются в базу данных движений motiondb.bin, которая кладется в корень игры. Сами .moc и .mos файлы класть в папку с игрой не надо.
В папке Snd находятся звуки, а в папке Schema - звуковые схемы, в которых прописано, в каких случаях какие звуки персонаж издает. Схемы загружаются в текущий Gam-файл в редакторе командой reload_schemas (наличие папки Schema для игры необязательно).
В папке mesh с игрой есть еще файлы с расширением .map и .mjo. Это текстовые файлы с описанием скелетов (в .map перечислены кости, в .mjo - как они соединяются). Нужная пара файлов (подходящего скелета) используются meshbld.exe для преобразования из 3ds в bin. Есть предположение, что, редактируя эти файлы, можно изменять, или даже создавать новые скелеты (я не пробовал).
Чтобы создать полноценного персонажа, нужно добавить его архетип (унаследовав от архетипа physical/creature), назначить ему модель(Shape/Model name), схему движения и звуковую схему (не помню точно, какие свойства) и при необходимости прописав ряд других параметров (физическая модель, как и чем стреляет и т. д.)
Извиняюсь за несколько сумбурное описание. Полностью кастомную модель (модель, анимация, звуки, оружие) можно посмотреть здесь:
http://darkfate.org/forum/index.php?topic=3942
(Ссылка не работала долгое время, подправил. Для скачки нужно скопипастить ссылку в адресную строку браузера).
.cal - модель "скелета", если правильно помню.
И папка называется Schema, а не Shema :)
Для полноты картины добавлю: Mesh\TXT16 - текстуры.
Подправил. Надо же, кто-то прочитал этот опус.
Цитата: Chuzhoi от 22 апреля 2014 14:45:15
Надо же, кто-то прочитал этот опус.
Я прочитал с большим интересом. Припух слегка от масштабов.
Ну вот и свет в конце тоннеля: http://www.ttlg.com/forums/showthread.php?t=140447&page=5&p=2270456&viewfull=1#post2270456
Цитата: nemyax от 19 ноября 2014 10:29:24
Ну вот и свет в конце тоннеля: http://www.ttlg.com/forums/showthread.php?t=140447&page=5&p=2270456&viewfull=1#post2270456
oh God, теперь начнутся пляски(в смысле танцы) в стиле облы и Скайрима. А так хотелось бы увидеть нормальные модели НПС в. :rolleyes:
Цитата: spy от 22 ноября 2014 13:50:42
А так хотелось бы увидеть нормальные модели НПС в.
Уже обсуждалось: их можно сделать детальнее и полигонистее, но у них останется та же каличная артикуляция скелета.
Цитата: nemyax от 22 ноября 2014 17:07:15
Цитата: spy от 22 ноября 2014 13:50:42
А так хотелось бы увидеть нормальные модели НПС в.
Уже обсуждалось: их можно сделать детальнее и полигонистее, но у них останется та же каличная артикуляция скелета.
А что такое "каличная артикуляция скелета"? И как сильно она будет мешать многополигонным моделям?
В одной из миссий, были такие округлые, многополигонные монахи, никаких каличных артикуляций скелета я не увидел. Хотя может быть, потому-что монахи.
Хорошо хоть не стояли на голове :)
Цитата: spy от 22 ноября 2014 18:51:12
А что такое "каличная артикуляция скелета"? И как сильно она будет мешать многополигонным моделям?
Это значит, что в штатных скелетах настолько сильно сэкономили на суставах, что носки при ходьбе проваливаются сквозь землю, пальцы не гнутся и рты не открываются. Многополигональным моделям она будет мешать тем, что с ними это позорище будет ещё заметнее и нелепее. А изменить структуру скелетов без переписывания движка невозможно.
Хочется выступить по поводу ртов, хвостов, крыльев и т. п. Как можно догадаться, для успешной их реализации надо, чтобы управляющая кость выступающей части могла следовать за тем местом, из которого часть выступает. То есть, хочется анимировать перемещение этой кости. Однако движок этого не позволяет — в цепочке джойнтов перемещать можно только корень, а остальное — только вращать.
Как же бороться с этой зрадой? Як перебрехати її в перемогу? Да очень просто нах. Мы будем перемещать вращением.
Давайте на секунду представим, что у нас есть инструменты для следующих вещей:
- затаскивания в 3D-пакет данных о положении джойнтов, ориентации джойнтов и развесовке вершин;
- истаскивания таких данных из 3D-пакета обратно после их редактирования в этом пакете.
Теперь посмотрите на эту картинку:
(http://pix.academ.org/img/2015/02/19/250_4b54a72a35775af2be44180667b6224b.png) (http://pix.academ.org/img/2015/02/19/4b54a72a35775af2be44180667b6224b.png)
Наша задача — анимировать перемещение зелёной косточки. Стало быть:
- Делаем вращение зелёной независимым от родительского.
- Настраиваем IK для более старших костей в цепочке.
- Переразвешиваем вершины так, чтобы кости "колена" ни на что не влияли, а зелёная — таки да.
И вуаля. После запекания анимации зелёная кость будет прикреплена куда следует. Главное обеспечить, чтобы суммарная длина костей колена была больше или равна максимально возможному для данного NPC удалению зелёной косточки от корня цепочки.
Учитывая наличие в движке таких изобилующих джойнтами скелетов, как паучок, можно позволить себе некоторую свободу самовыражения. Появилась лишняя цепочка из трёх джойнтов — смастерил новый членик на одном джойнте. Из четырёх — на двух.
Разумеется, всё это теория. Во-первых, указанные выше инструменты науке пока неизвестны. Во-вторых, могут всплыть неприятные сюрпризы. Например, вершины могут отказаться смешивать веса неродственных костей. Однако инструменты — дело в принципе наживное, а с сюрпризами мы, оптимисты, боремся по мере их поступления.
ЦитироватьХочется выступить по поводу ртов, хвостов, крыльев и т. п.
Мне кажется, перемещение - это скорее какие-то детали механических устройств. Скажем, поршень в цилиндре. Для крыльев и хвостов сойдет (и более того, представляется единственно верным) и вращение - ведь кости и суставы виртуального скелета вполне аналогичны таковым у реальных живых существ. С губами то же - губы, конечно, вещь сложная, но если делать как в первом Half-Life (открывание-закрывание), то можно установить вращение с достаточно большим радиусом и небольшой амплитудой, которое вполне сойдет за перемещение. Челюсть, кстати, тоже надо открывать-закрывать (в простейшем случае - как единое целое с нижней губой), а она, как и любая кость в организме, вращается.
Цитироватьзатаскивания в 3D-пакет данных о положении джойнтов, ориентации джойнтов и развесовке вершин;
Я как-то делал нечто подобное вручную. А именно - по кубикам воссоздавал скелет и привязывал его к модели Thief-овского стражника. Поскольку скелеты там очень простые, это было несложно.
Само собой, челюсть и всё остальное мы хотим вращать, а не двигать. Перемещение нужно для другого: чтобы челюсть двигалась за головой. Ведь в дарковских скелетах жёстко прописано, кто чей родитель, и голова в них бездетна. А перемещение анимируется от силы у двух корней цепочек (поправьте меня, если я неправ), и обе слишком важны для челюсти.
Сейчас будут слайды. Допустим, у тебя есть скелет без челюсти.
(http://pix.academ.org/img/2015/02/20/300_60f54e297317f3b18acd6fb6de2507df.png) (http://pix.academ.org/img/2015/02/20/60f54e297317f3b18acd6fb6de2507df.png)
Предположим, это скелет не хуманский, и у него ещё завалялась дополнительная цепочка. Ты её подставил на место челюсти.
(http://pix.academ.org/img/2015/02/20/300_b063b4190f9c1b02dabcb6829de74c52.png) (http://pix.academ.org/img/2015/02/20/b063b4190f9c1b02dabcb6829de74c52.png)
Как-то оснастил это всё и начал анимировать. Вот у тебя чувак отклонился назад, а челюсть-то и отвисла. Потому что родитель у неё какой был, такой и есть, а передвигать её вслед за головой нам запретили.
(http://pix.academ.org/img/2015/02/20/300_5a605fd51e5753b84667e821e6ebf545.png) (http://pix.academ.org/img/2015/02/20/5a605fd51e5753b84667e821e6ebf545.png)
Теперь сделаем сетапчег с инверсной кинематикой.
(http://pix.academ.org/img/2015/02/20/300_236632e3d88ad8f7164692901e15662f.png) (http://pix.academ.org/img/2015/02/20/236632e3d88ad8f7164692901e15662f.png)
Чувак отклоняется — челюсть нерушима.
(http://pix.academ.org/img/2015/02/20/300_4b7139ca343de9ac5dbf4032bb28e771.png) (http://pix.academ.org/img/2015/02/20/4b7139ca343de9ac5dbf4032bb28e771.png)
Примерно ясно. То есть речь идет не о поступательном движении, а о комплексном перемещении.
С тем же успехом можно делать и поступательные поршни. Если, конечно, механизм не настолько прост, что освободилась перемещабельная цепочка, которую легче двигать напрямую.
Chuzhoi
Так примерно расположены джойнты в твоём слизняке?
(http://pix.academ.org/img/2015/03/12/300_48b38b5f003fad2435f8cbc54ee324f7.png) (http://pix.academ.org/img/2015/03/12/48b38b5f003fad2435f8cbc54ee324f7.png)
Не совсем. У слизняка все-таки цельный скелет с туловищем и четырьмя конечностями, в котором последующая кость присоединяется к предыдущей. А здесь какие-то отдельно летающие кости. Или я что-то неправильно понимаю?
А вон линиями показаны иерархические связи. Ориентация у костей дефолтная, как и в исходном формате.
Все равно как-то не совсем так. Тут какая-то сложная конструкция с пересекающимися линиями. У слизняка было попроще. Хотя в целом по форме похоже. Вон и вертикальное "туловище" просматривается.
Ну а так? =)
(http://pix.academ.org/img/2015/03/12/300_bc9349dc1fb657772bfcb5e6bb8ff250.png) (http://pix.academ.org/img/2015/03/12/bc9349dc1fb657772bfcb5e6bb8ff250.png)
Ну это уже ближе.
А что вообще ты пытаешься продемонстрировать?
Пока только это:
(http://pix.academ.org/img/2015/03/13/300_aaa7bfbd8d1596b60b4ea779d5695080.png) (http://pix.academ.org/img/2015/03/13/aaa7bfbd8d1596b60b4ea779d5695080.png)
PinkDot сделал это: http://www.ttlg.com/forums/showthread.php?t=145752
Лёгок на помине :)
Zontik поймёт.
Спасибо за ссылку. Надо будет иметь ввиду. Поставил в закладки.
Придётся.... ух... придётся за это браться. Долой терпение убогости.
Все пути ведут к Максу.
Цитата: HellRaiser от 20 октября 2016 16:19:41
А вот кстати, там какой-то секретный кент НьюДарк пилит (ОБС), с ним вообще хоть кто-то пытался обратную связь наладить? Может попросить его формат моделек апнуть, чтобы с анимацией проблем не было и модельки через немаексовский конвертер сразу годнявыми получались (без напильника)? Знаю, просто так нельзя взять и поменять формат, но если очень захотеть...
Связь с ними у отдельных товарищей налажена, но вряд ли в планы входит переколбас системы анимации. Тут одним форматом не отдуплишься. И у неписей другой формат моделек, который я не поддерживаю (во всех смыслах).
Цитата: Maxim от 20 октября 2016 16:14:26
Спрошу прямо: можно ли надеяться на круглые плечи и не квадратные головы в darkengine, а так же не зашитые рты у NPC? И на движения, которые напоминает человека, а не робота.
Круглые плечи, обмыленные головы и резиновые руки — так точно. Здесь достаточно только увеличить количество полигонов.
Незашитые рты — никак нет. Скелет
Павленского человекообразного в движке не предполагает наличия нижней челюсти. Обойти этот порок развития нельзя.
Движения не робота, но человека — как посмотреть. Если в анимации не требуется работать кистью, изгибать стопу, поднимать руку и шевелить челюстью, то и можно. Ну то есть сделать прелестнейшую idle анимацию стояния на месте и нихеранеделания. Для других анимаций, боюсь, система подходит слабо.
Цитата: Maxim от 20 октября 2016 16:14:26
То есть я не про мотивацию, трату времени и умения, а про цифры для математики.
Да что там цифры, можно во всём убедиться по коду в утечных исходниках Темнейшего.
А руку почему нельзя поднимать?
Поднимать можно, но посмотри, что будет с плечом.
Да я уже скоро 20 лет как на это смотрю. Хотя в моделях от tdBonko этот подъем выглядит уже почти прилично.