Ru-MaNGOS

Вернуться   Ru-MaNGOS > Флуд > Флудильня

Важная информация

Флудильня Разговоры на любые темы.

Мы устаем постоянно работать. Иногда надо где-то немного отдохнуть. Пожалуйста, не надо здесь устраивать бардак.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.08.2011, 11:57   #1
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию Spawn system [нужен совет]

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

у меня возникла дилема. как спаун-поинт должен отслеживать свои объекты. пока все попередохнут и тогда он перейдет в режим corpse-period и затем в prespawn-period и затем спаунятся опять всей толпой; или умер один - пошло время трупа и респавна, умер второй - у него тоже все свое. и респаунятся они независимо.

вопрос.
RomanRom2 вне форума   Ответить с цитированием
Старый 12.08.2011, 12:08   #2
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

(мечтательно) ну уж совсем качественно - сделать курсор с подсчетом ссылок на объект "спаунпойнт", к нему линковать все заспавненные объекты и считать когда на них ссылки пропадут... методика - Джефф Элджер, C++ for Real Programmers. но это малореально...
rsa вне форума   Ответить с цитированием
Старый 12.08.2011, 12:34   #3
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
вот мои спаун-поинты умеют спавнить разные объекты по шаблонам. умеют спавнить несколько шаблонов одновременно - так называемый stack объектов. например спаунится отряд гуардов. или два мурлока, один из которых воин, второй маг. суть стековых мобов в том, что они работают в группе. нападаешь на одного, вся толпа агрится. ну вы знаете...

у меня возникла дилема. как спаун-поинт должен отслеживать свои объекты. пока все попередохнут и тогда он перейдет в режим corpse-period и затем в prespawn-period и затем спаунятся опять всей толпой; или умер один - пошло время трупа и респавна, умер второй - у него тоже все свое. и респаунятся они независимо.

вопрос.
Существуют разные варианты, например бывают такие паки (особенно в инстах) где если хоть 1 не убил - после вайпа рейда респавнится весь пак моментально. А есть такие которые независимо респавнятся.

Так что думаю есть смысл реализовать оба варианта.
Йоха вне форума   Ответить с цитированием
Старый 12.08.2011, 12:56   #4
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
(мечтательно) ну уж совсем качественно - сделать курсор с подсчетом ссылок на объект "спаунпойнт", к нему линковать все заспавненные объекты и считать когда на них ссылки пропадут... методика - Джефф Элджер, C++ for Real Programmers. но это малореально...
у меня так сейчас и сделано. при спавне я создаю список "своих" объектов. в классе TSpawn, ну у спаун-поинта. когда моб дохнет, метод юнита OnKill удаляет себя из этого списка, точнее дергает метод у спаун-поинта. метод спаун-поинта OnDelObject помимо очистки списка проверяет, не кончился ли этот список. если кончился запускает соответствующие процессы.

вопрос не в этом. если ждать пока весь пак сдохнет, то вышесказанная реализация достаточна. если каждый из объектов должен доспавниваться до полного пака, то следовательно нужно в этом списке TSpawn.SpawnedObjects[] нужно хранить не только ссылки на объекты, а какие то миниобъекты, которые содержат в себе не только ссылки, но и таймеры. как минимум. счетчики может какие нить прикрутить, хз. как то так.

просто делать так, что бы объект сам следил за своим респауном - это неправильно. и смысла фичи "stack of spawn objects" пропадает. правильно что бы спаун-поинт за этим всем следил.

там еще проблема будет с ГО, как их чекать. вот спавнятся у меня сейчас гуард, три волка и сундук со сказками. мобы то умерли, с ними понятно все. сказки я прочитал, сундук удалился из мира... наверное нужно тоже удалять из списка... ну ладно, получается вроде...
RomanRom2 вне форума   Ответить с цитированием
Старый 12.08.2011, 13:44   #5
Deamon
WowCore Dev
 
Регистрация: 11.03.2010
Сообщений: 112
Сказал(а) спасибо: 10
Поблагодарили 51 раз(а) в 25 сообщениях
Deamon Скоро придёт к известности
По умолчанию

