PMG

Форумы по созданию игр
Текущее время: 19 мар 2024 10:45

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Smoke от Intel
СообщениеДобавлено: 03 июн 2010 00:24 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 26 фев 2010 13:18
Сообщения: 85
Наткнулся на интересные статьи от Intel:
Основы разработки многопоточных игровых приложений - http://software.intel.com/ru-ru/articles/threading-basics-for-games/
Проектируем архитектуру параллельного игрового движка - http://software.intel.com/ru-ru/articles/designing-the-framework-of-a-parallel-game-engine/
Статьи интересные и полезные.
Тут же есть ссылки на их движок Smoke, и есть ссылки на скачку исходников движка.
Smoke - http://software.intel.com/ru-ru/articles/smoke-game-technology-demo/
Исходники - http://software.intel.com/ru-ru/articles/smoke-game-technology-demo-download/

Кто-нибудь смотрел их? Тестил?
Что можете сказать, стоит ли вообще пытатся разбираться? или только трата времени и сил?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Smoke от Intel
СообщениеДобавлено: 04 июн 2010 09:04 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Ой, не знаю, много раз читал. Но так и ничего не понял. Всегда использовал многопоточность, когда для однотипных наборов данных можно реализовать код, который будет обрабатывать эти данные независимо в разных потоках. Это как кирпичи на разных стенах класть. Но если класть их параллельно через метр, можно столкнуться с проблемой не стыковки.

Цитата:
Однако, вместо того, чтобы каждая система обращалась к общим данным, например, за координатами положения или ориентации объекта, каждой системе следует предоставить свою копию данных. Это устранит взаимную зависимость разных частей движка от данных. Уведомления об изменениях, внесенных какой-либо частью в общие данные, передаются менеджеру состояний (State Manager), который помещает все изменения в очередь – это называется режимом обмена сообщениями (messaging). После того, как разные системы завершили свой очередной цикл выполнения, они обрабатывают сообщения от менеджера состояний, в соответствие с которыми обновляют свои внутренние структуры данных. Использование подобного механизма позволяет значительно сократить накладные затраты на синхронизацию, обеспечивая независимую работу систем.


Мне кажется, может быть ситуация "бутылочного горла" когда затраты на обработку State Manager будут выше, чем плюсы от многопоточной обработки.

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

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Smoke от Intel
СообщениеДобавлено: 04 июн 2010 09:30 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 26 фев 2010 13:18
Сообщения: 85
Я думаю организовать параллельную работу можно так:
Потоки - данные - действия:

1. Физика - данные о физической модели объекта и положении хранятся отдельно - вычисление физики
2. AI - данные свои расположения - расчет путей
3. Сеть - данные берём только вводные - выполняет опрос, данные сохраняем
...

В результате всё эти данные применяются к объектам, перемножаясь или складывая.
Что в принципе проводит лишь к единственному изменению положения объекта в пространстве.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Smoke от Intel
СообщениеДобавлено: 04 июн 2010 11:02 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Сначала человек думает, потом идет. Так и здесь, сначал AI, потом передвижение в пространстве, потом физика.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Smoke от Intel
СообщениеДобавлено: 04 июн 2010 11:37 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 26 фев 2010 13:18
Сообщения: 85
В данном случае я описал не порядок действий, а потоки...
Как применятся они потом к объекту, в какой последовательности, это происходит в "результате".
В потоках рассчитывается, на какие значения должны произойти изменения объекта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Smoke от Intel
СообщениеДобавлено: 04 июн 2010 13:19 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
На каждый объект свой поток?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Smoke от Intel
СообщениеДобавлено: 04 июн 2010 13:45 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 26 фев 2010 13:18
Сообщения: 85
В потоках выполняются математические расчеты (каждая часть движка в своём потоке).
Конечно, вариантов организации могут быть разный, но вот такой можно представить вариант:

есть у нас два NPC, два ящика, и два игрока (один управляется через сеть).
Начинается главный цикл.
Первый поток рассчитывает AI, куда пойдёт и как (расчёт кратчайшего пути). Это поток управляет только NPC, его действиями.
Второй поток проверяет сеть. Есть новые команды - сохраняем их ( идти влево).
Третий поток ввод с клавиатуры для другого игрока. Есть команды - сохраняем.
Четвертый поток физика - расчёты производятся для ящиков (то есть для объектов), которые управляются только воздействиями.Здесь же и расчёты по физике RagBoll можно добавить.
Пятый поток - может включать окружающую среду, динамическую погоду я имею ввиду.

Физика для игроков может рассчитываться либо в их же потоке. Тут уже всё зависит от организации всего этого дела.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Smoke от Intel
СообщениеДобавлено: 04 июн 2010 16:43 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
2 и 3 поток как правило всегда асихронный ввод и вывод. Но в любом случае вначале цикла игры забираются команды пользователя и потом относительного этого и производиться расчет. Я не понимаю как можно организовать ввод команд пользователя уже где-то в районе рендеринга.

Только после получения команд пользователя и команд от AI можно рассчитать физику и куда попадут те или иные объекты, а потом уже рендеринг.

Можно делать рендеринг и расчет мира в независимых потоках, если формировать очередь на рендеринг и передавать ее в поток рендеринга. Т.е. делать расчет независимо от рендеринга, в определенное время формировать очередь на рендеринг и отдавать ее в поток рендеринга.

Физика и AI влияют на перемещение и ориентацию объектов, мне кажется будет невозможно делать их в разных потоках независимо. Если только выделять непересекающиеся области пространства и в них отдельным потоком все вычислять.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Smoke от Intel
СообщениеДобавлено: 04 июн 2010 18:36 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 26 фев 2010 13:18
Сообщения: 85
Ну с примером я немного погорячился.
Но сам принцип использования потоков то необходим, если хочется увеличить скорость работы, для этого и есть потоки :)

А организация всего этого - это множество вариантов...
Сколько людей, столько и идей ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Smoke от Intel
СообщениеДобавлено: 04 июн 2010 19:11 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Согласен. Надо пробывать, пытаться, может что и получиться

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Smoke от Intel
СообщениеДобавлено: 27 июл 2010 18:15 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 10 июн 2008 01:04
Сообщения: 45
Откуда: Москва
Да, я тоже не сразу понял че они там понаписали, но на 6-ой раз все же разобрался :D На самом деле идея очень хорошая, + дается уже и реализация.

_________________
No commentaries...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB