Ниже показан пример игрового кода без использования многопоточности:

void main()
{
while(true)
{
PaintScreen();
UpdateAI();
}
}

А теперь напишем тот же код с использованием многопоточности: void main()
{
CreateThread(NULL,0,UpdateAI,NULL, 0, &dThreadID);
while(true)
{
PaintScreen();
}
}

DWORD WINAPI UpdateAI(LPVOID lpParam)
{
//поместите сюда что-либо, сильно нагружающее процессор;
//и пусть данный объект обновляется по мере необходимости
}

На одном процессоре преимущества многопоточности не так заметны, поскольку в один момент времени может выполняться лишь один поток. "Тогда ОС должна отвечать за переключение между AI и заполнением экрана", считает Вордбелл. "Единственная проблема заключается в том, что диспетчер Windows не славится оптимизацией для многопоточных мультимедиа приложений".

Однако при включении технологии HT, Windows XP распознает физический процессор как два логических, и ОС должна более эффективно работать с несколькими процессорами, по сравнению с переключением потоков на одном процессоре, утверждает Вордбелл. Конечный результат заключается в том, что фоновый поток AI и заполнение экрана работают более гладко. Время выполнения задания может быть теоретически уменьшено на 25%. "При этом вы убиваете двух зайцев: ваша игра работает плавно, и немного быстрее", сказал Вордбелл.

Galactic Civilizations и HT

По словам Вордбелла, преимущество HT в Galactic Civilization налицо: в фоне работает поток компьютерного AI, в то время как человек делает свой ход. "Когда вы делаете свой ход, GalCiv прекрасно работает даже на довольно слабой машине".

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

Вордбелл отметил еще одно преимущество, которое HT дает в GalCiv: в ситуации, когда игра загружается в первый раз и в фоне грузится игровая графика. "Вы заметите, что во время просмотра заставки к вашему жесткому диску идет множество обращений. На слабой машине по этой причине заставка будет дергаться, поскольку игре придется переключаться между демонстрацией видео и загрузкой графики в фоне. Но на компьютере с HT все прекрасно и гладко работает".

Умные собиратели ягод

Благодаря усложнению потоков, компьютерные игроки, которыми эти потоки управляют, станут более самостоятельными и умными, что в свою очередь привнесет дополнительные элементы реализма в ход игры. С точки зрения программирования, добавление или улучшение работы с потоками не сложно, утверждает Вордбелл. Но разработчики колеблются, поскольку сложно добавить несколько потоков без потери производительности в виде кадров в секунду, хотя технология HT должна уменьшить риск падение производительности.

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

"Вы остаетесь? Да что вы творите! Убегайте". С большим количеством потоков ваши крестьяне смогут осмотреться и сказать "пришли плохие парни, пытающиеся нас убить, поэтому давайте разбежимся".


HT может сделать ваших любимых персонажей более самостоятельными, посмотрите на эту сцену в "The Sims".
 

Copyright @ by Lehach, 2009