А я помню канонический пример QuelDanas'а. Один раз с одного спауна я подряд убил 3-х проклятых эльфов. Т.е. тот эльф, которого я убил первым, жил настолько долго, что время респауна у спауна успело натикать на 2 раза. Поэтому после убийства первого эльфа, моментально появился второй, причем труп первого не пропал. А после убийства второго моментально заспаунился третий.

Такая петрушка. Кроме того в инстах паки мобов спаунятся не просто так. Близзы могут задавать правила, например, что в паке 8-ми мобов не может быть более чем 2 мага и 1 лекарь и т.д.
Deamon вне форума   Ответить с цитированием
Старый 12.08.2011, 13:59   #6
Mayss
Ученый
 
Аватар для Mayss
 
Регистрация: 08.03.2010
Адрес: Россия, Сибирь, Новокузнецк
Сообщений: 137
Сказал(а) спасибо: 194
Поблагодарили 19 раз(а) в 13 сообщениях
Mayss На лучшее можно только надеяться...
Отправить сообщение для Mayss с помощью Skype™
По умолчанию

Делая дейлик на офе в хиджале на 4.2.0, убивал големов огненных, которые спавнелись друг за другом, и таких было 3 штуки подряд с периодичностью в 1-3 сек потом перестали... видимо таймер пашел, в одном и том же месте, наверно один спавн.
Mayss вне форума   Ответить с цитированием
Старый 12.08.2011, 15:14   #7
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
вот мои спаун-поинты умеют спавнить разные объекты по шаблонам. умеют спавнить несколько шаблонов одновременно - так называемый stack объектов. например спаунится отряд гуардов. или два мурлока, один из которых воин, второй маг. суть стековых мобов в том, что они работают в группе. нападаешь на одного, вся толпа агрится. ну вы знаете...

у меня возникла дилема. как спаун-поинт должен отслеживать свои объекты. пока все попередохнут и тогда он перейдет в режим corpse-period и затем в prespawn-period и затем спаунятся опять всей толпой; или умер один - пошло время трупа и респавна, умер второй - у него тоже все свое. и респаунятся они независимо.

вопрос.
Cкачайте варкрафт 3 Frozen Throne компания "Основание дуротара" от Близзарда. Там есть примеры такого спауна по группам, и подсчет определенных типов юнитов в триггерах. Так как эта компания уже сделана была в период World Of Warcraft и система довольно даже похожа.
MaxXx2021 вне форума   Ответить с цитированием
Старый 12.08.2011, 15:24   #8
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

спасибо за мнения.
мне интересны всевозможные сценарии. систему я спроектирую, это не проблема. проблема будет потом что то докручивать, поэтому интересуюсь этим сейчас. вспоминаем, не стесняемся
RomanRom2 вне форума   Ответить с цитированием
Старый 12.08.2011, 15:44   #9
YuruY
YTDB Dev
 
Аватар для YuruY
 
Регистрация: 01.02.2010
Сообщений: 288
Сказал(а) спасибо: 125
Поблагодарили 97 раз(а) в 53 сообщениях
YuruY Скоро придёт к известностиYuruY Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Mayss Посмотреть сообщение
Делая дейлик на офе в хиджале на 4.2.0, убивал големов огненных, которые спавнелись друг за другом, и таких было 3 штуки подряд с периодичностью в 1-3 сек потом перестали... видимо таймер пашел, в одном и том же месте, наверно один спавн.
А ты посмотри в это время вокруг себя, в этот момент в небольшом радиусе несколько человек их-же бьет/за ними охотится. Я выполняя квест на пауков набил 8 штук по квесту всего на двух точках спавна (те которые по змле бегают, а не на скалах сидят), добивая одного ресался второй, за ним первый и т.д, я даже не сошел с места и не отвернулся в сторону, обе точки были почти рядом, в среднем мне на кил этого паука нужно 3-6 секунд, вот считай частоту их реса (а бывает бегаешь по всей платформе и ищеш живых, вокруг одни труппы и ресаются редко ... и народу в тот момент выполняющих этот квест единицы, но за живыми пауками в драку))).
__________________
http://ytdb.ru/
http://svn2.assembla.com/svn/ytdbase/
YuruY вне форума   Ответить с цитированием
Старый 12.08.2011, 16:31   #10
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

