МАГИСТЕРИУМ в T3Ed:   создать, избавиться, исправить

Автор Tiens, 28 сентября 2009 13:06:40

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

DJ Riff

Tiens
А AI не затупит, пытаясь пройти в формально "Открытую" дверь, которая физически преграждает ему путь?
[Исправлено: DJ Riff, 28 янв. 2010 11:12]
Тьма тоже распространяется со скоростью света.

Zontik

А в T3 закрытые двери не блокируют свет?
Как-то все слишком сложно получается, неизящно. То есть скорее всего это неверный путь. Правильное решение должно быть красивым, а не состоять из одних заплаток.
[Исправлено: Zontik, 5 апр. 2010 14:03]
Дайте глазам отдохнуть! Тёмное место

DJ Riff

ЦитироватьА в T3 закрытые двери не блокируют свет?
Если они отбрасывают тень, то в любом положении. Если в двери окно, то свет будет проходить сквозь окно, опять же независимо от состояния двери. То же касается и видимости Гаррета для AI.
Тьма тоже распространяется со скоростью света.

Tiens

ЦитироватьDJ Riff написал(а) 28 янв. 2010 11:11
Tiens
А AI не затупит, пытаясь пройти в формально "Открытую" дверь, которая физически преграждает ему путь?
по идее - не должен, но надо проверять в каждом конкретном случае.
Добавлено позже
ЦитироватьZontik написал(а) 28 янв. 2010 14:49
...Как-то все слишком сложно получается, неизящно. То есть скорее всего это неверный путь. Правильное решение должно быть красивым, а не состоять из одних заплаток.
Полный бред. Правда, с претензией на "взгляд философа". Красное еще не значит, что квадратное. К тому же, чаще всего правильных решений либо несколько, либо - ни одного.
[Исправлено: Tiens, 10 фев. 2010 14:19]
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Zontik

Просто я осознаю разницу между правильным решением и наилучшим. Правильный путь в моем понимании - тот, который ведет к наилучшему решению из возможных.
Кстати, в T2 мой трюк с блокирующим предметом тоже не проходит.
Дайте глазам отдохнуть! Тёмное место

Tiens

ЦитироватьZontik написал(а) 10 фев. 2010 14:35
Просто я осознаю разницу между правильным решением и наилучшим. Правильный путь в моем понимании - тот, который ведет к наилучшему решению из возможных.
"наилучшее решение" это чисто философская категория. в жизни достичь такого просто не возможно. тем более, когда речь идет об имитации реальности в редакторе.
ЦитироватьZontik написал(а) 10 фев. 2010 14:35
Кстати, в T2 мой трюк с блокирующим предметом тоже не проходит.
ну мой-то трюк работает в Т3. иначе я бы его не предлагала.
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Zontik

В редакторе наилучшее решение - не философская категория, а чисто математическая. Наименьшее количество задействованных объектов, связей и т.п. Собственно, игроку-то без разницы, но вот если приходится возвращаться и что-то переделывать, то тут-то она (разница) и выплывает, ибо чрезмерно усложненные вещи иногда просто невозможно исправить.
Цитироватьну мой-то трюк работает в Т3
Тогда, возможно, я был не прав и это и есть наилучшее решение.
По крайней мере работающее решение лучше идеального, но не работающего (опять философия).
Дайте глазам отдохнуть! Тёмное место

Tiens

ВОПРОС: Цели и Vertex Pools в порядке, но меня всё равно выкидывает в Винду в самом начале загрузки миссии.
мне уже кажется, что ты просто написал имена телепортов с ошибкой. проверь еще раз! имя телепорта в том PlayerStart, с которого стартует миссия, должно до копейки совпадать с именем телепорта в ExitMissionInfo в файле Entry.

