Показаны сообщения с ярлыком gamedev. Показать все сообщения
Показаны сообщения с ярлыком gamedev. Показать все сообщения

понедельник, июня 29, 2015

Фрагментация памяти в C++ приложениях

Поскольку памятью в С++ приложении программист управляет самостоятельно, то и за фрагментацией памяти приходится следить самим. Память фрагментируется, если приложение работает достаточно долго и при этом активно работает с памятью. Не такая редкая проблема. Я это видела в играх, игрок бегает, юнитов убивает, локации меняет, надо под это память выделять и потом освобождать. И в высоконагруженных системах, запросы приходят, надо под них память выделять, потом освобождать.

Чем это плохо? Во-первых, память может внезапно закончиться. Во-вторых может просесть производительность. Вот тут можно почитать историю как это выглядит на практике: Out of memory

Вот тут с картинками написано как оно происходит: Holier Than Thou
Но не написано - а что с этим делать-то? Итак, с чем я работала.

Region-based memory management. Выделяем память большим куском, например, под уровень в игре.  Популярный термин для такого куска - "арена". Потом уже внутри этого куска создаем нужные нам объекты. Когда все это стало не нужно - весь кусок памяти освобождаем. Заодно с утечками памяти проблем меньше.
Арену можно использовать вместе с STL, см. "STL custom allocators".


Boost.Pool. Там есть несколько разных интерфейсов, я использовала object_pool, который помогает эффективнее создавать и удалять большое количество сравнительно маленьких объектов.

Также я видела разное креативное использование placement new, как правило его можно заменить Boost.Pool'ом.

понедельник, июня 11, 2012

Обзор исходников Doom3

Некоторое время назад исходники Doom3 были выложены в открытый доступ. Но в исходниках без доков разбираться довольно тяжело. Так вот, Фабьен Санглар написал по ним обзор со схемами, картинками, видео. Также он позадавал вопросы Кармаку по исходникам. Если вы мечтаете писать игры, но не знаете с чего начать, то Фабьен сделал вам прекрасный подарок.

Несколько фактов оттуда:

  • Впервые в истории id Software код написан на С++, а не на С
  • В коде широко используются абстракция данных и полиморфизм
  • Темплейты используются только для низкоуровневого кода
  • По мнению Фабьена это вторая по качеству кодобаза от id Software после Doom iPhone
  • Благодаря инкапсуляции код легко читать
  • Дни оптимизации ассемблерного кода на низком уровне прошли
Бонус: Кармак рассказывает о своих экспериментах с очками виртуальной реальности и о проблемах с задержкой отрисовки. Carmack Being Carmack: A Dozen Minutes With One of Video Game’s Smartest People

среда, апреля 04, 2012

First 48 Skate 3 videos

Проблемы с коллизиями и ragdoll'ами в игре Skate 3.




via Jim

суббота, декабря 17, 2011

Интервью с Корринной Ю

Women in Gaming: Halo's Corrinne Yu. Корринна работает в Microsoft Game Studios, занимается архитектурой движка Halo. Интервью просто про жизнь, про программирование там маловато.

среда, ноября 23, 2011

Опубликованы исходники Doom 3

Помните, Кармак обещал опубликовать исходники Doom 3 после выхода Rage? Он свое слово держит: Doom 3 GPL source release

/*
===========================================================================

Doom 3 GPL Source Code
Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.


Это только исходники, без данных. Данные можно взять из самой игры.

Из-за юридических проблем ему пришлось убрать оттуда кусок кода, известный как Carmack's Reverse.

Должно компиляться под Win32, Linux и MacOS.

Написано на С++, но это скорее похоже на С с классами - голые указатели, сишные массивы.

Как это обычно бывает, не все доведено до идеального состояния.

qglDisableClientState( GL_NORMAL_ARRAY );
qglDisable( GL_FRAGMENT_PROGRAM_ARB );
qglDisable( GL_VERTEX_PROGRAM_ARB );
// Fixme: Hack to get around an apparent bug in ATI drivers. Should remove as soon as it gets fixed.
qglBindProgramARB( GL_VERTEX_PROGRAM_ARB, 0 );


Как видно из кода, для отрисовки используется OpenGL. Почему-то в readme написано, что нужен DirectX. Непонятно. DirectX нужен для DirectInput.

Подменив данные и слегка поменяв код можно написать 3D-шутер своей мечты :-).

суббота, ноября 05, 2011

Статья The Designer's Notebook: Passion Versus Professionalism

The Designer's Notebook: Passion Versus Professionalism - статья про то, что игровой индустрии нужны скорее профессионалы, нежели энтузиасты. Но вообще там много интересного написано, что подойдет к любой индустрии.

I would much rather hire someone with professionalism than passion. Professionalism is dedication to doing a great job even if you're not the target audience.


Спасибо анонимному комментатору, который дал в комментариях ссылку на русский перевод статьи: Увлечённость или профессионализм?

via voldmar

пятница, августа 12, 2011

Выступление Джона Кармака на QuakeCon 2011

Джон Кармак как обычно выступал на QuakeCon, вот видеозапись его выступления.


Расшифровку я не нашла, похоже ее пока нет.
Для тех, кто не готов слушать его полтора часа, коротенький пересказ:
Много говорил про мегатекстурирование в Rage и вообще про Rage. Как Rage получился ему нравится.
Говорил про статический анализ кода, говорит, что это вещь и надо им пользоваться. Хвалил майкрософтовский статический анализатор кода и вообще: "Microsoft Research has a lot of really smart people and they do a lot of work covering a lot of different areas."
Этот анализатор идет в комплекте с тулзами под XBOX 360, поэтому "если вы разрабатываете под 360 и не используете статический анализ, то вы совершаете ошибку.
Также упомянул PVS-studio.
Иногда ему хочется перейти на функциональные языки программирования. На Haskell, например. Но он считает, что тут будут проблемы с прозводительностью, а также с обучением и наймом людей. Поэтому остаемся с С и С++.
Ему 40 лет, ему нравится программировать и у него отлично получается. Лучше чем когда бы то ни было. (Тут сразу вспоминаются мифы про то, что программировать после 30 невозможно.)

Ну и самое главное - Код Doom 3 будет открыт в этом году. (!)

Вопросы и ответы после его выступления:


Ссылки по теме:
Твиттер Кармака
Rage и Tech5
Выступление Джона Кармака на QuakeCon 2008
Перевод выступления Кармака на Quakecon 2004

вторник, декабря 21, 2010

Книга Exploiting Online Games

Книга Exploiting Online Games попала ко мне в руки случайно. Я ее прочитала, она мне не понравилась, давайте расскажу почему.

Первые четыре(!) главы книги посвящены пространным размышлениям о том, что хачить нехорошо, а также рассказам о софтверных лицензиях. Читателям, дожившим до пятой главы, дается скупая и щедро разбавленная водой информация, которая как-то относится к теме книги. Также присутствует много отсылок к другим книгам тех же авторов.
Анализа и систематизации информации нет. Причем в большинстве случаев они говорят о WoW, книгу надо было назвать "Как наверное можно похачить WoW".
Эта одна из тех редких книг, из которых мне не удалось узнать вообще ничего нового. Что там есть вообще: у нас есть клиент, он обменивается данными с сервером. Теоретически, можно влезть в клиента, там есть интересная информация о состоянии мира. Можно слать на сервер свои данные. Можно написать бота. По большому счету это все содержимое книги.
Видимо, чтобы книга была толще, туда добавлена базовая информация по языку ассемблера и про DLL injection.

Совершенно непонятно для кого это все написано. Для читера она бесполезна, потому что там нет примеров типа "мы сделали то-то и то-то, получили такой-то результат". Читателю просто бросается какая-то мысль или кусок кода и... всё. Это порождает кучу вопросов. Чего дальше-то было? Оно заработало вообще? Что сказал Warden? Как быстро был закрыт аккаунт?

Для разработчика она бесполезна, потому что разработчик и так знает, что на клиенте много информации и что ее можно вытащить. И что читеры существуют и что ловить их по-одному - дурацкое занятие. Разработчику нужно вообще другое. Мне бы было интересно почитать о паттернах, по которым читеров можно распознать по статистике. Ведь если у одного игрока морковка начинает всходить вдвое быстрее, чем у всех остальных, это же видно хорошо... О реальных нетривиальных случаях читерства, о том, как с ними боролись. О статистике по читам. Что пытаются делать чаще, от чего потери больше.
О том, что вообще с этим делать. Как бороться с читерами, избегая таких сомнительных решений как Warden? Ведь Warden, будем откровенны, это же явное spyware. Как бороться так, чтобы ни в коем случае не обидеть честных игроков? Как держать читеров под контролем?
Как распознать бота? Если у нас игрок уже 24 часа бьет куриц, 1exp за курицу, как понять кто это - бот или усердный корейский студент? Может вывести ему сообщение "Курицы дарят вам 1000exp и просят оставить их в покое" с кнопками "Принять" и "Не принимать" и посмотреть за реакцией?
Большинство проблем происходит из-за того, что приходится доверять клиенту, ведь часть информации хранится на клиенте. Как снизить доверие к клиенту? Можно ли убрать оттуда часть информации? А всю можно? Проводились ли исследования в этой области? Возможны ли решения типа OnLive, когда игроку выдается только видеопоток?

Наверное, все это можно узнать где-нибудь на закрытых секциях GDC, в этой книге ничего такого нет.

Ссылки по теме:
Слайды, в которых есть много информации из этой книги

понедельник, декабря 13, 2010

Я хочу программировать игры! Что мне делать?

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

Итак, для начала нам надо понять, как именно происходит разработка игр. И познакомиться с общей ситуацией в индустрии...

-Алёна, давай ближе к делу! Лесом ситуацию в индустрии, программить уже давай!

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

-Я поставил себе Visual C++ 2010? Я все правильно сделал?


Если вы работаетет с Windows, то да, лучше Visual C++ и лучше версию поновее. Про разработку игр под Линукс я не в курсе...

-DirectX или OpenGL?


Это зависит... На Windows в основном используется DirectX. Но это вовсе не значит, что OpenGL никому не нужен. На консолях встречаются графические API, сильно похожие на OpenGL, ну и под Линуксом никакого DirectX нет.

-Так все-таки, DirectX или OpenGL?

Ставьте DirectX. :-)
Только DirectDraw смотреть не нужно, им никто не пользуется.
В DirectX есть очень хорошие хелпы и примеры, не игнорируйте их.

-У меня ничего не работает, ничего не компиляется!

Вы не одиноки. Поищите ваши ошибки Гуглом, наверняка найдете таких же несчастных.

Но будьте готовы к тому, что вы не найдете материалы, где бы вас провели за руку от начала и до конца.

-Да ну, там все по-английски...

Надо учить английский. На русский переведено мало и для работы этого недостаточно.
Как обычно, Google is your friend. Вот что выдает нам поиск по запросу game programming lectures.
Game Programming 2007
CSE 191: Video Game Programming Seminar
Обзор книг по программированию игр я делала здесь. И вот еще открытые исходники игр.

-Правда, что все игры разрабоатываются на С++?


Игры разрабатываются не только на С++. Активно используются также:
Python, Lua - Для скриптования игровых движков. Также для скриптования могут использоваться языки, специфичные для данного движка. Например, UnrealScript.
C# - утилиты. Очень любим, потому что С++ программистам с ним легко разобраться.
C#, Java - серверная часть MMO.
Java - используется на мобильных платформах
HLSL - используется для программирования шейдеров

Знание С++ не то чтобы обязательно, но он в разработке игр используется очень активно и с ним жизнь упрощается.

-Что такое игровой движок? У меня уже есть DirectX. Это что, не движок?

DirectX работает на уровне "нарисовать треугольник". Игровой движок поднимает вас на уровень выше, здесь будут "объект с трехмерной моделью и поведением", "вода" и т.п.

Игровые движки бывают разные. Например, может быть только графический движок, но без физики. Вы тогда можете писать физику сами или подключить какой-нибудь движок физики. Также отдельно может идти AI движок.

Вам не обязательно нужен движок. Для небольшой игры разделение на движок-скриптование зачастую не имеет смысла. Если хочется поменьше разбираться как оно внутри устроено, а хочется чтобы уже была игра, имеет смысл поработать с готовыми бесплатными движками. Также имеет смысл посмотреть их код. Ну и исходники игр.

Примеры бесплатных движков:
OGRE (Altren в комментариях настаивает, что в OGRE только графика и ничего другого там искать не надо), Irrlicht - игровые движки, графика там в основном, насколько я помню
ODE - движок физики

Игра - это не только DirectX, не только графика. Если вас интересует устройство на работу в качестве разработчика игр, то посмотрите вакансии игровых контор, посмотрите чего они хотят и вам станет понятнее чего учить (Epic games, id Software).

Вот примеры специализаций игровых программистов, с описанием чего надо знать по каждой специализации. Это роли могут различаться, всё-таки всё сильно зависит от конкретной платформы и компании.

Graphics programmer - программист графики. Здесь нужно знание математики (векторы, матрицы, кватернионы). Понимание того, как работают видеокарты, шейдеры.
Physics programmer - программист физики. Нужны довольно специфичные знания физики, ну и математика тоже.
AI programmer - программист искусственного интеллекта. Алгоритмы на графах (A*, Дийкстра), конечные автоматы...
Gameplay programmer, game mechanics programmers - программист игровой механики. Эта роль вызывает больше всего непонимания. Это те программисты, которые пишут в игре всё остальное. Изменение параметров при попадании одного юнита в другого, отображение этого всего в интерфейсе, подгрузка следующего уровня. Куча вот таких мелочей.
Interface programmer - разработчик интерфейсов.
Network programmer - сетевой программист. Нужны стандартные знания по разработке сетевого кода.
Tools Programmer - разработчик утилит. При разработке игры используют дополнительные программы, которые иногда пишутся самостоятельно, иногда покупаются вместе с движком. Пример игровой утилиты - редактор уровней.

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

Для начала не пытайтесь написать игру с нуля. Модифицируйте чужой код, пишите моды.

Потом напишите небольшую игру от начала и до конца. Графику либо нарисуйте тестовую, либо найдете в интернете, есть сайты где модели раздаются бесплатно под некоммерческие проекты.

-Да, у меня есть отличная идея MMORPG!


Возьмите любую MMORPG, откройте кредитсы и посмотрите на список людей, которые работали над этим проектом. Далеко не все они страдали там фигней, уверяю вас. Разработка MMORPG - многомиллионный проект с количеством людей, несколько больше одного.Для начала напишите паззл небольшой, напишите арканоид.

-Алён, ты что, шутишь?

ОК, пусть это будет RPG, без MMO. Один, маленький уровень, как можно меньше деталей. Попробуйте получить минимальную играбельную версию.

-Алёна, у меня еще куча вопросов!


Постараюсь ответить. Но не могу обещать, что отвечу на все :-).
Ахинею про то, о чем не знаю, писать не буду. Спрашивайте в комментариях.

Ссылки по теме:
AIGameDev
Вопросы по программированию ИИ в играх

среда, декабря 08, 2010

Выложили записи моих докладов с ADD-2010

Организаторы потихоньку выкладывают записи докладов с ADD-2010, мои уже выложили.

Первый доклад, Искусственный интеллект в играх
Про нечестные приемы, про поиск пути и навигацию.

218-Games-AI-add-2010.avi from Stas Fomin on Vimeo.


Материалы, которые я использовала для подготовки к докладу:
It's not fun if you fake it. Rigged gameplay mechanics are starting to piss me off.
The Pure Advantage: Advanced Racing Game AI
18 Embarrassing Game AI Bugs Caught On Tape... and Fixed!
OpenSteerDemo
The psychology of randomness
WeightedDecayRand
GDC 2010 Keynote Address: Sid Meier
Theta*: Any-Angle Path Planning for Smoother Trajectories in Continuous Environments
Near-Optimal Hierarchical Pathfinding (HPA*)
Сравнение алгоритмов поиска маршрутов в StarCraft и StarCraft 2
There's a Hole in Your NavMesh, Dear Zombie

Второй доклад, C++0x
Я не рассчитала время, доклад получился коротким. Первратим это в плюс.
Короткий, но насыщенный доклад про C++0x! Всего на 25 минут, а если вопросы не слушать, то и того меньше!

225-C0xx-add-2010.avi from Stas Fomin on Vimeo.



Updated 09.12.2010:
Во время доклада был задан вопрос, почему для атрибутов нельзя использовать слово final вместо [[final]]. Там были высказаны предположения, но ответ так и не был дан.
Отвечает Герб Саттер.
Для это пришлось бы использовать контекстный парсинг, а делать это не хотелось, потому что нигде до этого в языке это не использовалось. Но все-таки они решили сделать именно так. И final будет просто final, без каких-либо скобочек.
/Updated

Материалы, которые я использовала для подготовки к докладу:
C++0x features and their support in popular compilers
Initializer List proposed wording
Compile-time 'String' Manipulation with Variadic Templates
C++0x: An overview, by Bjarne Stroustrup
C++0x FAQ
C++0x Core Language Features In VC10: The Table
Summary of C++0x Feature Availability in gcc and MSVC
C++0x. Лямбда-выражения
C++0x lambda

P.S. Лучше все это смотреть в HD и на полный экран

пятница, ноября 12, 2010

Статьи про рендеринг в Старкрафт 2

"...вашему вниманию предлагается реверс инжиниринг рендера всем известной игры Старкрафт 2, от не менее известной компании Близзард."
Старкрафт 2: Секреты технологий
Старкрафт 2. Рендер роликов



via lightypp

вторник, ноября 09, 2010

Впечатления от работы с игровыми консолями

Меня тут в комментариях как-то просили рассказать о моих впечатлениях от работы с консолями, вот оно.

Пара слов о том, какие бывают игровые консоли. Есть те, которые надо подключать к телевизору, по-русски они обычно называются "приставки". Сейчас наиболее популярны три из них: Microsoft XBOX 360, Sony PS3, Nintendo Wii. Причем Wii всех рвет по продажам.

Есть консоли со своим собственным экраном, самые известные - Nintendo DS и Sony PSP.

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

Архитектура
Пришлось работать с довольно странной архитектурой, это непривычно. На консолях любят big endian. Что создает, хм, некоторые проблемы, если вам хочется двоичные данные с PC перенести на консоль. А вам этого захочется, потому что у вас все дизайнеры уровней сидят на PC.

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

В целом приходится сидеть сильно ближе к железу и вот здесь хорошо себя проявляет С++. Здесь вы можете и данные разложить как вам надо, и с полиморфным наследованием поработать.

Огромный плюс - консоли везде одинаковые. Например, у вас нет зоопарка видеокарт, как на PC, которые это поддерживают, это не поддерживают, а вот тут у нас драйвер устаревший... И это прекрасно.

Контроль качества
В играх под PC сложилась такая нехорошая практика - сразу после выхода игры выходит пачка патчей. Здесь с патчами все сложно. Либо их нет совсем, либо их довольно сложно и неудобно выпускать. При этом, если вы играли в игры на консолях, то, возможно, обращали внимание, крэш игры - это что из ряда вон выходящее. Да и вообще багов не видно.
Потому что тут существует Контроль Качества. Вам не удастся себя уговорить, что "и так сойдет" и "никто не заметит". По ту сторону вас ждет не пользователь, которому, в принципе, можно навешать лапши на уши, а платформодержатель. И стоит он насмерть.

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

Закрытость

Вы не можете задать вопрос в коммьюнити размером с целый мир. У вас есть закрытый форум или список рассылки, это вам не stackoverflow. Особого выбора библиотек тоже нет. Радуйтесь тому, что есть.


Ссылки по теме:
Про консоли
Updated 01.12.2010
Kill the Gatekeepers

пятница, октября 22, 2010

Electronic Arts приоткрыла EASTL

EA открыла немножечко исходников, в том числе EASTL. Насколько я понимаю, далеко не весь.
Чтобы не мучаться и не искать EASTL в этих исходниках самим, можно его посмотреть вот здесь: EASTL.

Там есть аппетитно выглядящие ссылки типа Sims 3, но исходников симов там нет, увы.

В 2007 году у меня был пост про EASTL, где я сказала следующее

Если будут какие-нибудь свободно доступные реализации EASTL, интересно было бы их опробовать.

Прошло три года и счастье наступило. Хотя, когда именно произошло это событие, я не знаю. Никаких официальных пресс-релизов я не вижу. Судя по всему, EA сделала свою версию WebKit, который под LGPL, и ей пришлось выложить исходники, куда попала часть EASTL.

Ссылки:
EA STL released, updated benchmarks - здесь я узнала об этой новости. Как видно из заголовка, там в статье есть бенчмарки

Есть чем заняться на выходных :-).

четверг, сентября 16, 2010

Игра Alien Swarm, с исходниками

Этим летом Valve сделала жест невиданной щедрости. Они совершенно нахяляву выложили на Steam игру Alien Swarm. И полные исходники к ней. Я знаю, народ постоянно ищет исходники, чтобы по ним поучиться, вот оно.



Updated 17.09.2010:
Дополнения по результатам разбирательства с исходниками, поисков в интернетах и комментариев:
Игра сделана на движке Source и исходников самого движка нет. Причем, по слухам, движок этот в AlienSwarm модифицирован. Итого - нету кода рендера, физики. Зато AI, похоже, весь есть, по крайней мере все, что мне было нужно, я нашла.
Разбирательства с тем, чего есть, а чего нет, затруднены из-за отсутствия какой-либо документации. Есть wiki по AlienSwarm, информации там мало.
Написан AlienSwarm на С++, а не на своем скриптовом языке, это приятно.
/Updated 17.09.2010:

Давайте я расскажу как это все скачать и куда смотреть, это не очень тривиальный процесс.

Сначала надо зайти на Steam и инсталлировать Alien Swarm. Если вы там не зарегистрированы, вам предложат зарегистрироваться. И заставят скачать и установить их клиента. Игра здоровая! Что-то типа гигабайта.

Исходники Alien Swarm устанавливаются из Steam клиента из меню Tools.



Исходники приедут вот сюда, это путь по умолчанию
C:\Program Files\Steam\steamapps\common\alien swarm\sdk_src

Наверняка вам понадобится дебагная консоль, она включается в Опциях.


Вызывается по тильде, ~

Консоль выглядит вот так:



Команды дебагной консоли, которыми я пользовалась
ai_nodes - показывает все waypoint графа
ai_show_connect - показывает связи между точками waypoint графа

Сейчас еще пороюсь, может еще чего хорошее найду.

Ссылки по теме:
Are Waypoint Graphs Outnumbered? Not in AlienSwarm!
Alien Swarm SDK tutorials

среда, июля 14, 2010

Paris Game AI Conference 2010. Общие впечатления

Вы думали, про конференцию уже всё? Нифига.

Я причесала старые два поста. Все общие замечания про конференцию я вынесла сюда. Дописала недостающие куски, добавила фотографии, добавила ссылки на слайды, которые выложил Шампандар.

Кроме меня отчеты уже написали: Шампандар, Микко Мононен и Бьярн Кнафла. У Шампандара много фотографий хорошего качества, его жена фотографировала. Микко в отдельном посте выложил слайды и сурсы.

Когда я упоминаю Шампандара, вопрос, который мне чаще всего задают "а кто это?". Это программист, специализирующийся на игровом ИИ, ведет aigamedev.com, работает по контрактам на разные девелоперские конторы. Работал в компании Rockstar, работал над Killzone 2. Организовал конференцию, о которой я так много рассказываю, за что ему большое спасибо.

Я до этого была только на русскоязычных конференциях, тут же была жуткая смесь европейских языков. Очень много франкоговорящих товарищей. И еще разные акценты английского. Неожиданно сложно было понимать финский и итальянский акценты. Русских не встречала, вообще русскоговорящих не было.

Но программеры, они все прям как у нас. Во время кофе-брейков многие мялись и мучались. Я тоже мялась и мучилась. Тяжело это - общаться.

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

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

Главный недостаток конференции - отсутствие WiFi. Я и еще два чувака нылись по этому поводу в твиттере всю конференцию. Меня это сильно расстроило, потому что я планировала создать эдакий эффект присутствия. Твитить, даже запостить видео. Вот вам видео, чего добру пропадать.


CNAM


Указатель


Нам туда, вниз


Я получила бэджик!


Зачем-то были закрыты последние ряды. Не знаю зачем.


Конференция была несколько омрачена традиционной французской забавой - забастовкой. Трудящиеся массово бастовали в связи с реформой пенсионной системы. Как несложно догадаться, условия выхода на пенсию меняют в худшую сторону. В связи с чем не работал некоторый транспорт, были отменены авиарейсы. Тут очень хорошо выступил спонсор - рекрутинговая компания Game Talents. Они обновляли информацию о ситуации в аэропортах на доске объявлений в реальном времени (WiFi, как мы помним, отсутствовал). Также они обещали отвезти людей в аэропорты. Отвезли или нет - не знаю, а вот доску объявлений видела своими глазами.


Программка и бэджик













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

четверг, июня 24, 2010

Paris Game AI Conference 2010. День второй

Конференция уже закончилась, рассказываю о том, что было сегодня.

Все началось с рассказа Паоло Манинетти про гоночный симулятор. Машины и мотоциклы у них едут по идеальной траектории. На это линии есть целевая точка на определенном расстоянии и машина стремится к ней приблизиться. Траектория содержит в себе информацию об идельной скорости. Когда машин много двигают целевую точку, чтобы избежать столкновения. Они пытаются анализировать информацию о том, что происходит на дороге, пытаются определить опасные ситуации. Это отражается на производительности.
Показывали демки с отладочной информацией. Дебагная информация у них богатая.
Искали золотую середину между честной игрой и читерством. Говорят, что чем честнее, тем правдоподобнее. Но тем дороже по производительности.
Каждая трасса тюнится руками, можно в нее записать что-то дополнительно.
Physics-based Racing AI[.pptx]

Battlefield: Bad Company 2
В соседней аудитории одновременно с нами проходило еще какое-то сборище, они там громко пели хором. Это придало докладу неповторимую атмосферу.
Первую часть этой игры много критиковали за AI, поэтому над AI серьезно поработали.
В игре (они сокращали ее название до BF) есть дружественные агенты. Их сложнее делать, чем вражьих, потому что враги быстро дохнут и если в них и есть какие глюки, то это незаметно.
Также там есть разные виды юнитов - пехота, машины, танки, вертолеты. И мир разрушаемый.
Показали демку, спросили, не заметил ли народ чего подозрительное. Я не заметила, однако были люди, которые просекли, что там танк телепортируется. Причем дважды.
Улучшили анимации смерти - их, правда, всего пять секунд на экране видно.
Сделали автоматическое определение укрытий. Т.е. укрытие должно быть достаточно высоким, защищать от врага. Определяли, нужно ли вставать, чтобы выстрелить в врага или надо уйти в сторону.
Читят они, да. Про танки вы уже поняли. Еще солдаты у них не бегут слишком близко к игроку. И если резко развернуться, то это заметно, выглядит глупо. Солдат тоже телепортируют.
Итого:
-80% bulk AI
-20% memorable moments
Слайды у них красивые были. Модные такие, с вертолетом.
Building the BATTLEFIELD AI Experience[.ppt]

Дальше была panel discussion. Там были Брюс Блумберг, Фредерик де Кастер (Creative Assembly), Ульф Йохансен (IO Interactive). Говорили про контроль качества.
Тестеры отрывают разработчиков от работы, когда находят багу, потому что AI баги сложно повторить. Брюс Блумберг рассказывал, что у них был тестер, которого они прозвали Ангелом Смерти. Если он входил в комнату, значит придется задержаться.
Делают плейтесты. По времени прозвучала оценка полдня в неделю.
Фредерик из Creative Assembly рассказывал, что у каждой команды есть доска, они туда пишут над чем работают сейчас, над чем будут работать.
Ульф рассказывал про их smoke тест. Если игра после запуска работает 40 секунд, то тест пройден. У них есть автоматические тесты. Для повышения воспроизвоимости есть AI fight recorder.
Брюс рассказывал, что у них можно законнектить игру с их тулзой, где отображается граф поведения и можно открутиться назад и посмотреть что происходило.

Дальше Щампандар рассказывал про Multi-threading AI, в основном про то, как оно много и интересно глючило, а он его отлаживал.
Использовал Intel TBB.
Высказал следующую мысль: When dealing with multithreading, denial is a very useful tool to use.
Multithreading in Practice: Uncensored and Uncot[.pptx]

Дальше был доклад про EVE online characters
Рассказывали, что когда игрок подходит к ботам и они на него не реагируют, это выглядит странно. Показали несколько роликов. Действительно странно.
Они сделали некий AI social engine и будут вставлять его в EVE online. Здесь было много информации из области социологии, формирование кластеров общающихся людей, очереди, F-formations.
Human Territoriality for EVE Online's Socially Smart Characters[.ppt]

Дальше был гвоздь программы, Кен Перлин, который Perlin noise, рассказывал про процедурную анимацию. Много говорил о том, что надо делать персонажей более убедительными, живыми. И в процедурную анимацию легче вносить изменения. Чем-то мне это все напомнило Spore. По каким-то базовым принципам генерится анимация персонажей. В зависимости от того, как он анимирован, он может казаться, испуганным, веселым, смущенным, агрессивным. Даже если это не антропорморфная фигурка, а треугольное не пойми что. Здесь опять же было много демок, без них говорить сложно.

Здесь могла бы быть красивая фотография Кена Перлина на фоне его слайда с бущующим морем и надписью Why procedural methods are cool. Не получилось.



Дальше были заключительные слова, организаторы конференции порешили, что Cheating is win, что Pathfinding jokes when struggling to return to the hotel - это плохая идея. Что next big thing - это взаимодействие людей и социальный аспект, то есть то, о чем были последние два доклада.
Шампандар обещал конференцию в следующем году в это же время, наказал ничего другого на эти дни не планировать.

Paris Game AI Conference 2010. День первый.

Обещала отчитываться о конференции, выполняю обещание.

На фотографии Фил Карлайл всех ждет

Сегодня все началось с введения, где выступали Шампандар и Карлайл. Про тренды меня спрашивали в комментариях. Про тренды тут как раз и было, записывайте: социальные игры, ИИ толпы, генерация контента.

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

Дальше выступил Брюс Блумберг. Он рассказывал об игре World of Zoo, об ИИ животных в зоопарке. Здесь было много красивых роликов. Для анимации они использовали HFSM, для поведения животных "что-то вроде behavior trees".
Его слайды: Intimate Conversations with Interactive Animated Characters[.pdf]

Выступили ребята с коротенькими презентациями различных миддлварей. Здесь я узнала, что Autodesk Kynapse используют Intel TBB и довольны.
MASA специализируются на безопасности, но также делает ИИ миддлварь, показывали ролики с драками, использующими мокап. Ролики красивые.
Ребята из PathEngine не используют флоаты и деление тоже не любят, потому что медленно.
Ребята из Havok'а показали совершенно потрясающую демку с крутящимися вентиляторам, между которыми ходят боты. Это они хвастались своей работой с мобильными препятствиями. Спросила их про эту демку во время кофе-брейка. Сказали, что в Интернет они ее, может, и выложат, а вот детали реализации разглашать не могут. Также рассказывали о том, что умеют генерить NavMesh динамически.


Navigation Loop, Микко Мононен
Navigation Loop, слайды и исходники
Рассказывал про агентов, которые вместо того, чтобы сталкиваться, кооперируются друг с другом с тем, чтобы выработать траектории, которые не столкнутся. Здесь было много красивых демок.
К нему было много вопросов. Спросили про нейронные сети. Ну какая ИИ конференция без нейронных сетей. Так вот, Микко Мононен нейронные сети не любит и их не использует.
Также его спрашивали, чего это у него все демки работают с окружностями, что делать с более сложными формами. Ответ Микки: с более сложными формами работать, хм, сложнее, поэтому работаем с окружностями.

Дальше опять panel discussion. Это когда несколько человек сажают в ряд и задают им вопросы, а они отвечают.


Здесь были (справа налево): Алекс Шампандар, Микко Мононен, Кен Перлин, тот самый, который Perlin noise и два разработчика Heavy Rain. Оба французы, оба произносили Heavy Rain с французским акцентом, "эви рейн" у них получался.
Обсуждали генерацию толпы. Здесь я узнала, что в Heavy Rain'е используется для толпыт fluid simulation (эмуляция жидкостей), они пробовали flocking (один из видов steering behaviors), но оно плохо работало для 1000+ человек, большая нагрузка на CPU была. Также они там читят, людей телепортируют иногда.
Спросили их, есть ли какая-то специальная обработка ситуации, когда игрок следует за одним агентом в толпе. Один из них сказал, что следовать за кем-то одним невозможно, потому что народу слишком много. "И потому что у нас телепорт" - добавил второй.
Еще сказали, что motion capture толпы людей непонятно как делать, потому что люди друг друга будут скрывать.

Байлор Ветцел рассказывал о бесчеловечных экспериментах над студентами. В простой игре с боями в стиле Heroes of Might and Magic реализовал несколько стратегий боя. Некоторые умные - они пытались атаковать самых сильных противников. Некоторые - откровенно дурацкие, типа первым атаковать противника с самым длинным названием или атаковать противников по очереди сверху вниз. Просил угадать какая именно стратегия где используется. Угадывали плохо. Просил оценить каждую из стратегий по трем критериям: Fun, Difficulty и Realism. Выяснил, что Random - один из топовых по Fun'у. Также выяснил, что Difficulty и Realism связаны друг с другом, а вот с Fun'ом никак не связаны.
Inside Your Players' Mind With Playtesting[.ppt]


Гваредд Маунтайн рассказывал про психологические опыты в SILENT HILL: SHATTERED MEMORIES.
В процессе игры игроку предлагается беседовать с психологом. По этим беседам состовляется психологический портрет играющего, и в зависимости от него меняется контент. От этого зависело будете ли вы беседовать с секси копом или просто с копом. Меняются одежда людей, мебель, внешний вид монстров.
Контента у них было много. Минимум 3 варианта каждой сцены.
Производит сильное впечатление. Но при этом игра больная на всю голову. Да простят меня поклонники Silent Hill.

Один из задававших вопросы отметил, что идея отличная, но ее бы лучше использовать для чего-нибудь более полезного.
Personality Profiling in SILENT HILL: SHATTERED MEMORIES

понедельник, мая 31, 2010

Вышел Robocalypse - Beaver Defense

Updated 07.06.2010
Nintendo Life 8/10
This is a fun tower defence game with enough unique features and strategic elements to keep it interesting and a sense of humour to set it apart from its competitors. While it suffers presentation-wise, don't let that throw you off as for those who enjoy the genre, this one's a must-have.

IGN 7/10
The silly style's still the same, but this is a whole different kind of Robocalypse.

Какой-то пользователь gamespot'а поставил 9/10. Это не официальный рейтинг, но все равно приятно.

Отзывы тех, кто играл, в основном положительные.
Выдыхаем...



Updated 04.06.2010 Сегодня, 4 июня, Бобер вышел и в Европе (31 мая был релиз на Северную Америку). Подозреваю, что это должно означать, что его видно в российском Wii Store. У кого есть Wii посмотрите, плз...


Сегодня вышел Robocalypse - Beaver Defense, на котором я была ведущим программистом, а также временами менеджером. Жанр игры - Tower Defense. Платформа - Nintendo Wii, вернее WiiWare - это игры под Wii, которые можно скачивать через online-магазин. Сюжет игры строится вокруг злобного бобра, который решил всех поработить. Он насылает на вас орды роботов, вам надо строить башни и от него обороняться.

Со мной вместе работало много других хороших людей (не стала ставить ссылки на блоги, вдруг кто шифруется, напишите мне мылом или в комменты, я поставлю ссылки). Мы использовали прекрасный codebase предыдущего Robocalypse'а, за что его авторам большое спасибо.

Было интересно поработать с консолью, много отличий от работы с PC. И да, телевизор в качестве устройства вывода - это ужасно.

Теперь ждем реакции игроков, нервничаем.

Скриншоты




Интервью с нашим продюсером, Аланом Мартином


Еще одно интервью с Аланом, много букв.
Официальный сайт.
Офицальный пресс-релиз Нинтендо.

P.S. Увы, осенью Вогстер закрыл свое московское отделение. С тех пор я успела поработать в IT-Territory, которую внезапно купил Mail.Ru. В итоге сейчас я работаю в Mail.Ru, программирую под Windows. На C++, разумеется :-).

четверг, мая 06, 2010

Paris Game AI conference 2010

В конце июня в Париже пройдет конференция по искусственному интеллекту в играх. Я там буду, если какая-нибудь Катла не решит извергнуться именно в эти дни.

По сравнению с другими геймдевелоперскими сборищами это очень маленькая конференция. Зал, в котором читают доклады, всего один. И недорогая, опять же, по сравнению с остальными геймдевелоперскими мероприятиями. Она дешевле КРИ, например.

Коференция эта довольно популярна, поэтому уже в конце апреля все билеты были распроданы. После чего ее организатор, Алекс Шампандар, выкупил аудиторию вдвое больше первой. И теперь у него новая проблема - её надо заполнить. Он просил пропиарить это мероприятие, что я и делаю.

Итак, Париж 23-24 июня, схема проезда есть на официальном сайте и, cлава Гуглу, мы можем посмотреть где именно это будет.


Язык конференции - английский. Здесь список докладов: Program Highlights

Если вы решите туда поехать, то имейте в виду, что, поскольку вы летите из-за пределов Европы, то вам положена скидка 50 процентов. Там все не очень очевидно в разделе регистрации написано.

После конференции я напишу отчет, а в процессе буду твитить, если там будет WiFi. Хэштэг #AIGD10.

понедельник, марта 29, 2010

Материалы с GDC2010

Game Developer Conference проходит ежегодно в марте. GDC этого года уже прошла и в Интернете начали появляться материалы оттуда.


На русском
orvind рассказывает о GDC2010: раз, два и три.
_winnie перессказывает orvind'а
Updated 28.04.2010: gdc san francisco 2010

На английском

Пит Исенси, Микрософт, Effective Management: Getting the Best from Your Team [.ppt]


GDC 2010: Reading the Player’s Mind Through His Thumbs: Inferring Player Intent Through Controller Input

GDC 2010 Networked Physics Slides + Demo (Glenn Fiedler, Sony Santa Monica) - много интересных бенчмарков пропускной способности интернетов. Подробно с примерами рассказывает о синхронизации игроков в мультиплеерных играх.

The AI of BioShock 2, Kent Hudson, 2K. Все материалы в каком-то кривом формате.

Пол-Кристиан Энгстад, Naughty Dog. Слайды про PS3 SPU. Часть1 и часть2. Они по ним раньше вновь прибывших учили, а теперь решили поделиться знаниями с миром.

Сид Мейер (он Цивилизацию придумал) рассказывает о психологии игроков.

Рассказывает, что есть некоторые игроки, которые перед каждым боем сохраняются. И, если бой прогрывают, то загружают сейв и переигрывают битву заново. (это обо мне, ага :-) ). Так вот, они стали запоминать с сейвом некий ключ. И исход битвы будет таким же, сколько ни перегружайся. "Ха-ха-ха" - добавляет в конце Сид.

Небольшая презентация от Havok'а. У них теперь есть Havok AI.


Еще много ссылок тут: GDC 2010 proceedings