в общем пока нет устойчивости в классах, решил попробовать сделать один главный TMultiSpawn, который порождает список TSingleSpawn. синг рождает объект и следит за его жизнью, сообщает обо всем мульти. на мульти работают сценарии, которые управляют синглами: ну типа в отряд всех собрать, сагриться толпой или нет, проверки на

Цитата:
Сообщение от Deamon Посмотреть сообщение
Кроме того в инстах паки мобов спаунятся не просто так. Близзы могут задавать правила, например, что в паке 8-ми мобов не может быть более чем 2 мага и 1 лекарь и т.д.
но вообще это сейчас у меня задается спаун-темплейтом. в этом темплейте собственно список этих лекарей, магов и воинов в нужном количестве. каких насуешь, тот темплейт мультиспаун и скреатит.

вообще я вот пишу все это и сам вспоминаю квесты, когда нужно пойти прибить какого нить гоблина. а он там стоит в лагере возле костра. а вместе с ним еще 2-3 его другана-соратника. тронешь кого - агрится вся толпа. но с этим понятно всё. бывают, они тебя забивают, но и ты грохнуть успеваешь. так набегами с кладбища и добиваешь их. но то, что они там каждый респавнится сам по себе - вспоминаю, да.
RomanRom2 вне форума   Ответить с цитированием
Старый 13.08.2011, 12:50   #11
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

за вчерашний вечер и за ночь сделал HLD наброски для своей новой SmartSpawn (с) (r) (tm) системы. вот что получается:

Вводные понятия.

Спаун - абстрактный объект, который управляет созданием и уничтожением игрового объекта.
Спавн - процесс создания игрового объекта.

Общая механика.

Спаун-точка характеризуется позицией на карте, списком указателей на отспавненные объекты и списком спаун-шаблонов. Спаун-точка может иметь один или несколько спаун-шаблонов.

Спаун-шаблон содержит в себе информацию, активный ли данный спаун-шаблон и список указателей (ID) на объектные шаблоны. Только активные спаун-шаблоны учавствуют в ротации шаблонов спаун-точки. неактивные могут быть вызваны дополнительно по требованию активных.

Шаблон объекта содержит в себе информацию непосредственно по типу объекта (юнит, го) и его апдейтполям. Может быть принудительно задана позиция спавна. Если не задана, то спавн производится в позиции спаун-точки. Содержит время респавна и продолжительность нахождения трупа. Так же содержит максимальное расстояние, на которое может отстраниться объект от позиции спавна (эта позиция может не совпадать с позицией спаун-точки). Содержит идентификатор группы, в которую может входить объект и выполнять групповые действия. Содержит указатели на шаблоны других объектов, которые могут быть вызваны при изменении уровня здоровья данного объекта. рассматриваются значения 75%, 50%, 25%, 10% и 0. Подобно этому содержит указатели на другие идентификаторы групп, объекты которых могут быть призваны на помощь и т.п. Так же содержит счетчик, по завершению которого данный объектный шаблон перестает спавнится и помечается как законченный. Содержит указатель на шаблон команд.

После того как все указатели на объектные шаблоны будут помечены как законченные, спаун-точка производит ротацию спаун-шаблонов и и создание объектов согласно новому спаун-шаблону.

Все объекты респавнятся независимо и согласно правилам, заданным в объектном шаблоне. Это продолжительность существования трупа, продолжительность респавна (пауза перед спавном), счетчик респавна.

---

Блок-схема взаимодействий и связей классов.


---

Транзакции.


---

Тестовые сценарии и способы их реализации:

