Вчера прошёл “нулевой” день конференции, в рамках которого были проведены мастер-классы по различным тематикам. Впрочем, не будем повторяться – просто прочитайте наш репортаж.
Выступление Геннадия Ригера из ATi.
В начале КРИ прошла пресс-конференция, где, помимо вчерашних участников (Дмитрия Ильина от Intel и Александра Фёдорова от оргкомитета КРИ), выступил также Геннадий Ригер из ATi, который отметил высокий научно-технологический потенциал России и бывших республик СССР. Левши на Руси не перевелись. Отрадно видеть, что Россия и сопредельные страны не только выходят на правый фланг, но и начинают вести игровую индустрию такими играми, как S.T.A.L.K.E.R. ATi продолжит поддерживать разработчиков в России, и компании приятно видеть новаторские идеи. Будучи лидером в области графики, в самом динамичном секторе КТ, ATi нравится сотрудничать с местными разработчиками и “толкать” технологии дальше.
Высказались также и представители компаний-издателей (золотых спонсоров), они отметили важность КРИ на игровом рынке.
Милая девушка из “1С” угощала всех посетителей Конференции пивом (пить разрешалось только внутри стенда “1С”).
Общение на Конференции идёт полным ходом: Кранк и Гоблин ведут деловую беседу
1С на выставке
Широко известная не только геймерской, но и бухгалтерской части пользователей ПК компания “1С” является золотым спонсором Конференции уже второй год. С чем же связан такой интерес “1C” к разработчикам игр? Алексей Артёменко, один из представителей “1С” на КРИ, отметил по этому поводу, что компания является крупнейшим российским издателем игровых продуктов, и в силу этого “1С” очень интересно единственное в России мероприятие подобного рода. Компания прилагает все усилия, чтобы помочь организатором, дабы мероприятие получилось достойным индустрии. “1С” надеется, что КРИ займёт свою нишу в ряду других мировых мероприятий подобного плана. Ну, а Россия примечательна, прежде всего, тем, что здесь много талантливых людей, готовых разрабатывать хорошие игры.
Перейдём непосредственно к проектам, которые “1С” показывала на КРИ.
“В тылу врага”
“В тылу врага” – одна из грядущих супер-убойных игр. Она представляет собой тактику в реальном времени на тему Второй мировой войны с большим элементом экшин. В игре будут представлены 4 компании, причём одна из них нестандартная – в ней вам предстоит играть роль известного немецкого танкиста, который в годы Второй мировой был подбит в глубоком тылу Советского Союза и тайными тропами пробирался к немцам. В общем, перед нами – взрывная смесь Diablo и Battlefield 1942.
Народ рубится в “Периметр”. Мы уже подробно писали вчера об этой игре, и даже проверяли её на поддержку Hyper-Threading.
Восхождение на Трон – а-ля Heroes of Might and Magic в полном 3D.
“Паркан 2” – продолжение известной игры, созданное вместе с компанией “Никита”.
“You are empty” – 3D-action про коммунистов-мутантов.
Также отметим демонстрацию следующих игр: “Вивисектор” – шутер по мотивам романа Уэллса “Остров доктора Моро”, “Звёздные волки” – космическая ролевая игра, “Бригада E5” – тактика в чистом виде типа Jagged Alliance (с массой оружия – для крутых пацанов), “Космические рейнджеры 2”, “Механоиды” и “Карибский кризис”.
Hyper-Threading в играх
Семинар Максима Перминова (Intel) был посвящён использованию технологии Hyper-Threading в играх. Сначала Максим пояснил причины не слишком широкого использования технологии Hyper-Threading в играх на сегодня:
- Программисты игр пока не слишком знакомы с тем, как использовать несколько процессоров – в отличие от программистов серверных приложений, которые этим пользуются давно и на высоком уровне.
- Сложный традиционный дизайн игры – очень много зависимостей в ветвях кода, что препятствует распараллеливанию.
Почему же программистам игр нужно думать о внедрении в движок многопоточности?
Во-первых, при этом они получат дополнительные 10-15-20 процентов в играх за счёт Hyper-Threading – хорошее средство выделиться. Во-вторых, парк машин, поддерживающих многопроцессорность (или Hyper-Threading), будет увеличиваться. В-третьих, многопоточные игры лучше масштабируются, что увеличивает срок жизни продукта. К тому же, навыки параллельного программирования окажутся полезными на многих платформах – включая приставки.
Существуют и технические причины актуальности многопоточности:
- Параллелизм – будущее микропроцессорных архитектур. Причём, здесь можно говорить не только о многопроцессорных машинах и процессорах с Hyper-Threading, но и о многоядерных чипах. Отметим, что многопоточное игровое приложение может осуществлять полезную работу, не ожидая видеокарту, что сказывается на скорости.
- Дизайн многопоточного движка – дело непростое, но если всё получится, то этот движок будет достаточно гибким для чего угодно – в него можно будет легко вводить другие функции.
На данном этапе понятно, что внедрение параллелизма в игры – вещь полезная. Но с чего начать? Собственно, стратегии две. Первая – параллелизм задач, при этом одновременно рекомендуется обрабатывать слабосвязанные задачи. При этом лучше сделать так, чтобы задачи потоков были разными. Скажем, один поток использует плавающую арифметику, а другой – целочисленные данные.
Вторая стратегия заключается в использовании параллелизма данных – одновременно следует обрабатывать несвязанные области данных. Делите данные на части и обрабатывайте каждую часть в своём потоке. Используя параллельность данных можно разделить данные мира на две независимые части и запустить задачу обновления подмножества мира в разных потоках.
Скажем, можно обновлять данные и рисовать мир параллельно. То есть один поток рисует мир для времени t, и в это время происходит просчёт данных для момента времени t+1. Конечно, модель идеальная, и на самом деле не всё так просто – но есть и успешные примеры реализации.
В качестве примеров были представлены три игры, причём рассказывали о них непосредственно сами разработчики. Поскольку об одном примере, игре “Периметр”, мы уже рассказывали в предыдущем репортаже, то здесь мы рассмотрим два других.
Игра “Вивисектор”
Разработчик игры “Вивисектор” Алексей Тугаенко рассказал о разбиении своей игры на два потока. Причём на втором потоке было решено заниматься физикой. Тому было три причины:
- Физика независима от рендера. То есть физика может работать, а рендер в то же время будет выводить готовое состояние.
- Физика занимает на пиках (в зависимости от физических объектов) – до 20-30% процессорного времени. Почему на пиках – просто если объекты не движутся, то они в игре “засыпают”, и их физика не обрабатывается.
- Высокая степень независимости физики – её легко выделить из основного потока и, таким образом, избежать коллизии данных.
Первая решённая разработчиками проблема – коллизия данных. Причём с этим справились за пару дней – смотрели, какие переменные какие значения хранят, и решали проблемы по ходу:
Вторая проблема – 64К алиасинг. Нужно избегать циклов, в которых идёт использование данных, которые разнесены за рамки 64 кбайт. Здесь можно использовать для отладки VTune – довольно удобно.
При наличии HT или более 1 процессора при запуске игры создаётся поток, в котором, в зависимости от состояния консольной команды, будет работать физика. А из основного потока она убирается. В итоге получился прирост до 20% – в среднем 10%. На демонстрации игры без HT наблюдалось 24-25 кадров. С включением – 26-27 кадров.
Кстати, на реальных двух процессорах или на том же Prescott выигрыш от многопоточности выше.
Игра “Вивисектор” с включённым Hyper-Threading. В левом нижнем углу – значение FRAPS.
Parkan 2
Разработчик игры Parkan 2 Владимир Летяго также рассказал, что в его движке физика будет вынесена во второй поток просчёта. Стоит отметить, что если на обсчёт физики в Parkan 2 уделить слишком мало времени, то объект может пролететь сквозь стену, что понятным образом скажется на геймплее, а если времени будет отведено слишком много, то его потребление общего процессорного времени станет чрезмерным, и в итоге игра будет, элементарно, заметно более ресурсоемкой.
В итоге, со слов разработчиков Parkan 2, прирост от использования Hyper-Threading при переносе физики во второй поток составил 20%. В дальнейшем планируется перевести на второй поток AI и подгружение уровней. Владимир показал демонстрацию, в рамках которой была создана искусственная коллизия: на экране постоянно сталкивались пять объектов, что давало 20 fps. При переносе всей физики в первый поток частота кадров упала до 5 fps. Но этот пример, конечно, экстремальный.
Владимир демонстрирует экстремальный пример: пять сталкивающихся объектов в Parkan 2.