Гражданский ИИ |
Здравствуйте, гость ( Вход | Регистрация )
Гражданский ИИ |
Oct 2 2012, 17:46
Сообщение
#1
|
|
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) Заставлю неписей заниматься делами: кто-то утром пойдёт на работу (а вечером - домой), кто-то - молиться, кто-то - бухать и т.п. Всё без индивидуальных маршрутов и скриптов. Что уже сделано: самое скучное - поиск кратчайшего пути по дереву вейпоинтов, ходьба из пункта А в пункт Б хоть через 10 локаций. Что предстоит сделать: самое весёлое - запрограммировать болванчиков на свободу выбора жизненных приоритетов. Нафига: а хз, для разминки мозгов. Ну и мб Экзису всё-таки пригодится. В любом случае, все наработки я выложу в общий доступ. Ах да. Есть хитрые идеи творческого плана? |
Oct 3 2012, 18:54
Сообщение
#2
|
|
Level 11 Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North |
Нвскрипт - и есть этот высокоуровневый фреймворк (IMG:style_emoticons/kolobok_light/smile.gif) И городить сверху ещё огород - уже не очень с руки. Проблема в данном случае в том, что он тормозной, по кастомным боевым ИИ это хорошо видно. Если, к примеру, мобов с джаспером натыкать штук 40, они так будут скриптами шуршать, что либо хертбит будет раз в 20 секунд, либо сервер попросту ляжет (IMG:style_emoticons/kolobok_light/smile.gif) Ден, это скорее проблема реализации (IMG:style_emoticons/kolobok_light/smile.gif) Джасперовский АИ очень хорош с точки зрения учёта всего-чего-изволите, но реализован крайне топорно. Пример: функция, отвечающая за каст боевых заклинаний, пробегает почти все их с проверкой вида if(GetHasSpell(SPELL_FREAKING_SOMETHING))ActionCastSpell(SPELL_FREAKING_SOMETHING, GlobalTarget), а правильный подход в данном случае - кэшировать в онспавне/онресте существующие заклинания и кастовать их уже из таблицы. С использованием в сомнительных местах NWNX для быстрого доступа к содержимому слотов. Как вариант, вынести наиболее требовательные к времени исполнения части в NWNX (2.8 API не идеален, но им в отличии от предыдущих версий можно пользоваться без непрерывного потока нецензурных мыслей). Сообщение отредактировал Ilerien - Oct 3 2012, 18:54 |
Текстовая версия | Сейчас: 29th April 2024 - 00:19 |