1. Установить вендора.
Нужно создать спаун-точку, в ней один активный спаун-шаблон, в котором указать на объектный шаблон вендора. В шаблоне вендора счетчик респавна сделать 0 - это означает, что респавн будет повторяться бесконечно и спаун-шаблон никогда не закончит свой жизненный цикл. В таком случае спаун-точка никогда не сможет переключиться на следующий спаун-шаблон. Но по условию он у нас один и этого достаточно по условию поставленной задачи.

2. Поставить два мурлока, одного воина, другого мага. Если один из мобов получает урон, то второй аггрится вместе с первым одновременно.
Создать спаун, создать активный спаун-шаблон, в нем указать два шаблона мурлоков (для воина и для мага). Вписать обоим объектным шаблонам TeamID например 1, не важно, главное что бы одинаково. Счетчик респавна в 0.

3. Сделать так, что бы один и тот же моб мог появляться в одной из трех локаций и только в одной из них в один момент времени.
Создать спаун в любой из локаций. Создать три активных спаун-шаблона, в каждом их них указать шаблон этого моба. Таких объектных шаблонов понадобится тоже три, т.к. в каждом из них нужно указать позицию спавна - по одной на каждую локацию. Счетчик респавна всем трем шаблонам выставить в 1. Убив одного моба в одной локации спаун-точка выберет новый спаун-шаблон, т.к. счетчик респавна установлен в 1. Это значит что нужно убить данный объект только 1 раз. Далее, новый спаун-шаблон с другим объектным шаблоном, объект которого будет отспавнен уже в другой локации.

4. Во время сражения с боссом время от времени приходили ему на помощь его братья меньшие.
Создать необходимые шаблоны для босса, в объектном шаблоне босса в полях OnHealth75_Spawn, OnHealth50_Spawn и OnHealth25_Spawn указать спаун-шаблоны, в которых может быть указано несколько шаблонов объектов тех самых братьев меньших в каждом. Например на 75% от жизни ониксии спавнятся 3 маленьких птички-дракончика, на 50% спавнятся еще 4 птички-дракончика, а на 25% спавнится еще один какой нибудь мини-босс.

5. Что бы после убийства босса спавнился его дух.
Создать необходимые шаблоны для босса, в объектном шаблоне босса в поле OnHealth0_Spawn указать спаун-шаблон, в котором указать объектный шаблон его духа.

6. Кобольд, праздношатающийся вокруг своего спауна.
Создать необходимые шаблоны. В объектном шаблоне указать счетчик респавна в 0. Указать командный шаблон, в котором две команды: 1 - идти на рандомную точку; 2 - пауза в рандомном диапазоне; далее команды повторяются.

7. Вендор, ходящий из одной локации в другую.
Создать все необходимые шаблоны. Указать командный шаблон, в котором нагеренить команды walkTo(x,y)

8. Аниматор любого типа, например дровосек.
Создать все необходимые шаблоны. Указать командный шаблон, в котором указан список необходимых команд.

9. Спаун объектов по касту какого либо спелла.
Не придумал как... вероятно нужно в объектном шаблоне держать информацию RequiredSpellID. И в спеллэффекте этого спелла делать скан области на предмет спаун-точек и стартовать ее, если она будет найдена.

10. Спаун объектов по вхождению в зону.
Не придумал как... сканировать спаун-точки как сканируются объекты по ячейкам Unit.OnSetPosition не очень хочется, т.к. это двойная и почти бесполезная работа. Точнее неэффективная - трудозатраты большие, а эффективная цель всего лишь найти спаун с зональным триггером.

сценарии больше не лезут в голову в 4 утра. какие еще могут быть?

в дополнение попробую описать вышеобозначенные вами сценарии:

Цитата:
Существуют разные варианты, например бывают такие паки (особенно в инстах) где если хоть 1 не убил - после вайпа рейда респавнится весь пак моментально. А есть такие которые независимо респавнятся.
независимый респавн пака реализован.
вайп рейда - это AI, логика DungeonServer, там своя специфика. если в кратце, то каждому рейду своя копия Мира. вайп рейда - это reset этой копии, что приводит к респавну всего и вся. т.е. это логика сервера, а не спаунсистемы.

