Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
6 страниц V  < 1 2 3 > »   
Ответить в эту темуОткрыть новую тему
> Гражданский ИИ
Fimko
сообщение Oct 4 2012, 17:34
Сообщение #21


Level 3
*

Класс: Обыватель
Характер: Lawful Good
Раса: Человек



Цитата(denis0k @ Oct 2 2012, 17:46) *
Ах да. Есть хитрые идеи творческого плана?

Не совсем самостоятельная идея, скорее дополнение. Сделать уровень занятости для НПС. В зависимости от этого уровня, НПС будет более целенаправленно и быстро шагать к своему вейпоинту, или наоборот с удовольствием глазеть на прохожих, поворачиваясь им вслед и охотно вступая в диалог. Если НПС, допустим, стражник спешащий на крики о помощи, то он вряд ли будет вступать в диалог с кем либо. Ну, а если это какой-нибудь бездельник, то и поболтать не прочь и лицом поторговать. Как вариант, при этом можно накладывать бонус/штраф скорости ходьбы/бега в приделах 10%. Это должно создать некую иллюзию того, что кто-то торопится а кто-то не особо.

Сообщение отредактировал Fimko - Oct 4 2012, 17:35
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Flaristan
сообщение Oct 4 2012, 17:59
Сообщение #22


Тролль
****

Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Тварь



По-моему нет необходимости выводить это в отдельно настраиваемую категорию, обычные реакции на событийные триггеры:
- время послеобеденное, погода замечательная – НПС рад и весел, шатается праздно по улочкам, периодами ненадолго вспоминая, куда он шел;
- уже темнеет или вдруг начался дождь/снег – НПС торопится сделать то, что хотел и вернуться под какой-либо кров согреваться;
- «в Богдаде все спокойно» - НПС-страж мерно меряет мостовую шагами от вейпоинта к вейпоинту;
- кто-то кого-то атаковал или другие НПС подняли крик – НПС-стражник спешит на помощь, громко бряцая латными сапогами по мостовой на бегу…
…Ненужно никакого уровня, просто детально запрограммированные события индивидуальные для каждого АИ – смотреться будет намного красивее, чем универсальный переключатель.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение Oct 4 2012, 21:25
Сообщение #23


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Оставлю пока ваши споры, займусь реализацией выбора целей. Просто захардкодить цели и сделать вилку из if-elseif не хочу, ща думаю над реализацией через бд и sql, пока выглядит довольно здраво.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Oct 4 2012, 22:18
Сообщение #24


Level 17
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



БД и SQL - это само собой, только я, как правило, подобные данные сразу кэширую в локальных переменных (с возможностью их обновления по требованию) и дальше уже работаю с ними. Всякие AI и прочие штуки постоянно используют свои данные, а лезть каждый раз в базу за ними - слишком дорого.
Пиши в аську, если что. Я всё-таки продумывал эту тему в своё время. (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Anakondar
сообщение Oct 5 2012, 17:38
Сообщение #25


Level 6
**

Класс: Друид
Характер: Chaotic Neutral
Раса: Гном



Вот ещё что нужно реализовать:

Если НПС видит валяющийся бесхозный шмот, он его осматирвает.
Если вещь неотайдентифаеная, пытается отайдентифаить. Если не получается, говорит "Я понятия не имею, что это", иначе "О, это же то-то!"
Далее решает брать или не брать. Если взял, решает надеть или не надеть. Если перегруз, то жалуется и выбрасывает что-нибудь (не обязательно это же).
Продолжает свои дела.

Если он видит бесхозный сундук\сумку\шкаф, то подходит.
В зависимости от того, закрыт он или нет, и наличия или отсутствия оупен лока, открывает. Далее с содержимым контейнера вышеописаный порядок.

И естественно в зависимости от степени гуманоидности все реакции.

Отредактировано:
Да, кстати, сделал только что у себя подбор вещей. Только вот проверку на перегруз не сделал. Есть какая-нибудь функция, которая это проверяет?

Сообщение отредактировал Anakondar - Oct 5 2012, 18:56
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Flaristan
сообщение Oct 5 2012, 22:17
Сообщение #26


Тролль
****

Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Тварь



Я крыс научил находить и подбирать на локации в пределах «видимости» брошенное мясо/приготовленное мясо/оккупировать трупы.

Можно через GetWeight() посчитать вес инвенторя и сравнивать с вычисляемым текущим грузоподъемом НПС от мода силы.

P.S.: Только тут можно переборщить и будет куча ненужных багов и несуразностей (типа как в Аркануме открыть запертую дверь? – выложить перед ней монетку: НПС увидит ее и подойдет чтоб взять, открыв перед собой запертую дверь).

Сообщение отредактировал Flaristan - Oct 5 2012, 22:21
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Anakondar
сообщение Oct 6 2012, 00:07
Сообщение #27


Level 6
**

Класс: Друид
Характер: Chaotic Neutral
Раса: Гном



Всё, вставил проверку на силу. Правда теперь после выбрасывания от перегруза тяжелого айтема пнс начинает идти по делам, потом вдруг замечает выброшенный (им же) айтем и с радостным криком "Ой, что я нашел!" бежит к нему. Подбирает его, перегружается, выбрасывает, и всё заново.

Пришлось после выбрасывания вешать на айтем локаль с результатом проверки на вес. Получается, после первого перегруза нпс заранее знают что сколько вокруг весит. Но в целом выглядит нормально, собиратели пустых бутылок занимаются бутылками, а на фулплейты не смотрят.

Сообщение отредактировал Anakondar - Oct 6 2012, 00:08
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение Oct 6 2012, 00:56
Сообщение #28


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Забавно. Клёвый алгоритм сложности O(n^2) вызывает стопроцентный тми, хотя выполняется за полсекунды (IMG:style_emoticons/kolobok_light/smile.gif) Элементов немного (пока 60, по-хорошему надо 200+), но в скрипте парочка O(n) и один O(n^2) - вылетает на 20й итерации внешнего цикла последнего (IMG:style_emoticons/kolobok_light/smile.gif) Расчёты действительно немаленькие (расстояния, массивы через строковые операции, возведение в степень), но выглядит смешно даже для 2002го.

Завтра перепишу под sql, выкину часть алгоритмов наружу, на трёх O(n) надеюсь заработает и при 200 элементах.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
PaiNt
сообщение Oct 6 2012, 01:08
Сообщение #29


Level 8
***

Класс: Псионик
Характер: Chaotic Neutral
Раса: Хафлинг



Коль пошла такая пьянка, похвастаюсь и я идеями!
-НПС если находится рядом с плесаблами допускающими собирательство (куст Фенберри, грибы и т.д.) подходит к ним, ставит корзинку и собирает грибки!
-Если на пути НПС встречается какой-то из уличных светильников - он подходит и зажигает или тушит свет в них соответственно ночью и днем.
-Стражник, если рядом с ним "вскрывают" общественный контейнер начинает пристально наблюдать за вскрывающим (как в Леворе вообщемто)
-Если нпс бард - то он иногда может играть музыку, другие персонажи пока поисходит эта игра, проходя мимо могут остановится, сесть и послушать баладу.
-Если рядом с персонажем есть стул и официантка - то он может сесть и заказать какую-то еду, при этом официантка тоже участвует в этой анимации.

хотя конечно это все частные веселушки восновном.

Цитата(denis0k @ Oct 6 2012, 08:56) *
Забавно. Клёвый алгоритм сложности O(n^2) вызывает стопроцентный тми, хотя выполняется за полсекунды (IMG:style_emoticons/kolobok_light/smile.gif) Элементов немного (пока 60, по-хорошему надо 200+), но в скрипте парочка O(n) и один O(n^2) - вылетает на 20й итерации внешнего цикла последнего (IMG:style_emoticons/kolobok_light/smile.gif) Расчёты действительно немаленькие (расстояния, массивы через строковые операции, возведение в степень), но выглядит смешно даже для 2002го.

Завтра перепишу под sql, выкину часть алгоритмов наружу, на трёх O(n) надеюсь заработает и при 200 элементах.


в НВНХ еще нету конструкции подобной "Eval" или "Execute"? Расскажи как имено ты используешь SQL?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Anakondar
сообщение Oct 6 2012, 02:08
Сообщение #30


Level 6
**

Класс: Друид
Характер: Chaotic Neutral
Раса: Гном



Следующая итерация - заставляю воров нормально воровать, как у ПС так и у НПС. Хотя алгоритм прописал, пока воруют очень неохотно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение Oct 6 2012, 07:53
Сообщение #31


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Цитата
в НВНХ еще нету конструкции подобной "Eval" или "Execute"?
Нет. Зато есть плагин, увеличивающий лимит инструкций на скрипт или убирающий ограничение вовсе. На волте даже рекомендуют в 2-4 раза лимит поднимать (дефолт ~130к). Но не очень хочется его привлекать, т.к. сервер однопоточный до мозга костей и подобные скрипты будут его тупо тормозить. Если играл на старых серверах, то мб помнишь, как одновременный сейв 30+ чаров на винт вызывал лаги на пару секунд (IMG:style_emoticons/kolobok_light/smile.gif)

Раз уж так выходит, что в кап не влезаю, постараюсь скрипты упростить. Иначе в будущем может быть лагодром.
Цитата
Расскажи как имено ты используешь SQL?
В данном случае немалую нагрузку вызывают 2 вещи - массивы и поиск внутри них во вложенном цикле. Массивов в нвн нет, приходится делать через строку и извлечение/замену подстрок (IMG:style_emoticons/kolobok_light/smile.gif) Я хочу попробовать выкинуть массивы наружу (они и нужны только на расчёт пути, раз в полгода то есть) и заодно организовать поиск минимума внутри за счёт субд.

Если и это окажется слишком накладно (к примеру, по какой-то причине субд от нвн не сможет принимать десятки запросов в секунду, что для неё вроде как бы мелочь), придётся думать над отдельным плагином для нвнх, уж на с++ эти расчёты можно сделать как два пальца.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Flaristan
сообщение Oct 6 2012, 10:05
Сообщение #32


Тролль
****

Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Тварь



Цитата(Anakondar @ Oct 6 2012, 00:07) *
Пришлось после выбрасывания вешать на айтем локаль с результатом проверки на вес. Получается, после первого перегруза нпс заранее знают что сколько вокруг весит. Но в целом выглядит нормально, собиратели пустых бутылок занимаются бутылками, а на фулплейты не смотрят.
Перемудрил – зачем локалки вешать? Просто надо было добавить проверку вещи перед подъемом на массу: если масса содержимого инвентаря + масса обнаруженной на полу близлежащей вещи > максимальной переносимой массы == вещь не трогать, проверять n+1 ближайшую вещь, если она существует; иначе подобрать.
Только тогда проще сделать проверки на «нужность» вещей: если вещь на полу лучше того что одето на НПС – подобрать и надеть; если ее можно использовать (бутылки, свитки, палочки и т.д.) – подобрать и использовать в дальнейшем; если соотношение массы вещи и ее цены выгодное и НПС не перегружен – подобрать и сохранить; если вещь дешевая или НПС уже перегружен – подобрать и отнести выкинуть в ближайшую урну/продать торговцу и т.п..
Только все это ненужный перегруз модуля скриптами – если прям так уж хочется собирать с полу вещи, можно создать специальных неписей-сталкеров которые скажем в какую-то часть дня бродят по городу и подбирают всякий хлам, отправляя его сразу в свой магазин, который открывают для игрока осев на своей торговой точке другую часть дня. Или что-то вроде.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Anakondar
сообщение Oct 6 2012, 11:05
Сообщение #33


Level 6
**

Класс: Друид
Характер: Chaotic Neutral
Раса: Гном



Цитата(Flaristan @ Oct 6 2012, 11:05) *
Перемудрил – зачем локалки вешать? Просто надо было добавить проверку вещи перед подъемом на массу: если масса содержимого инвентаря + масса обнаруженной на полу близлежащей вещи > максимальной переносимой массы == вещь не трогать, проверять n+1 ближайшую вещь, если она существует; иначе подобрать.
Только тогда проще сделать проверки на «нужность» вещей: если вещь на полу лучше того что одето на НПС – подобрать и надеть; если ее можно использовать (бутылки, свитки, палочки и т.д.) – подобрать и использовать в дальнейшем; если соотношение массы вещи и ее цены выгодное и НПС не перегружен – подобрать и сохранить; если вещь дешевая или НПС уже перегружен – подобрать и отнести выкинуть в ближайшую урну/продать торговцу и т.п..
Только все это ненужный перегруз модуля скриптами – если прям так уж хочется собирать с полу вещи, можно создать специальных неписей-сталкеров которые скажем в какую-то часть дня бродят по городу и подбирают всякий хлам, отправляя его сразу в свой магазин, который открывают для игрока осев на своей торговой точке другую часть дня. Или что-то вроде.


Смысл локалок в том, что НПС не знают изначально массу вещи, поэтому подходят и смотрят каждую и либо подбирают, либо вешают локалку.
Учти ещё, что у них не бывает перегруза и GetWeight на них всегда возвращает 0.
А про магазин - это хорошая идея.

И да, воровство всё-таки работает. Просто у меня был детект маленький и я пероятность захотеть воровать поставил пропорционально скилу. На ночь оставил перса в городе. Утром - инвентарь пустой, даже денег нет. Проверил под ДМом - всё у воров.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
PaiNt
сообщение Oct 6 2012, 14:38
Сообщение #34


Level 8
***

Класс: Псионик
Характер: Chaotic Neutral
Раса: Хафлинг



Цитата(denis0k @ Oct 6 2012, 15:53) *
Нет. Зато есть плагин, увеличивающий лимит инструкций на скрипт или убирающий ограничение вовсе. На волте даже рекомендуют в 2-4 раза лимит поднимать (дефолт ~130к). Но не очень хочется его привлекать, т.к. сервер однопоточный до мозга костей и подобные скрипты будут его тупо тормозить. Если играл на старых серверах, то мб помнишь, как одновременный сейв 30+ чаров на винт вызывал лаги на пару секунд (IMG:style_emoticons/kolobok_light/smile.gif)

Раз уж так выходит, что в кап не влезаю, постараюсь скрипты упростить. Иначе в будущем может быть лагодром.
В данном случае немалую нагрузку вызывают 2 вещи - массивы и поиск внутри них во вложенном цикле. Массивов в нвн нет, приходится делать через строку и извлечение/замену подстрок (IMG:style_emoticons/kolobok_light/smile.gif) Я хочу попробовать выкинуть массивы наружу (они и нужны только на расчёт пути, раз в полгода то есть) и заодно организовать поиск минимума внутри за счёт субд.

Если и это окажется слишком накладно (к примеру, по какой-то причине субд от нвн не сможет принимать десятки запросов в секунду, что для неё вроде как бы мелочь), придётся думать над отдельным плагином для нвнх, уж на с++ эти расчёты можно сделать как два пальца.

Да я чето тоже сомневаюсь что мускул будет выдавать операции над кучей данных быстро..хотя конечно строкомасивы - тоже не выход..

З.Ы. не подскажешь как этот плагин по лимиту инструкций называется? .. тоже как-то столкнулся с нехваткой когда приходилось анализировать 500 заклинаний и выбирать из них списки по критериям(IMG:style_emoticons/kolobok_light/sad.gif) , думаю для этой задачи можно было чтонибуть улучшить (IMG:style_emoticons/kolobok_light/smile.gif) .

Сообщение отредактировал PaiNt - Oct 6 2012, 14:42
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Oct 6 2012, 15:43
Сообщение #35


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



NWNX System
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение Oct 6 2012, 17:13
Сообщение #36


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



А я просто поискал по "tmi" на волте и взял первое попавшееся среди свежего (IMG:style_emoticons/kolobok_light/smile.gif) Там в названии тми есть.
Цитата
Да я чето тоже сомневаюсь что мускул будет выдавать операции над кучей данных быстро..
Это как бы его профиль (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение Oct 6 2012, 20:04
Сообщение #37


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Цитата
Забавно. Клёвый алгоритм сложности O(n^2) вызывает стопроцентный тми, хотя выполняется за полсекунды Элементов немного (пока 60, по-хорошему надо 200+), но в скрипте парочка O(n) и один O(n^2) - вылетает на 20й итерации внешнего цикла последнего Расчёты действительно немаленькие (расстояния, массивы через строковые операции, возведение в степень), но выглядит смешно даже для 2002го.

Завтра перепишу под sql, выкину часть алгоритмов наружу, на трёх O(n) надеюсь заработает и при 200 элементах.


Это ты что такое там считаешь? - баллистическую траекторию 50 НПС в стратосфере? (IMG:style_emoticons/kolobok_light/smile.gif)

Сообщение отредактировал Melisse - Oct 6 2012, 20:04
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Anakondar
сообщение Oct 6 2012, 21:08
Сообщение #38


Level 6
**

Класс: Друид
Характер: Chaotic Neutral
Раса: Гном



Как с контейнерами быть? НПС замечают их, подходят, осматривают и открывают. Действие ActionTakeItem не выполняют. Пришлось на контейнеры на OnOpen вешать скрипт на проверку
Код
       object oUser = GetLastOpenedBy();
       if (GetIsObjectValid(oUser)
            &&!GetIsPC(oUser)
            &&!GetIsPossessedFamiliar(oUser)
            &&!GetIsDM(oUser)
            &&!GetIsDMPossessed(oUser)) {копировать айтемы себе в инвентарь; удалить старые;}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение Oct 6 2012, 23:02
Сообщение #39


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Melisse:
Алгоритм Дейкстры для поиска кратчайшего пути по дереву вейпоинтов. При реализации на простых линейных массивах там именно два больших вложенных цикла. Это можно оптимизировать, но нужные структуры данных в нвн просто не сделать (двоичные кучи, фибоначчиевы кучи и т.п.).

Не желая рубить с плеча, я перекинул все "массивы" в мускл (заменив 4 массива одной таблицей) и переложил на него же функцию поиска минимального значения по заданным условиям. Результат - никаких тми, скрипт выполняется за 150мс. Для единичного запуска (для каждого нпс раз в несколько игровых часов) это немного.

Потестирую эту систему на бОльшем количестве точек и мб перепишу на нвнх без мускла, будет ещё быстрее. Сейчас у меня 2 внешних локации и 1 внутренняя, 63 вейпоинта с 1-6 связями. В городе обычно 2-3 связи, в таверне - паутина из точек (IMG:style_emoticons/kolobok_light/smile.gif)

Зачем это нужно? Представь город из 10+ локаций. Берём непися, ставим где угодно и указываем идти куда угодно, хоть через 10 локаций. И он пойдёт (IMG:style_emoticons/kolobok_light/smile.gif) Причём не лбом в стену, а по дорогам, как все нормальные люди. Причём по кратчайшему пути. Нужны лишь вейпоинты, олицетворяющие сеть дорог, и скрипт.

Anakondar:
Давай всю техническую фигню унесём в соответствующие топики? (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Anakondar
сообщение Oct 6 2012, 23:12
Сообщение #40


Level 6
**

Класс: Друид
Характер: Chaotic Neutral
Раса: Гном



denis0k: Главное, чтоб ответ появился, а где - не важно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение Oct 6 2012, 23:48
Сообщение #41


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Цитата
Не желая рубить с плеча, я перекинул все "массивы" в мускл (заменив 4 массива одной таблицей) и переложил на него же функцию поиска минимального значения по заданным условиям. Результат - никаких тми, скрипт выполняется за 150мс. Для единичного запуска (для каждого нпс раз в несколько игровых часов) это немного.

MySQL и такое умеет?
Я не совсем понимаю... эти страшные названия алгоритмов и куч, ибо у мня образование другой направленности, но мне интересно. (IMG:style_emoticons/kolobok_light/smile.gif)
Тебе мускл сразу возвращает все необходимые данные одним запросом, сам поискав - и так для каждого НПС, но запуск всех спавнов при старте модуля = одновременный запрос n-го числа НПС, он справляется?

Сообщение отредактировал Melisse - Oct 6 2012, 23:49
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
PaiNt
сообщение Oct 7 2012, 01:46
Сообщение #42


Level 8
***

Класс: Псионик
Характер: Chaotic Neutral
Раса: Хафлинг



Цитата(Melisse @ Oct 7 2012, 07:48) *
MySQL и такое умеет?
Я не совсем понимаю... эти страшные названия алгоритмов и куч, ибо у мня образование другой направленности, но мне интересно. (IMG:style_emoticons/kolobok_light/smile.gif)
Тебе мускл сразу возвращает все необходимые данные одним запросом, сам поискав - и так для каждого НПС, но запуск всех спавнов при старте модуля = одновременный запрос n-го числа НПС, он справляется?

там наверное такое извращение многоэтажное получается в запросе (IMG:style_emoticons/kolobok_light/smile.gif) . еще поди фильтровать запросы для безопасности.
Почему бы стразу не писать плагин, он же всяко будет быстрее работать, мне кажется, чем связка НВН-НВНХ-MySQL-сервер :?

Сообщение отредактировал PaiNt - Oct 7 2012, 01:47
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Oct 7 2012, 03:02
Сообщение #43


Level 17
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Плагин писать сложнее и дольше.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение Oct 7 2012, 06:38
Сообщение #44


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Цитата
Тебе мускл сразу возвращает все необходимые данные одним запросом, сам поискав
При расчёте минимума по заданному условию - да. Обычный селект может на лету сортировать результат, причём делает это явно оптимально. В отличие от массива через строку, где приходится проверить все элементы.
Цитата
и так для каждого НПС, но запуск всех спавнов при старте модуля = одновременный запрос n-го числа НПС
Вряд ли одновременный, он последовательный (IMG:style_emoticons/kolobok_light/smile.gif) Тем более какая разница, что там раз в 10 часов модуль грузит, они же не в реальном времени в бою это делают.
Цитата
он справляется
Ну справляется же контакт, когда миллион задротов жмёт лайки (IMG:style_emoticons/kolobok_light/smile.gif) Субд очень шустрые, мои 100 запросов в цикле - фигня полная.
Цитата
Почему бы стразу не писать плагин, он же всяко будет быстрее работать, мне кажется, чем связка НВН-НВНХ-MySQL-сервер :?
Во-первых, скачать студию на новый комп - уже дольше, чем переписать под sql (IMG:style_emoticons/kolobok_light/smile.gif) Во-вторых, оптимизационные моменты решаются потом. На старте важно вообще что-то сделать и быстро. Без фанатизма конечно, пути для оптимизации быть должны, но делать её на этапе проектирования - напрасный труд.

Идеального нет ничего, можно один этот поиск пути переписывать год. Но это неинтересно (суть-то системы в другом) и бессмысленное - ускорение даже втрое относительно текущего значения ничего не даст (IMG:style_emoticons/kolobok_light/smile.gif) Это происходит реально редко - пусть считается лишь раз, но даже если нпс будет непрерывно ходить туда-сюда по модулю, всё равно время его ходьбы многократно больше времени расчёта.

Сообщение отредактировал denis0k - Oct 7 2012, 06:49
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение Oct 7 2012, 09:18
Сообщение #45


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



А как решается проблема хербита в локация, где нет игрока - он там либо отрубается,либо запускается с большими задержками. Помнится, нпс заходят в дом и все - пока туда не пришел игрок, он не выйдет.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

6 страниц V  < 1 2 3 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 7th July 2025 - 17:11