Войти
ПрограммированиеФорумИгровая логика и ИИ

Машина состояний (комментарии) (2 стр)

Страницы: 1 2 3 Следующая »
#15
18:17, 15 сен. 2014

Volodar
> Как раз нет. Посылая только одно-два события, происходит довольно сложное
> управление.
> Конечно, с ящиком пример довольно прост. Для того и привел более сложный пример
> с пушкой. Она получает только два сообщения - capture, release target. Пушка
> уже сама разруливает, как ей отреагировать на события.
>
> К примеру есть главный класс, управляющий пушками и врагами (жанр Tower
> Defense):
>
> GameBoard::update(float dt)
> {
> for( auto tower : towers )
> {
> target = find_target_for_tower( tower );
> if( target ) tower->dispatch_event( capture, target );
> if( !target ) tower->dispatch_event( release, target );
> tower->update( dt );
> }
> }
>
> Пушка уже может в этот момент стрелять, перезаряжаться, улучшаться, вести
> подготовку к бою и т.д. GameBoard не знает обо всем этом и ему это не мешает.

GameBoard::update(float dt)
{
    for( auto tower : towers )
    {
        target = find_target_for_tower( tower );
        if( target ) tower->capture( target );
        if( !target ) tower-> release( target );
        tower->update( dt );
    }
}

Этот код сделает тоже самое но без Event.
Event не нужен.


#16
18:29, 15 сен. 2014

codesnip
Хорошо, хорошо. Я ни чего не навязываю :)

#17
0:10, 16 сен. 2014

codesnip, в принципе это как сравнивать подходы к обработке событий в дроиде и в винде. Куча разных методов, каждый под свое событие у дроида vs единственная оконная процедура со свитчем под разные события у винды. Попробуй доказать что какой то  из этих способов имеет офигительные преимущества перед другим.

#18
19:36, 21 сен. 2014

Volodar
Мне понравилась эта машина состояний, создается впечатление, что машина живая и сама решает как ей исполнять приказы :) Раньше не слышал о ней, буду использовать.

#19
9:40, 24 сен. 2014

Посмотри на реализацию Stateless в C#. Это библиотека опенсорсная.

#20
17:03, 24 сен. 2014

А меня смущает эта часть...

for( auto tower : towers )
    {
        target = find_target_for_tower( tower );
...
Сейчас вот сам думаю над мозгами для ботов и получается точно такая-же конструкция на апдейте. На десятке другом, оно конечно отработает, а что делать если их сотня и каждый из них должен не только одну цель видеть, а вообще знать об окружающих его сущностях. имхо, не уложится данная конструкция  в заданный фпс и как жить после этого? Если оффтоп - прошу прощения, просто как раз моя проблема обрисовалась

#21
17:11, 24 сен. 2014

unregistered
Все влезет в фпс. Да и построив грамотно проверку на "подходящая цель" можно обойти множество проверок.
Если в рамках все того же товер дефенс, то есть множество критериев по которым цель подходит для пушки. Проверяются в порядке увеличения сложности. Большинство отсеиваются на первой-второй проверках.
Но надо смотреть по месту. Если уперся в фпс в этом месте, то да, надо думать как лучше.

GLoom
Мельком глянул, очень много кода. Возможно библиотека того стоит.

#22
17:12, 24 сен. 2014

unregistered
> а что делать если их сотня и каждый из них должен не только одну цель видеть, а
> вообще знать об окружающих его сущностях
- добавить состояние tracking[target_cnt] ?
- find_target_for_tower( tower ); - сюда добавить эвристику, для "умного" выбора целей?
- распустить for(...)  на нити?

#23
17:29, 24 сен. 2014

exchg
первое и второе конечно да, а чем спасут потоки на каждую сущность если они будут синхронизированы с основным потоком в одном апдейте ведь там и отрисовка и логика?

#24
17:37, 24 сен. 2014

unregistered
Так, "имхо" не уложится или точно не уложится? Если настолько сложный механизм обновления окружающих сущностей, то надо ли их обновлять каждый апдейт всех ботов? Или достаточно обновлять местами? В текущий апдейт первуч часть, во второй апдейт вторую часть и.д.?

#25
17:38, 24 сен. 2014

unregistered
> а чем спасут потоки на каждую сущность если они будут синхронизированы с
> основным потоком в одном апдейте ведь там и отрисовка и логика?
в таком контексте, может и не спасут, я говорил в общем. ))

#26
17:40, 24 сен. 2014

Volodar
пока "имхо" )) просто стараюсь чуть заглянуть наперед. ведь и девайсы разные и хотелки меняются в день по 10 раз и хочется чтоб алгоритм не зависел от таких вещей. вот и пытаюсь какие-то варианты подыскивать

#27
17:42, 24 сен. 2014

exchg
а в каком спасут? :) хочу делать правильно! ))

#28
17:56, 24 сен. 2014

unregistered
> а в каком спасут? :) хочу делать правильно! ))
очевидно спасут, если реализация обсчета целей, или что там еще, хорошо паралелится, при этом является довольно ресурсоемкой.

#29
18:15, 24 сен. 2014

unregistered
какие причины для имхо? Сколько примерно ботов и объектов для них? Как сильно связаны и что делают боты?

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумИгровая логика и ИИ

Тема в архиве.