Цитата:
Поэтому после убийства первого эльфа, моментально появился второй, причем труп первого не пропал. А после убийства второго моментально заспаунился третий.
это можно реализовать через триггеры OnHealth0_Spawn

Цитата:
Кроме того в инстах паки мобов спаунятся не просто так. Близзы могут задавать правила, например, что в паке 8-ми мобов не может быть более чем 2 мага и 1 лекарь и т.д.
это управляется через спаун-шаблоны. в шаблоне можно указать необходимое количество магов, лекарей и т.д., см TestCase 2.

Цитата:
Делая дейлик на офе в хиджале на 4.2.0, убивал големов огненных, которые спавнелись друг за другом, и таких было 3 штуки подряд с периодичностью в 1-3 сек потом перестали... видимо таймер пашел, в одном и том же месте, наверно один спавн.
такое тоже можно сделать следующим образом:
нужно создать спаун-шаблон, в котором один объектный шаблон - огненный голем. в этом объектном шаблоне нужно указать на триггер OnHealth0_Spawn другой спаун шаблон с другим големом с малым временем респавна. у второго тоже самое на третий. у третьего ничего не указывать. тогда достигается вышеописанный эффект: нужно убить трех големов подряд, что бы пошло длительное время респавна. после третьего убитого голема жизненный цикл спаун-шаблона закончится и будет запущен следующий. или тот же, если спаун-шаблон всего один.

Последний раз редактировалось RomanRom2; 13.08.2011 в 13:16.
RomanRom2 вне форума   Ответить с цитированием
Старый 14.08.2011, 00:57   #12
Minimajack
Гость
 
Сообщений: n/a
По умолчанию

не нравится шаблон команд...точнее не понятно - то ли это FSM( AI ), то ли мувгенератор...как бы одно другому не мешало и что будет управлять состояниями?
  Ответить с цитированием
Старый 14.08.2011, 04:08   #13
Minimajack
Гость
 
Сообщений: n/a
По умолчанию

  Ответить с цитированием
Старый 14.08.2011, 12:07   #14
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

не знаю что такое мувгенератор...
FSM однозначно. мне не нравились квестовые скрипты в wowemu. я спросил однажды вада, вад, зачем все это. это же можно сделать легко и просто. на что он мне ответил, что это все не просто так. да, скрипты это тормоза и не нужно это. но посмотри, сказал он, как заняты люди написанием скриптов. это же лемминги! это же чудесно

всю квестовую систему я легко реализовал на FSM. никаких дополнительных табличных данных не требует, только квестовые респонсы.

что касается командного шаблона - это просто набор команд. не важно каких: идти/бежать на точку; начать рубить лес; положить в руку дрова; что то сказать или проявить эмоцию; кастануть спелл. каждое действие имеет время исполнения. командный процессор запускает команду из списка и ждет ее выполнения. затем запускает следующую. и так далее. команда, кстати, может и не выполниться - моба могли прервать или он сам решил саггриться. после того, как прерывание закончилось, моб завершит команду. но это делает уже сам моб с его АИ. командный процессор только лишь запускает команды и ждет когда они исполнятся. команд может быть много да, но это сильно развязывает руки
RomanRom2 вне форума   Ответить с цитированием
Старый 14.08.2011, 13:40   #15
Minimajack
Гость
 
Сообщений: n/a
По умолчанию

"мувментгенератор"
А как же хранить граф? Сложно понять...
можно привести пример состояний для простенького квеста "убить, насобирать предмет и вернуться" ?
  Ответить с цитированием
Старый 14.08.2011, 18:29   #16
BloodWarrior
Ученый
 
Аватар для BloodWarrior
 