ВОПРОС: Я не пойму, где надо прописывать в PlayerStart имя телепорта? Вот скрины PlayerStart и ExitMissionInfo в файле Entry и файле миссии
ах, вот в чем дело... ясен пень, миссия не загружается! Гарретту же некуда телепортироваться!
у Комага про это написано в главе "XXI. PREPARING MISSION". Если коротенько, то это так:
1) Открой "Actor Class Browser" и найди "Marker" – "Keypoint" – "NavigationPoint" – "PlayerStart". Создай в файле своей миссии еще один PlayerStart рядом со старым - с него миссия будет запускаться из меню игры. Старый PlayerStart тоже сохрани - с него стартует миссия, запущенная из редактора.
По сути PlayerStart и есть "телепорт", т.е. точка прибытия. В скриптах "про телепортацию" именно он имеется ввиду (например, скрипты магазинов). Между прочим, в оригинальных миссиях отлично видно, что в точке старта миссий - два телепорта (а иногда и больше).
Кстати, PlayerStart без имени телепорта в свойствах ДОЛЖЕН БЫТЬ ТОЛЬКО ОДИН на карте! Иначе игра может глюкнуть при запуске из редактора - не поймет, откуда именно ей начинать. А вот "именных" плейерстартов (с именем телепорта в свойствах) может быть воз и малая тележка...
2) В свойствах нового телепорта добавить новое свойство "Teleport" – "TeleportDestName" и в появившейся строке вписать нужное название. Еще раз подчеркну, что имя телепорта в том PlayerStart, с которого стартует миссия, должно до копейки совпадать с именем телепорта (свойство "ExitMissionDestTeleportName") в ExitMissionInfo в файле Entry.
Для тебя это, наверное, "XXX" или "StartXXX". Хотя имя может быть любое, в зависимости от твоего желания. Например, места назначения - "fence" для магазина... Как-то я тестировала телепорт и по какой-то, уже не помню какой, причине написала в качестве имени телепорта [spoiler]"HaXEP"[/spoiler]. Совершенно без задней мысли. На инглише, конечно же. И в скрипте, и в PlayerStart-e, соответственно. Муж это увидел, сказал что "телепортация [spoiler]на хер[/spoiler] это новое веяние в матершине", а дальше у него была укатайка минут на десять. :lol:

ВОПРОС: А как сделать телепорты внутри одной загрузочной зоны? Например, между улицей и кабаком, если оба находятся на одной и той же загрузившейся карте?
Самый простой вариант телепорта - браш типа Volume плюс точка прибытия PlayerStart.
Вокруг точки старта строишь Volume, а в точку финиша вставляешь PlayerStart. Главное, учти, что выставленную вольюм трогать нельзя - чуть сдвинешь, и она перестает работать, приходится её удалять и строить заново.
В свойствах Volume добавляешь новое свойство "Teleport" - "Teleport Info" и вручную вписываешь в строку "Teleport Destination" нужное тебе имя телепорта (например, "GoIntoPub"). В свойствах PlayerStart добавляешь новое свойство "Teleport" - "Teleport Dest Name", где прописываешь то же самое имя телепорта (т.е. "GoIntoPub").

Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС: почему, когда я уменьшаю размер меша, он всё равно сохраняет старые невидимые границы? Вот, например, рисунок (рис.Стол), на котором бармен лежит мёртвый в воздухе (на оригинальном размере). Это почему получается?
насколько я поняла, меш (Static Mesh Actor) для машинных мозгов состоит из двух вещей: визуальное изображение и виртуальные границы. это не одно и тоже.
когда ты меняешь свойство "Draw Scale" меша, ты меняешь только его "визуальное изображение", т.е. просто-напросто командуешь машине "рисовать" предмет так, чтобы он казался больше или меньше.
а его "границы" - т.е. минимальное расстояние от "центра" меша до активных объектов, на которое этим активным объектам позволено приближаться к "центру" меша - прописываются отдельно еще при создании меша в 3D-max, и они никуда не делись. вот движок и просчитывает их по-старому. поменять это в самом редакторе теоретически можно, но пока никто не открыл, как именно.
т.е. твой меш с виду может быть огромным как Эйфелева башня, но если его "реальные" границы занимают объем письменного стола, то в игре ты будешь свободно проходить СКВОЗЬ стенку этого меша. и наоборот бодаться с воздухом - при уменьшении. так что просто учти эту особенность и переделай этот стол.

НА ЗАМЕТКУ:
Правда, к NPC все вышепечисленное не относится.
В свойствах NPC есть раздел "Collision", где свойства "Collision Height" и "Collision Radius" задают соответственно высоту и радиус тем самым "виртуальным границам" в форме некоего невидимого цилиндра.
Соответственно, чтобы получить какую-нибудь гигантскую "ходячую статую", достаточно в её свойствах увеличить её "размер" через "Render" - "Draw Scale" (например, Draw Scale = 2.0) и ввести свои собственные "виртуальные границы" через "Collision" - "Collision Height" и "Collision Radius" (например, Collision Height = 80 и Collision Radius = 40).
Важно помнить, что если в твоих планах натравить на этого гиганта других NPC стандартного роста, то атаковать его будут только NPC дальнего боя, т.е. лучники или колдуны. NPC-мечники оружие-то вынут, но весь бой предпочтут тупо пялиться по сторонам.

ДОБАВЛЕНО ПОЗЖЕ:
Вот видео для наглядности - тестовая карта с гигантской Кадукой и боевыми ботами, созданными специально для The Cabal.
   TDS_Bots_Plus_GiantCaduka_001.avi http://www.youtube.com/watch?v=I8KRUB8702Q
   TDS_Bots_Plus_GiantCaduka_002.avi http://www.youtube.com/watch?v=S5uYkqY3gas
   TDS_Bots_Plus_GiantCaduka_003.avi http://www.youtube.com/watch?v=xXsPobPR71U
   TDS_Bots_Plus_GiantCaduka_004.avi http://www.youtube.com/watch?v=Er8sTuN0TQo

[Исправлено: Tiens, 19 сен. 2010 12:05]
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС: При тестировании русского перевода бета-версии миссии на компе тестера выяснилось, что часть книг, вместо текстов, показывает надпись "Not translated into French". Причем цели и многие другие книги отображаются как надо. Переустановки игры, обновление GarrettLoader до версии 1.42 и редакторский T3Main.exe тестеру не помогли. На моем же компе этого глюка нет - ни при проигрывании через редактор, ни при установке миссии через GL...
Во-первых, огромное спасибо Morgil за то, что ради исправления этого бага многократно тестировал различные версии моей части The Cabal.
Так вот, добиться того, чтобы все тексты появились и у тестера, удалось. Хитрость оказалась в том, что некоторые сборки игры не всегда правильно понимают, как раскрыть SCH-файл и что из него показать игроку. Мой личный TDS (родной англоязычный версии 1.1. плюс локализация от Dark Fate Team) и так всё показывает, но у Morgil - локализованная версия от НевоСофта, из-за чего и были все проблемы.
Итак, чтобы тексты точно читались у всех игроков, надо отследить следующее:
1) у любого эктора из семейства "Readable" (т.е. книги) в свойстве "Book File Name" надо писать название текстового файла обязательно с раширением *.txt - например, "CABAL_LordsDiary.txt".
2) в любом SCH-файле служебный текст, отвечающий за то, как игра преобразует текстовую информацию - данные об используемом шрифте, размере букв, цвете, положении строки на странице - должен быть написан без пробелов. Например:
lang_english 2004-03-08 10:25:16 "<font=Papyrus10>\n<dc=0,0,0><jl>\nТекст сообщения \n"
lang_french 2004-03-08 10:25:16 "<font=Papyrus10>\n<dc=0,0,0><jl>\nТекст сообщения \n"
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС: а как менять текстуры NPC? ...способ "Alt и ЛКМ" не рулит
"Alt и ЛКМ" и не будет рулить, тут другие законы "раскрашивания". скин NPC может состоять aж из 7 текстур (туловище, ноги, лицо, шея, область вокруг макушки, волосы, борода), просто некоторые из них в некоторых скинах заменены на невидимые. количество скинов и набор текстур для каждого скина прописывают еще при создании модели в 3D-MAX.
чтобы заменить скин, тебе надо найти в свойствах NPC раздел Render, свойство "Material Skin". это свойство выдаст тебе на выбор целый список разных скинов. причем, эти списки разнятся в зависимости от модели тела NPC. так что может так случится, что подходящего скина для данного тела ты не найдешь, и тогда тебе придется брать другое тело и изучать скины уже этого, другого тела.

Добавлено позже
ВОПРОС: Как сделать ДВИЖУЩИЕСЯ зелёные световые облачка, летающие в карте Язычников? Я их копирую (с невидимой каплей), вставляю себе в карту, но меня выкидывает из редактора.
они называются Pagan Willo Wisp и являются по сути лифтами. увы, их копировать бесполезно, даже если скопируются - заглючат. надо создавать самому:
1) в Actor Browser найди этот Willo Wisp (World Object -> Moving -> Elevator -> Moving Pagan Willo Wisp) и точки-маркеры, по которым он будет передвигаться (Marker -> Keypoint -> Waypoint Marker). Размести их на карте.
2) Соедини Willo Wisp с его маркерами с помощью связей (Links) типа "Elevator Floor Marker" (направление - от Willo Wisp к маркерам). Обзови эти связи личными именами "1" и "2" (выделить Willo Wisp -> щелкнуть ПКМ -> Actor Links -> выделить одну из связей с маркером -> кнопка Edit Selected Link -> в открывшихся Properties развернуть раздел Links -> в свойствах m_GroupName и m_Name напечатать цифру 1 или 2).
3) Открой свойства Willo Wisp и добавь ему скрипты (раздел Scripts -> Trigger Scripts -> добавить скрипты с именами "WillowStart", "Willo2" и "Willo1from2"). Эти скрипты - оригинальные, так что их можно найти в Scripts Browser в разделе Missions - Pagan Intro - Pagan Willo Wisps, а можно и самому написать. После чего запусти ребилдинг и сохрани карту.
Содержание скриптов:
а) скрипт WilloStart:
COND.:
- When map starts arriving from a different map
ACT.:
- Call elevator at end of [MYSELF] to destination at end of [ElevatorFloorMarker:1]
б) скрипт Willo2:
COND.:
- When Floor Marker at end of link [ElevatorFloorMarker:1] is reached by elevator at end of link [MYSELF]
ACT.:
- Delay [0.10] GAME seconds
- Call elevator at end of [MYSELF] to destination at end of [ElevatorFloorMarker:2]
- Reset script conditions and actions
в) скрипт Willo1from2:
COND.:
- When Floor Marker at end of link [ElevatorFloorMarker:2] is reached by elevator at end of link [MYSELF]
ACT.:
- Delay [0.10] GAME seconds
- Call elevator at end of [MYSELF] to destination at end of [ElevatorFloorMarker:1]
- Reset script conditions and actions
Заметь, что содержание и количество скриптов зависит от того, по скольким маркерам будет передвигаться Willo Wisp. В данном примере только 2 маркера, хотя создатели уже предусмотрели скрипты аж на 9 точек передвижения.
Значит, чтобы Willo Wisp летал, скажем, по 5 маркерам, тебе надо добавить эти 5 маркеров и обозвать все связи с ними цифрами от 1 до 5 - по порядку, а также добавить все нужные скрипты (один скрипт стартовый, четыре скрипта пути и еще один скрипт возврата в точку номер 1), чтобы полет светлячка вошел в цикл.

ВОПРОС: А их скорость передвижения можно уменьшить? У тебя в ФМке они медленней двигались.
честно говоря, уже не помню, это они медленно двигались или просто зал был большой. но у них есть свойство (Properties -> Physics -> Elevator Controller -> Elevator Speed = 48), которое отвечает за скорость передвижения. наверное, он действительно слишком быстро двигается: у этого Willo скорость по умолчанию 48, а у всех других лифтов - только 32.

Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС: Как избавиться от подсчета лута в миссии? Вроде скрипт нашел и удалил action, но подсчет лута всё равно идет.
1) надо не тело скрипта править, а просто удалять этот скрипт из свойств объекта.
2) а также удалять твою карту из списка цели счета лута в Objectives Browser.
3) и заодно поставить "-1" напротив всех подсчетов лута в свойствах объекта с названием типа "Difficulty Info Имя твоей миссии".
насколько я поняла, на подсчет лута влияют только эти три вещи.
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС:   Я надыбал новенькую текстурку старых досок, но при проигрывании Гарретт топает по ним как по железу. Что на это влияет и как это можно исправить?
Обычно за то, какой именно звук будет издавать текстура, отвечает одна из категорий материалов - дерево (wood), металл (metal), стекло (glass) и т.п. Такой материал приписывается к ячейке каждой текстуры еще при создании файла MLB (матлиб или "material library") в 3D-MAX. Это надо обязательно учитывать, особенно если ты добавляешь новые текстуры через замену оригинальных.
Чтобы посмотреть, что за материал будет озвучивать какую-нить текстуру, надо открыть Textures Browser -> выделить нужную текстуру -> щелкнуть ПКМ -> выбрать из списка Material Info -> в открывшемся окошке посмотреть, что за материал написан рядом со свойством Material Category (wood, metal, carpet, glass и т.д.). Изменить это в редакторе никак нельзя. Если нужен именно деревянный звук, приходится просто искать другую ячейку, куда уже приписан материал "дерево", и заменять её текстуры своими.
Но иногда неверный звук издает не текстура, а меш, на который она наложена. Сама не пробовала, но говорят, это можно исправить, насильно приписав какой-либо материал к данному мешу в Static Mesh Browser. Для этого надо: найти этот меш в Static Mesh Browser -> выставить галочку свойству Override Material Category (раздел Object Material) и выбрать из активировавшегося списка нужный материал -> вставить меш на карту. Минус такого решения - ВСЕ объекты данного вида на этой карте будут звучать именно так, как выставлено в Static Mesh Browser. Т.е. если приписать какому-нить дивану звук металла, то на этой карте ВСЕ такие же диваны будут звучать как цельнометаллические.

Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

#28
ВОПРОС:   Как включить "режим бога"? В консоли что-то вводить?
Не, гораздо проще. В папке игры (!!! не редактора), в подпапке System, в настроечном файле DEFAULT.INI надо найти раздел [Difficulty] и выставить "=0.0" для всех уровней сложности в разделах:
; AI visual acuity multiplier => отвечает за зрение АИ
; AI auditory acuity multiplier => отвечает за слух АИ
; AI-to-player damage multiplier => отвечает за повреждения Гарретта от чужого оружия
Далее надо сохранить файл и запустить игру. Учти, что такие изменения чреваты своими глюками, а потому для тестирования поведения АИ они не подходят. Например, АИ все равно замечают воровство и кровь, а потому начинают паниковать в самый неожиданный для игрока момент.

Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС:   Я скопировал участки прозрачной воды из родной карты Т3, но брызги и звуки не работают. Как это исправить?
Тебе нужна такая вода, чтобы Гарретт мог в ней ходить, так?
В Т3 вода состоит из меша, изображающего поверхность воды, и одной или нескольких вольюмов (Shallow Water Volume) с настройками. Надеюсь, что под "участками воды" ты имеешь в виду только меш, потому что вольюмы из других карт копировать и бесполезно, и чревато глюками.
Само по себе сделать воду очень просто, но есть две вещи, которые надо помнить:
1) надо правильно построить вольюм. Тут те же правила, что и с остальными вольюмами - строится раз и навсегда, и нельзя двигать.
2) если вода вдруг перестала работать, надо удалить вольюм, потом провести ребилдинг, потом построить новый вольюм, и опять ребилдинг.

Итак, строим воду по этапам:

1) вставляем меш водной глади туда, куда нам надо. Далее определяемся с текстурой воды. И, наконец, задаем "движение воды" через свойства Render / Texture Pan / TexturePanX и TexturePanY. Для медленного движения надо вводить числа меньше единицы (например, 0.2). Для быстрого - числа больше единицы (например, 2.0). Учти, что знак "+" или "-" тоже имеет значение - он задает направление движения.
Для того, чтобы посмотреть, куда потечет вода, в панели окна Flesh Renderer (та четвертинка экрана, где цветная картинка) жми на пиктограмму Realtime Preview - т.е. "воспроизведение в реальном времени" - (это джойстик) или клавишу "Р", и немного продвинься в окошке Flesh Renderer. И не забудь потом отключить это "воспроизведение", т.к. оно очень сильно тормозит работу редактора.


2) теперь надо заставить игру выдавать нам брызги и звуки, для чего надо построить вольюм. Учти, что "дно" вольюма должно совпадать с мешем воды (или быть чуть ниже - на 4uu или 8uu), а "потолок" должен накрывать Гаррета с достаточным запасом, чтобы даже подпрыгивая в воде Гаррет не выскакивал за пределы вольюма (обычно хватает высоты 192uu или 256uu).
Итак, выставь красному кубу нужные размеры и форму и поставь его туда, где должна быть вольюм воды. Теперь в панели "Построить" найди пиктограмму Volumes и выбери строку Shallow Water Volume.


3) теперь убери красный куб и открой свойства появившейся вольюм. В свойствах надо вручную задать свойство Water / Surface Height = 8.0 - это на какой высоте от "дна" вольюм должны появиться брызги. И если результат не понравится, его значение можно потом изменить. Эта цифра считается в unreal units, так что если написать "SurfaceHeight=128.0", то брызги будут появляться над головой Гарретта.


4) теперь полный ребилдинг карты и тест в игровом режиме.

[Исправлено: Tiens, 15 сен. 2010 9:18]
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050