![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#46
|
|
Level 6 ![]() ![]() Класс: Друид Характер: Chaotic Neutral Раса: Гном ![]() |
Вряд ли одновременный, он последовательный (IMG:style_emoticons/kolobok_light/smile.gif) Ага, следующий не запускается, пока не выполнится предыдущий. Благодаря этому можно устроить нумерацию мобов: модульную локалку-счётчик, инкрементирующуюся при каждом спауне и кричерскую локалку-номер с текущим значением счётчика. Гарантировано все номера будут разные. |
![]()
Сообщение
#47
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Смысл локалок в том, что НПС не знают изначально массу вещи, поэтому подходят и смотрят каждую и либо подбирают, либо вешают локалку. «Гет вейт» не работает на криттеров как определялка массы всего их инвентаря – он как раз нужен в тех случаях, когда требуется узнать массу вещи.Учти ещё, что у них не бывает перегруза и GetWeight на них всегда возвращает 0. Как с контейнерами быть? НПС замечают их, подходят, осматривают и открывают. Действие ActionTakeItem не выполняют. Пришлось на контейнеры на OnOpen вешать скрипт на проверку Действие «ActionTakeItem» по умолчанию изымает, а не переносит вещь – чтоб описать его в виде транзакции, его нужно использовать через оператор «AssignCommand» для осуществителя транзакции; при этом если осуществитель транзакции не способен взаимодействовать с вещами, использовать вместо него действие «ActionGiveItem» привзянное на объект транзакции с получателем на осуществителе транзакции (конечно при условии что объект транзакции в этом случае может взаимодействовать с вещами):AssignCommand(oTarget, ActionTakeItem(oItem, oObject)); AssignCommand(oObject, ActionGiveItem(oItem, oTarget)). P.S.: Кстати у НПС есть 2 слоя инвенторя: обычный (доступный всем) и служебный (доступный только НПС) – я это не отслеживал, но вполне может так случиться что вещь по умолчанию попадает в служебный и далее существует в игре только для НПС. Однако при транзакции вещей (НПС взял вещь – НПС отдал вещь) это не имеет значения. А как решается проблема хербита в локация, где нет игрока - он там либо отрубается,либо запускается с большими задержками. Помнится, нпс заходят в дом и все - пока туда не пришел игрок, он не выйдет. Просто поставить условие по времени или событийный триггер которые выгоняет НПС из дома. У меня стоят в АИ криттеров аналогичные системы на хеартбите – вроде они работают даже в «свернутом» режиме без игроков в модуле, и криттеры оказываются при появлении игрока там, где им прописано.
Сообщение отредактировал Flaristan - Oct 7 2012, 18:06 |
![]()
Сообщение
#48
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Цитата А как решается проблема хербита в локация, где нет игрока Просто - он не используется.
|
![]()
Сообщение
#49
|
|
Level 6 ![]() ![]() Класс: Друид Характер: Chaotic Neutral Раса: Гном ![]() |
Как определить отсутствие игрока в локации?
|
![]()
Сообщение
#50
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Берем дверь, ставим на триггер OnOpen:
Код void main(script1) { object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF, 1, -1, -1, -1, -1); object oArea = GetArea(OBJECT_SELF); if ((GetIsObjectValid(oPC))&&(GetArea(oPC) == oArea)) { if (GetIsOpen(OBJECT_SELF)) { DelayCommand(300.0, SetLocked(OBJECT_SELF, FALSE)); } else { return; } } else { ActionCloseDoor(OBJECT_SELF); } } и на OnUnLock: Код void main() { ExecuteScript("script1", OBJECT_SELF); } …в результате получаем дверь, которая будучи однажды открыта кем-либо раз в 5 минут проверяет свое состояние, и в случае если она открыта и игрока нет поблизости – затворяет (при необходимости и запирает) себя и прекращает проверки. Система из моего модуля «антиполтергейст» - всегда раздражали самозакрывающиеся двери на шардах… |
![]()
Сообщение
#51
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Вы чего-то не в том разделе со скриптами. Есть же спешл тема.
|
![]()
Сообщение
#52
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Небольшой вопрос по организации коллекции точек интереса. Есть два варианта:
1. Один номер - много тегов. Пример: №1 - таверна, отдых, бухло, ночлег, №8 - хозяйство, огород, №15 - одиночество, пруд, рыбалка, №16 - одиночество, опушка, ягоды, цветы... Выбор происходит по тегам - получаем все номера и потом рандомайзим, если вышло несколько точек. + у точки может быть несколько целей, разные неписи могут прийти туда с разными целями + довольно органично выглядит 2. Один тег - много точек. Пример: таверна - №1, 2, 4, огород - №8, 9, пруд - №16... + простота реализации - выбираем цель и рандомом внутри неё номер - сложно заполнять таблицу - один номер надо пихать в разные теги Сейчас голова не варит, но что-то мне подсказывает, что вариант 2 будет очень сложно поддерживать, похоже на колосс на глиняных ногах. Идеи? Может какая комбинация? |
![]()
Сообщение
#53
|
|
Level 6 ![]() ![]() Класс: Друид Характер: Chaotic Neutral Раса: Гном ![]() |
Ксати (хотя не кстати, но пофигу, пусть будет), идея для поведения НПС: они иногда ходят в лес по той или иной нужде и имеют некий шанс заблудиться в лесу. Кричать "Ау!" или прятаться от диких зверей, подходить с вопросами "Как пройти в город?" или просьбами "Спасите меня!" к игрокам и другим энписям. Можно и в городе что-нибудь подобное: "Где тут библиотека?"
|
![]()
Сообщение
#54
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
ОМГ *представил себе какие веселые баги могут возникнуть со всеми этими системами* Ну правда – у меня даже с крысиной системой «рефлекторного» уровня всплыло множество багов при отладке ее в модуле, а вы хотите полноценных «киборгов» наделать… Чую это получится попросту неиграбельно. Попробуйте поставить себе задачу попроще: сделайте АИ для самых банальных городских НПС таких как кузнец, стражник, торговец, бомж и т.д. – продумайте каким индивидуальным поведением должен этот НПС выделяться (чтоб показать всячески что он именно тот кто описан в «квенте»), придумайте чем бы он мог его разнообразить (чтоб не смотрелся как одна сплошная анимация или памятник), реализуйте это, настройте и протестите всячески в модуле. Затем уж беритесь добавлять новые ветки поведения. Иначе получится что вы «титаник» забабахаете, который на первом же айсберге с парадами и феерверками неблагодарно потонет с концами.
|
![]()
Сообщение
#55
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Не вижу ничего сложного (IMG:style_emoticons/kolobok_light/unsure.gif)
|
![]()
Сообщение
#56
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
1 больше нравиться, мне кажется и лучше.
Вопрос: а как несколько городов? Для каждого города свои точки или одни точки на весь модуль? |
![]()
Сообщение
#57
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Цитата а как несколько городов? Для каждого города свои точки или одни точки на весь модуль? Префикс тега вейпоинтов хранится локалкой на локации. Можно один набор на весь шард, можно по несколько на город. Но из-за квадратичной сложности алгоритма поиска пути лучше все независимые друг от друга пути делать разными наборами.
|
![]()
Сообщение
#58
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Не вижу ничего сложного (IMG:style_emoticons/kolobok_light/unsure.gif) Тогда советую поиграть самому в то, что делаешь. (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#59
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Ты не поверишь, но я у себя всё это обкатываю.
|
![]()
Сообщение
#60
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
…Я надеюсь. Только «обкатать» и «поиграть» - это все-таки разные вещи. Не раз сталкивался с проблемой, когда разраб вносит в игру по его мнению разумную вещь, которая по мнению же игроков является попросту «ненужным геморроем». И не раз после обкатки и введения систем у себя замечал такой геморрой, уже играя в собственный модуль – после чего приходилось править заново. Причем дело даже не во взгляде на игру в целом «с верху», когда вся картина видна целиком. Дело в банальном не ощущении геймплея изнутри. Чтоб хорошо делать для игроков, а не для себя – нужно играть в то, что сделал.
Сообщение отредактировал Flaristan - Oct 14 2012, 03:22 |
![]()
Сообщение
#61
|
|
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Neutral Раса: Хафлинг ![]() |
Дело в банальном не ощущении геймплея изнутри. Чтоб хорошо делать для игроков, а не для себя – нужно играть в то, что сделал. Мне нечто подобное всегда рекомендует начальник, когда я проектирую интерфейс пользователя в какой-то системе (IMG:style_emoticons/kolobok_light/smile.gif) . |
![]()
Сообщение
#62
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Я конечно всё понимаю, но какой геймплей может быть в десятке бродячих городских коммонеров? (IMG:style_emoticons/kolobok_light/smile.gif) Вот если я возьмусь переписать боевой ИИ, тогда да, влияние на геймплей будет налицо.
|
![]()
Сообщение
#63
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Если в твоем модуле весь геймплей будет заключаться в проработанном балансе классов и системе прокачки – то конечно да, АИ гражданских неписей никакой роли играть не будет (собсно тут даже проще, если его вообще не будет и НПС будут как плейсеблы тупо стоять). А если уж контент будет направлен на создание атмосферы (а больше не для чего не нужны такие заморочки в НВН над АИ НПС) – то тут стоящие вкопанными на своих местах НПС тоже лучше, чем застрявшие в стенах/дверях/плейсеблах или тупящие в неожиданных местах.
У меня в самом старте модуля стоит НПС чьи функции ограничиваются привлечением внимания игрока, разговором с ним и в качестве полезной нагрузки – подработка дворецким (закрывает калитку неподалеку от своего поста, если ее оставляют открытой). Естественно поставить и обкатать такого не составило большого труда, но за все время теста модуля пока я там игрался и тестил все сам – нашел кучу логических багов для этого НПС которых пришлось исправлять и дорабатывать его и без того простейшее АИ. Последний сбой например при выполнении определенных условий приводил к тому что этот НПС становился столбом у двери и отказывался возвращаться на свой пост. В игре такие оплошности разработчиков выглядят крайне некрасиво, а вы хотите нагрузить бедных НПС сложнейшими алгоритмами, от которых у них попросту все схемы перегорят и крыша съедет. И в итоге получатся город безумных кукол творящих непонятное – у меня как игрока такая атмосфера в игре например вызывает только подташнивания (сразу видится не фэнтазийный город со сказочными персонажами а набор тайлов с криво работающими скриптами). А таких НПС хочется милосердно добить чтоб не мучились (пользуясь случаем передаю привет всем Аменским коровкам (IMG:style_emoticons/kolobok_light/biggrin.gif) ). |
![]()
Сообщение
#64
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
denis0k
Возьмись пожалуйста за боевой АИ! Онегай!!!! (IMG:style_emoticons/kolobok_light/wizard.gif) |
![]()
Сообщение
#65
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Цитата Если в твоем модуле У меня нет модуля. Я просто ради интереса занялся тем, чем хотел заняться давно - ИИ. Пригодится кому (при условии отсутствия багов конечно) - пусть ставит, нет - я абсолютно ничего не потеряю (IMG:style_emoticons/kolobok_light/smile.gif) Цитата Возьмись пожалуйста за боевой АИ! Онегай!!!! После этого, если не надоест и если будет время - займусь и боевым, уже в процессе появились даже идеи по организации отдельных моментов.Добавил вечерком: Вопрос производительности на данный момент закрыт. Кэширование и немного эвристики спасают отца русской демократии (IMG:style_emoticons/kolobok_light/smile.gif) Можно не только сохранять уже рассчитанные маршруты (что банально), но и использовать старые при расчёте новых. Т.о. только первые неписи что-то реально считают, а один хороший путь "из варяг в греки" вообще способен снабдить живительным жизненным опытом половину города (IMG:style_emoticons/kolobok_light/smile.gif) Полный расчёт пути при 63 точках на 3х локациях у меня занимает около 100мс, если есть что-то подходящее в кэше - 1-2мс. Сообщение отредактировал denis0k - Oct 14 2012, 19:18 |
![]()
Сообщение
#66
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Ну, таких работ полно на ваулте – дело в том, что кусочки нужны только тому, кто клеит мозаику.
К тому же это минус для работы – система получится совершенно не опробованной на деле, ибо не будет учтена куча бытовых нюансов. Хотя конечно хозяин – барин. Представляю как дико будет выглядеть когда полгорода НПС будет устраивать такой флэшмоб. (IMG:style_emoticons/kolobok_light/biggrin.gif) А еще кстати использование уже готовых шаблонов всегда плохо тем, что при изменении исходных данных шаблоны удачных решений автоматически становятся неудачными. |
![]()
Сообщение
#67
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Отказался от тегов и приоритетов в пользу распределённого рандома - алгоритм выбирает сначала из точек, где никого нет, потом - где есть только один нпс (IMG:style_emoticons/kolobok_light/smile.gif) Мне показалось, что так гораздо проще и равномерней заполняются места интереса (IMG:style_emoticons/kolobok_light/smile.gif) Иначе рандом глюканёт, и будет полгорода в кабаке. Для флэшмобов напишу отдельный костылик, позволяющий по команде сгонять народ в любую точку (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#68
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
А общаться нпс будут? или просто - приходят, выпили, ушли... пришли, помолились ушли... не будет такого - типа шли шли, а потом бах встретились и давай чесать языком, сплетни..., а тут игрок ага "новая тема для разговора" (!) (IMG:style_emoticons/kolobok_light/smile.gif) Я мечтаю да?)
|
![]()
Сообщение
#69
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Взаимодействия написать несложно, но именно диалоги меня смущают. В долгосрочном периоде это выльется в "я раньше тоже бла бла бла, но потом мне прострелили колено" от каждого встречного (IMG:style_emoticons/kolobok_light/smile.gif) В дьябле у неписей в городе есть готовые фразы, я их уже наизусть знаю, что бесит с определённого момента, уж лучше был молчали.
Более менее разумный выход - сделать базу из 300+ коротких диалогов (если сделать с макросами, фактически их будет меньше), чтобы в пределах пары дней они хотя бы не повторялись, но всё равно будет не фонтан. Да и вряд ли кто-то сходу напишет столько текста. |
![]()
Сообщение
#70
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Хотя бы просто взаимодействие, с видимостью диалога типа: *разговаривает*, *смеется*, *умоляет* и тд (IMG:style_emoticons/kolobok_light/smile.gif) , а то как буратины, без общения (IMG:style_emoticons/kolobok_light/smile.gif)
Диалоги можно придумать... просто время нужно. Хотя, в принципе можно открыть любой учебник языка и писать оттуда, чуть изменяя. Время и место другое, но люди - всегда люди и говорят о насущном: еда, погода, родня, деньги, женщины/мужчины, дети, работа, хвастаются покупками, сердечные дела, лошади и скот, религия. Из персональных можно было бы сделать - события или слухи, связанные с местом (если житель местный) или сезонные время - сбор урожая, или посев...."сей год мол бла-бла-бла". Перед праздниками - о праздниках и о ярмарках, когда турниры идут - про турниры (IMG:style_emoticons/kolobok_light/smile.gif) А представь, если бы НПС-торговцы, когда встречали игрока и видели, например, что у него здоровье стремитсья к 0, предлагали бы ему купить бутылочки со снадобьем (IMG:style_emoticons/kolobok_light/smile.gif) )) Сообщение отредактировал Melisse - Oct 14 2012, 23:39 |
![]() ![]() |
Текстовая версия | Сейчас: 7th July 2025 - 16:59 |