Регистрация: 08.05.2010
Адрес: Новокузнецк
Сообщений: 141
Сказал(а) спасибо: 32
Поблагодарили 21 раз(а) в 9 сообщениях
BloodWarrior На верном пути
По умолчанию

Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
мне не нравились квестовые скрипты в wowemu. я спросил однажды вада, вад, зачем все это. это же можно сделать легко и просто. на что он мне ответил, что это все не просто так. да, скрипты это тормоза и не нужно это. но посмотри, сказал он, как заняты люди написанием скриптов. это же лемминги! это же чудесно
Да Вад был извращенцем тем еще)))
Чего стоил только его выбор языка к скриптовочке.
Тикл и по ныне наряду с тем-же ObjC или М4 до сих пор считается языком для небыдла)
__________________
MZero - z1686 SDZero - z0354 - 17.05.2011
BloodWarrior вне форума   Ответить с цитированием
Старый 14.08.2011, 21:41   #17
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

Цитата:
Сообщение от Minimajack Посмотреть сообщение
"мувментгенератор"
типы: преследование, убегание, заданное( точка-точка, по пути), рандом движение
понятно. в командах у меня именно командные действия, т.е. заданные точки. типа "иди/беги туда то". но...

Цитата:
Сообщение от Minimajack Посмотреть сообщение
я подумал, что у вас только FSM...если FSM+AI...тогда совсем по другому смотрится идея, EventAI - только более расширенный.[/OFF]
да. просто это немного разные абстрактные уровни. команды направляют, юнит выполняет. но пока выполняет, может отвлечься. и преследовать, убегать, нападать и т.п. это уже АИ самого моба и оно принимает такие решения. просто я размышлял так, что командные действия (анимацию, флешмоб и т.п.) не должен выполнять сам моб. точнее как бы сказать то... "придумывать их". т.е. это не АИ моба, что ли... это некое АИ некоего внешнего сценария. а не моба. можно конечно делать типизированные АИ и аттачить их на энтри кричера, но мне показалось это через чур затратным. АИ именно моба - это другое.


Цитата:
Сообщение от Minimajack Посмотреть сообщение
А как же хранить граф? Сложно понять...
можно привести пример состояний для простенького квеста "убить, насобирать предмет и вернуться" ?
да все очень просто.


друзья, все же прошу по теме. я понимаю, быть может не просто переварить то что я наговорил, но это и не обязательно. я лишь прошу нестандартных сценариев спавна, которые вы видели.
RomanRom2 вне форума   Ответить с цитированием
Старый 15.08.2011, 09:02   #18
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

RomanRom2,
Цитата:
за вчерашний вечер и за ночь сделал HLD наброски для своей новой SmartSpawn (с) (r) (tm) системы. вот что получается:

Вводные понятия.

Спаун - абстрактный объект, который управляет созданием и уничтожением игрового объекта.
Спавн - процесс создания игрового объекта.

Общая механика.

Спаун-точка характеризуется позицией на карте, списком указателей на отспавненные объекты и списком спаун-шаблонов. Спаун-точка может иметь один или несколько спаун-шаблонов.

Спаун-шаблон содержит в себе информацию, активный ли данный спаун-шаблон и список указателей (ID) на объектные шаблоны. Только активные спаун-шаблоны учавствуют в ротации шаблонов спаун-точки. неактивные могут быть вызваны дополнительно по требованию активных.

Шаблон объекта содержит в себе информацию непосредственно по типу объекта (юнит, го) и его апдейтполям. Может быть принудительно задана позиция спавна. Если не задана, то спавн производится в позиции спаун-точки. Содержит время респавна и продолжительность нахождения трупа. Так же содержит максимальное расстояние, на которое может отстраниться объект от позиции спавна (эта позиция может не совпадать с позицией спаун-точки). Содержит идентификатор группы, в которую может входить объект и выполнять групповые действия. Содержит указатели на шаблоны других объектов, которые могут быть вызваны при изменении уровня здоровья данного объекта. рассматриваются значения 75%, 50%, 25%, 10% и 0. Подобно этому содержит указатели на другие идентификаторы групп, объекты которых могут быть призваны на помощь и т.п. Так же содержит счетчик, по завершению которого данный объектный шаблон перестает спавнится и помечается как законченный. Содержит указатель на шаблон команд.

После того как все указатели на объектные шаблоны будут помечены как законченные, спаун-точка производит ротацию спаун-шаблонов и и создание объектов согласно новому спаун-шаблону.

Все объекты респавнятся независимо и согласно правилам, заданным в объектном шаблоне. Это продолжительность существования трупа, продолжительность респавна (пауза перед спавном), счетчик респавна.
Года два назад поднималась тема офлайк-спавнов Я предлагал структуру на 90% сходную с этой вашей
Цитата:
Цитата:
Делая дейлик на офе в хиджале на 4.2.0, убивал големов огненных, которые спавнелись друг за другом, и таких было 3 штуки подряд с периодичностью в 1-3 сек потом перестали... видимо таймер пашел, в одном и том же месте, наверно один спавн.
такое тоже можно сделать следующим образом:
нужно создать спаун-шаблон, в котором один объектный шаблон - огненный голем. в этом объектном шаблоне нужно указать на триггер OnHealth0_Spawn другой спаун шаблон с другим големом с малым временем респавна. у второго тоже самое на третий. у третьего ничего не указывать. тогда достигается вышеописанный эффект: нужно убить трех големов подряд, что бы пошло длительное время респавна. после третьего убитого голема жизненный цикл спаун-шаблона закончится и будет запущен следующий. или тот же, если спаун-шаблон всего один.
Боюсь, тут вы не совсем так поняли...
Перечитайте сообщение Юрия: http://ru-mangos.ru/showpost.php?p=24679&postcount=9
KiriX вне форума   Ответить с цитированием
Старый 15.08.2011, 09:27   #19
Fedia22
Ученый
 
Аватар для Fedia22
 
Регистрация: 03.03.2010
Адрес: Сибирь, 58°14′00″ с. ш. 92°29′00″ в. д.
Сообщений: 288
Сказал(а) спасибо: 79
Поблагодарили 37 раз(а) в 14 сообщениях
Записей в дневнике: 18
Fedia22 На верном пути
По умолчанию

не, всё так понял я подтвержаю сей факт ибо часто дела дейлики в норде на 85 (а таких людей на пальцах посчитать можно) спокойно валишь и респятся почти сразу же после кила 2-3 моба, потом запускается тайм( так что халявы как таковой мало бывает но всё таки бывает...
Fedia22 вне форума   Ответить с цитированием
Старый 15.08.2011, 12:07   #20
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

Цитата:
Сообщение от KiriX Посмотреть сообщение
RomanRom2,
Года два назад поднималась тема офлайк-спавнов Я предлагал структуру на 90% сходную с этой вашей
ну эту систему я реализовал более чем четыре года назад
сейчас система по сути немного доработана на событийные эффекты.
наверное мы двигаемся в правильном направлении

Цитата:
Сообщение от KiriX Посмотреть сообщение
Боюсь, тут вы не совсем так поняли...
Перечитайте сообщение Юрия: http://ru-mangos.ru/showpost.php?p=24679&postcount=9
возможно, но в данном случае одно другому не мешает. можно сделать и такой эффект тоже

ЗЫ. SmartSpawn реализована. я еще немного доработал списки спаун-шаблонов и убрал ограничение количества объектов в одном шаблоне - потребовалось завести еще одну таблицу. попробую снять видео с клиента, показать визуализацию спаун объектов. они есть, такие же как у вада, если кто помнит - стоит маленьких мальчик Во

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

еще я хотел показать как важно планирование и документирование. благодаря хорошему и понятному документу реализация заняла полтора дня, ну хорошо, два. провожу массовые тесты
RomanRom2 вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Маленьки совет... origammi Новичкам 1 28.07.2011 20:18
[11161] Implement Map copy local grid spawn data support. newsbot CMaNGOS Commits 0 14.02.2011 10:10
[11045] Rewrite internals of DB layer. Simplify code and use less locking. Spawn and use separate co newsbot CMaNGOS Commits 22 22.01.2011 10:02
[10832] Spawn pool at aura 63471 dispel in water. newsbot CMaNGOS Commits 0 07.12.2010 04:51
[10089] Change in event system work with pool system. newsbot CMaNGOS Commits 0 21.06.2010 05:22


Текущее время: 19:24. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot