tag:blogger.com,1999:blog-103030352024-03-07T12:02:34.300+03:00Алёна C++программирование для прагматиковAlenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.comBlogger97125tag:blogger.com,1999:blog-10303035.post-82163858025129814372015-06-29T21:39:00.000+03:002015-06-29T21:39:43.617+03:00Фрагментация памяти в C++ приложенияхПоскольку памятью в С++ приложении программист управляет самостоятельно, то и за фрагментацией памяти приходится следить самим. Память фрагментируется, если приложение работает достаточно долго и при этом активно работает с памятью. Не такая редкая проблема. Я это видела в играх, игрок бегает, юнитов убивает, локации меняет, надо под это память выделять и потом освобождать. И в высоконагруженных системах, запросы приходят, надо под них память выделять, потом освобождать. <br />
<br />
Чем это плохо? Во-первых, память может внезапно закончиться. Во-вторых может просесть производительность. Вот тут можно почитать историю как это выглядит на практике: <a href="http://nfrechette.github.io/2015/06/25/out_of_memory/?utm_content=buffer20210&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer">Out of memory</a><br />
<br />
Вот тут с картинками написано как оно происходит: <a href="http://bulldozer00.com/2015/06/01/holier-than-thou/?utm_content=buffer21145&utm_medium=social&utm_source=facebook.com&utm_campaign=buffer">Holier Than Thou</a><br />
Но не написано - а что с этим делать-то? Итак, с чем я работала.<br />
<br />
<a href="https://en.wikipedia.org/wiki/Region-based_memory_management">Region-based memory management</a>. Выделяем память большим куском, например, под уровень в игре. Популярный термин для такого куска - "арена". Потом уже внутри этого куска создаем нужные нам объекты. Когда все это стало не нужно - весь кусок памяти освобождаем. Заодно с утечками памяти проблем меньше.<br />
Арену можно использовать вместе с STL, см. "STL custom allocators". <br />
<br />
<br />
<a href="http://theboostcpplibraries.com/boost.pool">Boost.Pool</a>. Там есть несколько разных интерфейсов, я использовала object_pool, который помогает эффективнее создавать и удалять большое количество сравнительно маленьких объектов.<br />
<br />
Также я видела разное креативное использование placement new, как правило его можно заменить Boost.Pool'ом.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com10tag:blogger.com,1999:blog-10303035.post-19422237192541895982012-06-11T00:13:00.000+04:002012-06-18T10:12:13.542+04:00Обзор исходников Doom3Некоторое время назад исходники Doom3 были выложены в открытый доступ. Но в исходниках без доков разбираться довольно тяжело. Так вот, <a href="http://fabiensanglard.net/doom3/index.php">Фабьен Санглар написал по ним обзор</a> со схемами, картинками, видео. Также он позадавал вопросы Кармаку по исходникам. Если вы мечтаете писать игры, но не знаете с чего начать, то Фабьен сделал вам прекрасный подарок.<br />
<br />
Несколько фактов оттуда:<br />
<ul>
<li>Впервые в истории id Software код написан на С++, а не на С
</li>
<li>В коде широко используются абстракция данных и полиморфизм
</li>
<li>Темплейты используются только для низкоуровневого кода
</li>
<li>По мнению Фабьена это вторая по качеству кодобаза от id Software после <a href="http://fabiensanglard.net/doomIphone/index.php">Doom iPhone</a>
</li>
<li>Благодаря инкапсуляции код легко читать
</li>
<li>Дни оптимизации ассемблерного кода на низком уровне прошли
</li>
</ul>
Бонус: Кармак рассказывает о своих экспериментах с очками виртуальной реальности и о проблемах с задержкой отрисовки. <a href="http://kotaku.com/5916210/carmack-being-carmack-a-dozen-minutes-with-one-of-video-games-smartest-people">Carmack Being Carmack: A Dozen Minutes With One of Video Game’s Smartest People</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com9tag:blogger.com,1999:blog-10303035.post-18160896725294840822012-04-04T09:17:00.002+04:002012-04-04T09:23:37.821+04:00First 48 Skate 3 videosПроблемы с коллизиями и ragdoll'ами в игре Skate 3.<br /><br /><br /><iframe width="560" height="315" src="http://www.youtube.com/embed/vfl33Tn0pYc" frameborder="0" allowfullscreen></iframe><br /><br />via <a href="http://jimblog.me/">Jim</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com11tag:blogger.com,1999:blog-10303035.post-83149658235590316022011-12-17T23:19:00.003+04:002011-12-17T23:32:21.102+04:00Интервью с Корринной Ю<a href="http://www.girlgamer.com/zine/article/1685/">Women in Gaming: Halo's Corrinne Yu</a>. Корринна работает в Microsoft Game Studios, занимается архитектурой движка Halo. Интервью просто про жизнь, про программирование там маловато.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com4tag:blogger.com,1999:blog-10303035.post-90335523208034017032011-11-23T09:00:00.008+04:002011-11-27T12:44:18.582+04:00Опубликованы исходники Doom 3Помните, Кармак обещал опубликовать исходники Doom 3 после выхода Rage? Он свое слово держит: <a href="https://github.com/TTimo/doom3.gpl">Doom 3 GPL source release</a><br /><br /><code>/*<br />===========================================================================<br /><br />Doom 3 GPL Source Code<br />Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company. </code><br /><br />Это только исходники, без данных. Данные можно взять из самой игры.<br /><br />Из-за юридических проблем ему пришлось убрать оттуда кусок кода, известный как Carmack's Reverse.<br /><br />Должно компиляться под Win32, Linux и MacOS.<br /><br />Написано на С++, но это скорее похоже на С с классами - голые указатели, сишные массивы.<br /><br />Как это обычно бывает, не все доведено до идеального состояния.<br /><br /><code>qglDisableClientState( GL_NORMAL_ARRAY );<br />qglDisable( GL_FRAGMENT_PROGRAM_ARB );<br />qglDisable( GL_VERTEX_PROGRAM_ARB );<br />// <span style="font-weight:bold;">Fixme</span>: Hack to get around an apparent bug in ATI drivers. Should remove as soon as it gets fixed.<br />qglBindProgramARB( GL_VERTEX_PROGRAM_ARB, 0 );</code><br /><br />Как видно из кода, для отрисовки используется OpenGL. <strike>Почему-то в readme написано, что нужен DirectX. Непонятно.</strike> DirectX <a href="http://alenacpp.blogspot.com/2011/11/doom-3.html#comment-6702967456750174974">нужен для DirectInput</a>.<br /><br />Подменив данные и <span style="font-style:italic;">слегка</span> поменяв код можно написать 3D-шутер своей мечты :-).Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com7tag:blogger.com,1999:blog-10303035.post-63356669371938992922011-11-05T09:26:00.004+04:002011-11-20T07:05:01.467+04:00Статья The Designer's Notebook: Passion Versus Professionalism<a href="http://www.gamasutra.com/view/feature/6523/the_designers_notebook_passion_.php?print=1">The Designer's Notebook: Passion Versus Professionalism</a> - статья про то, что игровой индустрии нужны скорее профессионалы, нежели энтузиасты. Но вообще там много интересного написано, что подойдет к любой индустрии.<br /><br /><blockquote>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.</blockquote><br /><br />Спасибо анонимному комментатору, который дал в комментариях ссылку на русский перевод статьи: <a href="http://vk.com/note124207547_11562473">Увлечённость или профессионализм?</a><br /><br />via <a href="http://twitter.com/#!/voldmar">voldmar</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com14tag:blogger.com,1999:blog-10303035.post-73485383592126544802011-08-12T11:00:00.004+04:002011-08-12T11:22:27.101+04:00Выступление Джона Кармака на QuakeCon 2011Джон Кармак как обычно выступал на QuakeCon, вот видеозапись его выступления.
<br /><iframe width="560" height="349" src="http://www.youtube.com/embed/4zgYG-_ha28" frameborder="0" allowfullscreen></iframe>
<br />
<br />Расшифровку я не нашла, похоже ее пока нет.
<br />Для тех, кто не готов слушать его полтора часа, коротенький пересказ:
<br />Много говорил про мегатекстурирование в Rage и вообще про Rage. Как Rage получился ему нравится.
<br />Говорил про статический анализ кода, говорит, что это вещь и надо им пользоваться. Хвалил майкрософтовский статический анализатор кода и вообще: "Microsoft Research has a lot of really smart people and they do a lot of work covering a lot of different areas."
<br />Этот анализатор идет в комплекте с тулзами под XBOX 360, поэтому "если вы разрабатываете под 360 и не используете статический анализ, то вы совершаете ошибку.
<br />Также упомянул <a href="http://www.viva64.com/en/pvs-studio/">PVS-studio</a>.
<br />Иногда ему хочется перейти на функциональные языки программирования. На Haskell, например. Но он считает, что тут будут проблемы с прозводительностью, а также с обучением и наймом людей. Поэтому остаемся с С и С++.
<br />Ему 40 лет, ему нравится программировать и у него отлично получается. Лучше чем когда бы то ни было. (Тут сразу вспоминаются мифы про то, что программировать после 30 невозможно.)
<br />
<br />Ну и самое главное - Код Doom 3 будет открыт в этом году. (!)
<br />
<br />Вопросы и ответы после его выступления:
<br /><iframe width="560" height="349" src="http://www.youtube.com/embed/00Q9-ftiPVQ" frameborder="0" allowfullscreen></iframe>
<br />
<br />Ссылки по теме:
<br /><a href="http://twitter.com/#!/ID_AA_Carmack">Твиттер Кармака</a>
<br /><a href="http://alenacpp.blogspot.com/2008/09/rage-tech5.html">Rage и Tech5</a>
<br /><a href="http://alenacpp.blogspot.com/2008/09/quakecon-2008.html">Выступление Джона Кармака на QuakeCon 2008</a>
<br /><a href="http://alenacpp.blogspot.com/2005/09/quakecon-2004.html">Перевод выступления Кармака на Quakecon 2004</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com5tag:blogger.com,1999:blog-10303035.post-23502944905622256132010-12-21T21:20:00.000+03:002010-12-21T21:28:38.144+03:00Книга Exploiting Online Games<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.amazon.com/Exploiting-Online-Games-Massively-Distributed/dp/0132271915/"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQNMpibUzefnlUXMkHRVJDc7KEltAorFm_2iTd-AevsTgKfx2UM8-czbBui56Gy62XgBcl8vKoxNKz21N3E0je-haxdK4sTLZzTYDQ2qv2cH6uJNAxxNxunaGfkQhk3yMszxRaWw/s200/exploitingonlinegames.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5553198053972056578" /></a>Книга <a href="http://www.amazon.com/Exploiting-Online-Games-Massively-Distributed/dp/0132271915/">Exploiting Online Games</a> попала ко мне в руки случайно. Я ее прочитала, она мне не понравилась, давайте расскажу почему.<br /><br />Первые четыре(!) главы книги посвящены пространным размышлениям о том, что хачить нехорошо, а также рассказам о софтверных лицензиях. Читателям, дожившим до пятой главы, дается скупая и щедро разбавленная водой информация, которая как-то относится к теме книги. Также присутствует много отсылок к другим книгам тех же авторов.<br />Анализа и систематизации информации нет. Причем в большинстве случаев они говорят о WoW, книгу надо было назвать "Как наверное можно похачить WoW". <br />Эта одна из тех редких книг, из которых мне не удалось узнать вообще ничего нового. Что там есть вообще: у нас есть клиент, он обменивается данными с сервером. Теоретически, можно влезть в клиента, там есть интересная информация о состоянии мира. Можно слать на сервер свои данные. Можно написать бота. По большому счету это все содержимое книги.<br />Видимо, чтобы книга была толще, туда добавлена базовая информация по языку ассемблера и про DLL injection.<br /><br />Совершенно непонятно для кого это все написано. Для читера она бесполезна, потому что там нет примеров типа "мы сделали то-то и то-то, получили такой-то результат". Читателю просто бросается какая-то мысль или кусок кода и... всё. Это порождает кучу вопросов. Чего дальше-то было? Оно заработало вообще? Что сказал <a href="http://en.wikipedia.org/wiki/Warden_%28software%29">Warden</a>? Как быстро был закрыт аккаунт? <br /><br />Для разработчика она бесполезна, потому что разработчик и так знает, что на клиенте много информации и что ее можно вытащить. И что читеры существуют и что ловить их по-одному - дурацкое занятие. Разработчику нужно вообще другое. Мне бы было интересно почитать о паттернах, по которым читеров можно распознать по статистике. Ведь если у одного игрока морковка начинает всходить вдвое быстрее, чем у всех остальных, это же видно хорошо... О реальных нетривиальных случаях читерства, о том, как с ними боролись. О статистике по читам. Что пытаются делать чаще, от чего потери больше.<br />О том, что вообще с этим делать. Как бороться с читерами, избегая таких сомнительных решений как Warden? Ведь Warden, будем откровенны, это же явное spyware. Как бороться так, чтобы ни в коем случае не обидеть честных игроков? Как держать читеров под контролем? <br />Как распознать бота? Если у нас игрок уже 24 часа бьет куриц, 1exp за курицу, как понять кто это - бот или усердный корейский студент? Может вывести ему сообщение "Курицы дарят вам 1000exp и просят оставить их в покое" с кнопками "Принять" и "Не принимать" и посмотреть за реакцией?<br />Большинство проблем происходит из-за того, что приходится доверять клиенту, ведь часть информации хранится на клиенте. Как снизить доверие к клиенту? Можно ли убрать оттуда часть информации? А всю можно? Проводились ли исследования в этой области? Возможны ли решения типа OnLive, когда игроку выдается только видеопоток?<br /><br />Наверное, все это можно узнать где-нибудь на закрытых секциях GDC, в этой книге ничего такого нет.<br /><br />Ссылки по теме:<br /><a href="http://www.cigital.com/presentations/EOG08_McGraw.pdf">Слайды, в которых есть много информации из этой книги</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com6tag:blogger.com,1999:blog-10303035.post-9705275310618699152010-12-13T18:20:00.003+03:002010-12-21T21:30:11.180+03:00Я хочу программировать игры! Что мне делать?<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPCJ_RGcLFoYE4LDnJg-8p4iHj6dkz6O-evJ9CTfXTH02AzzbnfteKHjF4OqV80KiQFlGh-Gpf-_Cjih9kbgDkG1JSly_80WkE7lW4uyKJ6LshXD8REyXXqY3NTX-KW4wjuAM1Kg/s1600/Robocalypse_BD_screenshot_08.jpg"><img style="float:right; margin:10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 224px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPCJ_RGcLFoYE4LDnJg-8p4iHj6dkz6O-evJ9CTfXTH02AzzbnfteKHjF4OqV80KiQFlGh-Gpf-_Cjih9kbgDkG1JSly_80WkE7lW4uyKJ6LshXD8REyXXqY3NTX-KW4wjuAM1Kg/s320/Robocalypse_BD_screenshot_08.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477523038291133442" /></a>Вопросы от людей, которые хотят программировать игры, приходят все чаще, а это значит, что пора писать пост. Не то, чтобы у меня был грандиозный опыт разработки игр, но вполне себе неплохой опыт есть. Ну и толпы желающих помочь новичкам не наблюдается.<br /><br />Итак, для начала нам надо понять, как именно происходит разработка игр. И познакомиться с общей ситуацией в индустрии...<br /><br /><span style="font-style:italic;">-Алёна, давай ближе к делу! Лесом ситуацию в индустрии, программить уже давай!</span><br /><br />Но мои собеседники, как правило, хотят уже прямо сейчас приступить к написанию кода и слушать всякие занудствования не готовы. Поэтому начнем с конца. <br /><span style="font-style:italic;"><br />-Я поставил себе Visual C++ 2010? Я все правильно сделал?</span><br /><br />Если вы работаетет с Windows, то да, лучше Visual C++ и лучше версию поновее. Про разработку игр под Линукс я не в курсе...<br /><span style="font-style:italic;"><br />-DirectX или OpenGL?</span><br /><br />Это зависит... На Windows в основном используется DirectX. Но это вовсе не значит, что OpenGL никому не нужен. На консолях встречаются графические API, сильно похожие на OpenGL, ну и под Линуксом никакого DirectX нет.<br /><br /><span style="font-style:italic;">-Так все-таки, DirectX или OpenGL?</span><br /><br />Ставьте DirectX. :-)<br />Только DirectDraw смотреть не нужно, им никто не пользуется.<br />В DirectX есть очень хорошие хелпы и примеры, не игнорируйте их.<br /><br /><span style="font-style:italic;">-У меня ничего не работает, ничего не компиляется!</span><br /><br />Вы не одиноки. Поищите ваши ошибки Гуглом, наверняка найдете таких же несчастных.<br /><br />Но будьте готовы к тому, что вы не найдете материалы, где бы вас провели за руку от начала и до конца.<br /> <br /><span style="font-style:italic;">-Да ну, там все по-английски...</span><br /><br />Надо учить английский. На русский переведено мало и для работы этого недостаточно.<br />Как обычно, Google is your friend. Вот что выдает нам поиск по запросу game programming lectures.<br /><a href="http://graphics.im.ntu.edu.tw/~robin/game07/?page_id=5">Game Programming 2007</a><br /><a href="http://pisa.ucsd.edu/cse191/www/">CSE 191: Video Game Programming Seminar</a><br />Обзор книг по программированию игр я делала <a href="http://alenacpp.blogspot.com/2008/01/blog-post.html">здесь</a>. И вот еще открытые <a href="http://alenacpp.blogspot.com/2006/05/blog-post_15.html">исходники игр</a>.<br /><span style="font-style:italic;"><br />-Правда, что все игры разрабоатываются на С++?</span><br /><br />Игры разрабатываются не только на С++. Активно используются также:<br />Python, Lua - Для скриптования игровых движков. Также для скриптования могут использоваться языки, специфичные для данного движка. Например, UnrealScript.<br />C# - утилиты. Очень любим, потому что С++ программистам с ним легко разобраться.<br />C#, Java - серверная часть MMO. <br />Java - используется на мобильных платформах<br />HLSL - используется для программирования шейдеров<br /><br />Знание С++ не то чтобы обязательно, но он в разработке игр используется очень активно и с ним жизнь упрощается.<br /><br /><span style="font-style:italic;">-Что такое игровой движок? У меня уже есть DirectX. Это что, не движок?</span><br /><br />DirectX работает на уровне "нарисовать треугольник". Игровой движок поднимает вас на уровень выше, здесь будут "объект с трехмерной моделью и поведением", "вода" и т.п.<br /><br />Игровые движки бывают разные. Например, может быть только графический движок, но без физики. Вы тогда можете писать физику сами или подключить какой-нибудь движок физики. Также отдельно может идти AI движок.<br /><br />Вам не обязательно нужен движок. Для небольшой игры разделение на движок-скриптование зачастую не имеет смысла. Если хочется поменьше разбираться как оно внутри устроено, а хочется чтобы уже была игра, имеет смысл поработать с готовыми бесплатными движками. Также имеет смысл посмотреть их код. Ну и исходники игр.<br /><br />Примеры бесплатных движков:<br /><a href="http://www.ogre3d.org/">OGRE</a> (<span style="font-weight:bold;">Altren</span> в комментариях настаивает, что в OGRE только графика и ничего другого там искать не надо), <a href="http://irrlicht.sourceforge.net/">Irrlicht</a> - игровые движки, графика там в основном, насколько я помню<br /><a href="http://www.ode.org/">ODE</a> - движок физики<br /><br />Игра - это не только DirectX, не только графика. Если вас интересует устройство на работу в качестве разработчика игр, то посмотрите вакансии игровых контор, посмотрите чего они хотят и вам станет понятнее чего учить (<a href="http://www.epicgames.com/careers/">Epic games</a>, <a href="http://jobs.zenimax.com/index.php?a=info&d=idsoftware">id Software</a>).<br /><br />Вот примеры специализаций игровых программистов, с описанием чего надо знать по каждой специализации. Это роли могут различаться, всё-таки всё сильно зависит от конкретной платформы и компании.<br /><br />Graphics programmer - программист графики. Здесь нужно знание математики (векторы, матрицы, кватернионы). Понимание того, как работают видеокарты, шейдеры.<br />Physics programmer - программист физики. Нужны довольно специфичные знания физики, ну и математика тоже.<br />AI programmer - программист искусственного интеллекта. Алгоритмы на графах (A*, Дийкстра), конечные автоматы...<br />Gameplay programmer, game mechanics programmers - программист игровой механики. Эта роль вызывает больше всего непонимания. Это те программисты, которые пишут в игре всё остальное. Изменение параметров при попадании одного юнита в другого, отображение этого всего в интерфейсе, подгрузка следующего уровня. Куча вот таких мелочей.<br />Interface programmer - разработчик интерфейсов.<br />Network programmer - сетевой программист. Нужны стандартные знания по разработке сетевого кода.<br />Tools Programmer - разработчик утилит. При разработке игры используют дополнительные программы, которые иногда пишутся самостоятельно, иногда покупаются вместе с движком. Пример игровой утилиты - редактор уровней.<br /><br />Также бывают нужны инженеры для поддержка автосборки, программисты аудио, специалисты для работы с базами данных.<br /><br />Для начала не пытайтесь написать игру с нуля. Модифицируйте чужой код, пишите моды.<br /><br />Потом напишите небольшую игру от начала и до конца. Графику либо нарисуйте тестовую, либо найдете в интернете, есть сайты где модели раздаются бесплатно под некоммерческие проекты.<br /><span style="font-style:italic;"><br />-Да, у меня есть отличная идея MMORPG!</span><br /><br />Возьмите любую MMORPG, откройте кредитсы и посмотрите на список людей, которые работали над этим проектом. Далеко не все они страдали там фигней, уверяю вас. Разработка MMORPG - многомиллионный проект с количеством людей, несколько больше одного.Для начала напишите паззл небольшой, напишите арканоид.<br /><br /><span style="font-style:italic;">-Алён, ты что, шутишь?</span><br /><br />ОК, пусть это будет RPG, без MMO. Один, маленький уровень, как можно меньше деталей. Попробуйте получить минимальную играбельную версию.<br /><span style="font-style:italic;"><br />-Алёна, у меня еще куча вопросов!</span> <br /><br />Постараюсь ответить. Но не могу обещать, что отвечу на все :-).<br />Ахинею про то, о чем не знаю, писать не буду. Спрашивайте в комментариях.<br /><br />Ссылки по теме:<br /><a href="http://aigamedev.com/">AIGameDev</a><br /><a href="http://alenacpp.blogspot.com/2010/03/blog-post.html">Вопросы по программированию ИИ в играх</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com74tag:blogger.com,1999:blog-10303035.post-31299316139753099712010-12-08T19:14:00.014+03:002010-12-22T19:20:46.704+03:00Выложили записи моих докладов с ADD-2010Организаторы потихоньку выкладывают <a href="http://addconf.ru/index.sdf">записи докладов с ADD-2010</a>, мои уже выложили.<br /><br />Первый доклад, <span style="font-weight:bold;">Искусственный интеллект в играх</span><br />Про нечестные приемы, про поиск пути и навигацию.<br /><br /><iframe src="http://player.vimeo.com/video/12955832" width="500" height="281" frameborder="0"></iframe><p><a href="http://vimeo.com/12955832">218-Games-AI-add-2010.avi</a> from <a href="http://vimeo.com/belonesox">Stas Fomin</a> on <a href="http://vimeo.com">Vimeo</a>.</p><br />Материалы, которые я использовала для подготовки к докладу:<br /><a href="http://www.reddit.com/r/gaming/comments/coqg7/its_not_fun_if_you_fake_it_rigged_gameplay/">It's not fun if you fake it. Rigged gameplay mechanics are starting to piss me off.</a><br /><a href="http://www.gamasutra.com/view/feature/3920/the_pure_advantage_advanced_.php">The Pure Advantage: Advanced Racing Game AI</a><br /><a href="http://aigamedev.com/open/articles/bugs-caught-on-tape/">18 Embarrassing Game AI Bugs Caught On Tape... and Fixed!</a><br /><a href="http://www.youtube.com/watch?v=fM5kY5t8Bz0">OpenSteerDemo</a><br /><a href="http://blogs.msdn.com/b/shawnhar/archive/2009/12/17/the-psychology-of-randomness.aspx">The psychology of randomness</a><br /><a href="http://cbloomrants.blogspot.com/2010/09/09-06-10-weighteddecayrand.html">WeightedDecayRand</a><br /><a href="http://www.gamespot.com/pc/strategy/civilizationv/video/6253529/gdc-2010-keynote-address-sid-meier">GDC 2010 Keynote Address: Sid Meier</a><br /><a href="http://aigamedev.com/open/tutorials/theta-star-any-angle-paths/">Theta*: Any-Angle Path Planning for Smoother Trajectories in Continuous Environments</a><br /><a href="http://aigamedev.com/open/reviews/near-optimal-hierarchical-pathfinding/">Near-Optimal Hierarchical Pathfinding (HPA*)</a><br /><a href="http://habrahabr.ru/blogs/games/100698/">Сравнение алгоритмов поиска маршрутов в StarCraft и StarCraft 2</a><br /><a href="http://aigamedev.com/open/articles/hole-navmesh-dear-zombie/">There's a Hole in Your NavMesh, Dear Zombie</a><br /><br />Второй доклад, <span style="font-weight:bold;">C++0x</span><br />Я не рассчитала время, доклад получился коротким. Первратим это в плюс. <br />Короткий, но насыщенный доклад про C++0x! Всего на 25 минут, а если вопросы не слушать, то и того меньше!<br /><iframe src="http://player.vimeo.com/video/14457262" width="500" height="281" frameborder="0"></iframe><p><a href="http://vimeo.com/14457262">225-C0xx-add-2010.avi</a> from <a href="http://vimeo.com/belonesox">Stas Fomin</a> on <a href="http://vimeo.com">Vimeo</a>.</p><br /><br /><span style="font-weight:bold;">Updated 09.12.2010:</span><br />Во время доклада был задан вопрос, почему для атрибутов нельзя использовать слово final вместо [[final]]. Там были высказаны предположения, но ответ так и не был дан.<br /> <a href="http://herbsutter.com/2010/12/08/trip-report-november-2010-c-standards-meeting">Отвечает Герб Саттер</a>.<br />Для это пришлось бы использовать контекстный парсинг, а делать это не хотелось, потому что нигде до этого в языке это не использовалось. Но все-таки они решили сделать именно так. И final будет просто final, без каких-либо скобочек.<br /><span style="font-weight:bold;">/Updated</span><br /><br />Материалы, которые я использовала для подготовки к докладу:<br /><a href="http://wiki.apache.org/stdcxx/C++0xCompilerSupport">C++0x features and their support in popular compilers</a><br /><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm">Initializer List proposed wording</a><br /><a href="http://stackoverflow.com/questions/3492742/compile-time-string-manipulation-with-variadic-templates">Compile-time 'String' Manipulation with Variadic Templates</a><br /><a href="http://www-sop.inria.fr/geometrica/events/WG21_meeting_june_2008/public_talks.html">C++0x: An overview, by Bjarne Stroustrup</a><br /><a href="http://www2.research.att.com/~bs/C++0xFAQ.html">C++0x FAQ</a><br /><a href="http://blogs.msdn.com/b/vcblog/archive/2010/04/06/c-0x-core-language-features-in-vc10-the-table.aspx">C++0x Core Language Features In VC10: The Table</a><br /><a href="http://www.aristeia.com/C++0x/C++0xFeatureAvailability.htm">Summary of C++0x Feature Availability in gcc and MSVC</a><br /><a href="http://habrahabr.ru/blogs/cpp/66021/">C++0x. Лямбда-выражения</a><br /><a href="http://www.rsdn.ru/forum/cpp/3778357.flat.aspx">C++0x lambda</a><br /><br />P.S. Лучше все это смотреть в HD и на полный экранAlenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com20tag:blogger.com,1999:blog-10303035.post-50376305684913093782010-11-12T11:40:00.003+03:002010-11-12T11:46:19.046+03:00Статьи про рендеринг в Старкрафт 2"...вашему вниманию предлагается реверс инжиниринг рендера всем известной игры Старкрафт 2, от не менее известной компании Близзард."<br /><a href="http://users.livejournal.com/__vortex__/3391.html">Старкрафт 2: Секреты технологий</a><br /><a href="http://users.livejournal.com/__vortex__/3640.html">Старкрафт 2. Рендер роликов</a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAQrxcDgUYOOUip2KIBmI_SNVfRp3UkOJglkSfG7vQjBkMo65qJNiBOTc1iM8hyx3oQb3gNRtqF5LU5JuZdQ3aYbkQrJ6A4W0oEV0zBzZL1uuxZT877Q_a86mx9kWEjOGBxXadug/s1600/starcarft2-800x600.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAQrxcDgUYOOUip2KIBmI_SNVfRp3UkOJglkSfG7vQjBkMo65qJNiBOTc1iM8hyx3oQb3gNRtqF5LU5JuZdQ3aYbkQrJ6A4W0oEV0zBzZL1uuxZT877Q_a86mx9kWEjOGBxXadug/s400/starcarft2-800x600.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5538581620249162242" /></a><br /><br />via <a href="http://twitter.com/lightypp">lightypp</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com6tag:blogger.com,1999:blog-10303035.post-82975035420263926832010-11-09T18:38:00.005+03:002010-12-01T22:14:26.552+03:00Впечатления от работы с игровыми консолямиМеня тут в комментариях как-то просили рассказать о моих впечатлениях от работы с консолями, вот оно.<br /><br />Пара слов о том, какие бывают игровые консоли. Есть те, которые надо подключать к телевизору, по-русски они обычно называются "приставки". Сейчас наиболее популярны три из них: Microsoft XBOX 360, Sony PS3, Nintendo Wii. Причем Wii всех рвет по продажам.<br /><br />Есть консоли со своим собственным экраном, самые известные - Nintendo DS и Sony PSP.<br /><br />Я работала, конечно, не со всеми. С чем-то работала, про что-то слышала. Все они закрытые, т.е. разработчики не имеют права рассказывать о деталях. Поэтому вот все, что я могу вам рассказать - несколько скупых строк без упоминания подробностей.<br /><br /><span style="font-weight:bold;">Архитектура</span><br />Пришлось работать с довольно странной архитектурой, это непривычно. На консолях любят <a href="http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2">big endian</a>. Что создает, хм, некоторые проблемы, если вам хочется двоичные данные с PC перенести на консоль. А вам этого захочется, потому что у вас все дизайнеры уровней сидят на PC. <br /><br />Также на консолях бывают такие интересные штуки как несколько процессоров или несколько оперативных памятей, что приводят в некоторое смятение человека, только что пришедшего с PC. Но народ в работу включается быстро, и я не вижу каких-то особых проблем с переходом с PC на консоли.<br /><br />В целом приходится сидеть сильно ближе к железу и вот здесь хорошо себя проявляет С++. Здесь вы можете и данные разложить как вам надо, и с полиморфным наследованием поработать.<br /><br />Огромный плюс - консоли везде одинаковые. Например, у вас нет зоопарка видеокарт, как на PC, которые это поддерживают, это не поддерживают, а вот тут у нас драйвер устаревший... И это прекрасно.<br /><br /><span style="font-weight:bold;">Контроль качества</span><br />В играх под PC сложилась такая нехорошая практика - сразу после выхода игры выходит пачка патчей. Здесь с патчами все сложно. Либо их нет совсем, либо их довольно сложно и неудобно выпускать. При этом, если вы играли в игры на консолях, то, возможно, обращали внимание, крэш игры - это что из ряда вон выходящее. Да и вообще багов не видно.<br />Потому что тут существует Контроль Качества. Вам не удастся себя уговорить, что "и так сойдет" и "никто не заметит". По ту сторону вас ждет не пользователь, которому, в принципе, можно навешать лапши на уши, а платформодержатель. И стоит он насмерть.<br /><br />Высокое качество достигается отнюдь не за счет безупречности работы программистов, как почему-то думают менеджеры, которым я про это рассказываю. Программисты тут обычные, в меру раздолбайские. Тщательно выстроен процесс тестирования, на тестировании не экономят.<br /><span style="font-weight:bold;"><br />Закрытость</span><br />Вы не можете задать вопрос в коммьюнити размером с целый мир. У вас есть закрытый форум или список рассылки, это вам не <a href="http://stackoverflow.com/">stackoverflo</a>w. Особого выбора библиотек тоже нет. Радуйтесь тому, что есть. <br /><br /><br />Ссылки по теме:<br /><a href="http://alenacpp.blogspot.com/2008/10/blog-post_10.html">Про консоли</a><br /><span style="font-weight:bold;">Updated 01.12.2010</span><br /><a href="http://ralphbarbagallo.com/2010/11/30/kill-the-gatekeepers/">Kill the Gatekeepers</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com15tag:blogger.com,1999:blog-10303035.post-53591036097627783492010-10-22T18:36:00.000+04:002010-10-22T18:37:00.966+04:00Electronic Arts приоткрыла EASTL<a href="http://gpl.ea.com/">EA открыла немножечко исходников</a>, в том числе EASTL. Насколько я понимаю, далеко не весь. <br />Чтобы не мучаться и не искать EASTL в этих исходниках самим, можно его посмотреть вот здесь: <a href="http://github.com/paulhodge/EASTL">EASTL</a>.<br /><br />Там есть аппетитно выглядящие ссылки типа Sims 3, но исходников симов там нет, увы.<br /><br />В 2007 году у меня был <a href="http://alenacpp.blogspot.com/2007/06/eastl.html">пост про EASTL</a>, где я сказала следующее<br /><blockquote>Если будут какие-нибудь свободно доступные реализации EASTL, интересно было бы их опробовать.</blockquote><br />Прошло три года и счастье наступило. Хотя, когда именно произошло это событие, я не знаю. Никаких официальных пресс-релизов я не вижу. Судя по всему, EA сделала свою версию <a href="http://webkit.org/">WebKit</a>, который под LGPL, и ей пришлось выложить исходники, куда попала часть EASTL.<br /><br />Ссылки:<br /><a href="http://msinilo.pl/blog/?p=668">EA STL released, updated benchmarks</a> - здесь я узнала об этой новости. Как видно из заголовка, там в статье есть бенчмарки<br /><br />Есть чем заняться на выходных :-).Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com11tag:blogger.com,1999:blog-10303035.post-54054139083787585052010-09-16T23:39:00.012+04:002010-09-17T11:58:25.435+04:00Игра Alien Swarm, с исходникамиЭтим летом Valve сделала жест невиданной щедрости. Они совершенно нахяляву выложили на Steam игру Alien Swarm. И <strike>полные</strike> исходники к ней. Я знаю, народ постоянно ищет исходники, чтобы по ним поучиться, вот оно.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6oqotkG-Et2HcnmZ-Y_OU0n-U6NZeLU3KR4rOMI0jao5aVM1n9D-RSx3cH_S9B3K84B3asd9Y6dnrZ7PqB4otqN3Mny8xhycAIvV3-SmvJgn_MFYuG3f6RxLXp0g-aqddKEW3Xw/s1600/alienswarm.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6oqotkG-Et2HcnmZ-Y_OU0n-U6NZeLU3KR4rOMI0jao5aVM1n9D-RSx3cH_S9B3K84B3asd9Y6dnrZ7PqB4otqN3Mny8xhycAIvV3-SmvJgn_MFYuG3f6RxLXp0g-aqddKEW3Xw/s400/alienswarm.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5517611766172872946" /></a><br /><br /><span style="font-weight:bold;">Updated 17.09.2010:</span><br />Дополнения по результатам разбирательства с исходниками, поисков в интернетах и комментариев:<br />Игра сделана на движке <a href="http://ru.wikipedia.org/wiki/Source">Source</a> и исходников самого движка нет. Причем, по слухам, движок этот в AlienSwarm модифицирован. Итого - нету кода рендера, физики. Зато AI, похоже, весь есть, по крайней мере все, что мне было нужно, я нашла.<br />Разбирательства с тем, чего есть, а чего нет, затруднены из-за отсутствия какой-либо документации. Есть <a href="http://developer.valvesoftware.com/wiki/Alien_Swarm_SDK">wiki по AlienSwarm</a>, информации там мало.<br />Написан AlienSwarm на С++, а не на своем скриптовом языке, это приятно.<br /><span style="font-weight:bold;">/Updated 17.09.2010:</span><br /><br />Давайте я расскажу как это все скачать и куда смотреть, это не очень тривиальный процесс.<br /><br />Сначала надо зайти на <a href="http://store.steampowered.com/app/630/">Steam и инсталлировать Alien Swarm</a>. Если вы там не зарегистрированы, вам предложат зарегистрироваться. И заставят скачать и установить их клиента. Игра здоровая! Что-то типа гигабайта.<br /><br />Исходники Alien Swarm устанавливаются из Steam клиента из меню Tools.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX_Q2axTtoZRlpVey9gNZoMjEOtEuwVK9ylBYY3t-VIFnAV7fVDEnxBr1xdvgoJobnnwcv4UGKI7rmaHTmbHiOL6HAzqDUYTOtuqIUty0z4CT-Te5Cw_1jbmIBnibmtp9yjmV9Vg/s1600/steam-tools.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 264px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX_Q2axTtoZRlpVey9gNZoMjEOtEuwVK9ylBYY3t-VIFnAV7fVDEnxBr1xdvgoJobnnwcv4UGKI7rmaHTmbHiOL6HAzqDUYTOtuqIUty0z4CT-Te5Cw_1jbmIBnibmtp9yjmV9Vg/s400/steam-tools.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5517600479861267282" /></a><br /><br />Исходники приедут вот сюда, это путь по умолчанию<br />C:\Program Files\Steam\steamapps\common\alien swarm\sdk_src<br /><br />Наверняка вам понадобится дебагная консоль, она включается в Опциях.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc59CbPsNLn699OJgCi4gjmJMVvvZc_vZ-8nXn7I20YuGZ-59KDYQ_xiS9_mrVGGS1SRO8SVs888rlxAfQi0ZjhpwKEewtihrUFn5DQvg_rsMtdDnKloeDhEJJCOBQaQHyy-bkow/s1600/steam-enable-console.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc59CbPsNLn699OJgCi4gjmJMVvvZc_vZ-8nXn7I20YuGZ-59KDYQ_xiS9_mrVGGS1SRO8SVs888rlxAfQi0ZjhpwKEewtihrUFn5DQvg_rsMtdDnKloeDhEJJCOBQaQHyy-bkow/s400/steam-enable-console.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5517607211405097410" /></a><br /><br />Вызывается по тильде, ~<br /><br />Консоль выглядит вот так:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNCRQEVQSu02Zhejy2llVywdRzTCmBKqnhMR0WEirSUj1vTceQtZCvequ9-NQDnb8K1oUHOyx03pgiSjZtn6DEI4ZpMQ3r6NdVN7cauQPrzlVra7bP4AfngEgYPedNZHOLBMnARw/s1600/alienswarm-console.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNCRQEVQSu02Zhejy2llVywdRzTCmBKqnhMR0WEirSUj1vTceQtZCvequ9-NQDnb8K1oUHOyx03pgiSjZtn6DEI4ZpMQ3r6NdVN7cauQPrzlVra7bP4AfngEgYPedNZHOLBMnARw/s400/alienswarm-console.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5517610425697739778" /></a><br /><br />Команды дебагной консоли, которыми я пользовалась<br />ai_nodes - показывает все waypoint графа<br />ai_show_connect - показывает связи между точками waypoint графа<br /><br />Сейчас еще пороюсь, может еще чего хорошее найду.<br /><br />Ссылки по теме:<br /><a href="http://aigamedev.com/open/reviews/alienswarm-node-graph/">Are Waypoint Graphs Outnumbered? Not in AlienSwarm!</a><br /><a href="http://forums.steampowered.com/forums/showthread.php?p=16195532">Alien Swarm SDK tutorials </a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com10tag:blogger.com,1999:blog-10303035.post-62643710293830910732010-07-14T19:05:00.003+04:002010-07-14T23:29:10.545+04:00Paris Game AI Conference 2010. Общие впечатленияВы думали, про конференцию уже всё? Нифига.<br /><br />Я причесала старые два поста. Все общие замечания про конференцию я вынесла сюда. Дописала недостающие куски, добавила фотографии, добавила ссылки на слайды, которые выложил Шампандар. <br /><br />Кроме меня отчеты уже написали: <a href="http://aigamedev.com/open/coverage/paris10-report/">Шампандар</a>, <a href="http://digestingduck.blogspot.com/2010/06/greetings-from-paris-game-ai-conference.html">Микко Мононен</a> и <a href="http://blog.bjoernknafla.com/notes-from-paris-game-ai-conference-2010">Бьярн Кнафла</a>. У Шампандара много фотографий хорошего качества, его жена фотографировала. Микко в отдельном посте <a href="http://digestingduck.blogspot.com/2010/07/my-paris-game-ai-conference.html">выложил слайды и сурсы</a>.<br /><br />Когда я упоминаю Шампандара, вопрос, который мне чаще всего задают "а кто это?". Это программист, специализирующийся на игровом ИИ, ведет <a href="http://aigamedev.com/">aigamedev.com</a>, работает по контрактам на разные девелоперские конторы. Работал в компании Rockstar, работал над Killzone 2. Организовал конференцию, о которой я так много рассказываю, за что ему большое спасибо.<br /><br />Я до этого была только на русскоязычных конференциях, тут же была жуткая смесь европейских языков. Очень много франкоговорящих товарищей. И еще разные акценты английского. Неожиданно сложно было понимать финский и итальянский акценты. Русских не встречала, вообще русскоговорящих не было.<br /><br />Но программеры, они все прям как у нас. Во время кофе-брейков многие мялись и мучались. Я тоже мялась и мучилась. Тяжело это - общаться.<br /><br />Веселый студент из Дублина, который сидел рядом со мной, выдвинул интересную теорию. Докладчики отличались по поведению в зависимости от специализации: там были бизнесмены, программисты и преподаватели из вузов. Бизнесмены держались уверенно, напористо и складно говорили, преподаватели также были уверены, но без напора, программисты же с видимым усилием боролись с желанием спрятаться под стол.<br /><br />Шампандар круто управлял временем, расхождения с расписанием у него были максимум минут десять. Для тех, кто раньше бывал на конференциях, это много о чем должно сказать. Как он это делал: во время вопросов и ответов он в какой-то момент объявлял "следующий вопрос - последний". И все. <br /><br />Главный недостаток конференции - отсутствие WiFi. Я и еще два чувака нылись по этому поводу в твиттере всю конференцию. Меня это сильно расстроило, потому что я планировала создать эдакий эффект присутствия. Твитить, даже запостить видео. Вот вам видео, чего добру пропадать.<br /><object width="425" height="355"><param name="movie" value="http://www.youtube.com/watch?v=Us0cSWIk0S0"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/Us0cSWIk0S0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object><br /><br />CNAM<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdqqVgJH7JT_U5NGcy6rZismfMrhQYDjEtXclqoHjC98mK_FIYVfdPsWrihQF0zolIhYG-bThzd_phHwArJRRKMnT4Tw7suJ7EH9MgwmghvEgR8TOODJb1mx_A8GQXUOnyDp0RUg/s1600/P1050280.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdqqVgJH7JT_U5NGcy6rZismfMrhQYDjEtXclqoHjC98mK_FIYVfdPsWrihQF0zolIhYG-bThzd_phHwArJRRKMnT4Tw7suJ7EH9MgwmghvEgR8TOODJb1mx_A8GQXUOnyDp0RUg/s400/P1050280.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493762198903312370" /></a><br /><br />Указатель<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFBYfMmtWtfkGs7WKtLO75bwJf_S74zPq3Mi7ixGIatyGPPlN_n5rZreU2H1TbWav24vU9zHILB2p8wpTvymrJyHx-LXya4dO8eMhr4vqHEbQgrSRb8_r6BJYgOJYbeU1JXE66pg/s1600/P1050277.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFBYfMmtWtfkGs7WKtLO75bwJf_S74zPq3Mi7ixGIatyGPPlN_n5rZreU2H1TbWav24vU9zHILB2p8wpTvymrJyHx-LXya4dO8eMhr4vqHEbQgrSRb8_r6BJYgOJYbeU1JXE66pg/s400/P1050277.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493762193201945314" /></a><br /><br />Нам туда, вниз<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoA72M2PVwGMlWLxGdjds585-bTRBJ-EKqw-s59RFE5V5rqPjj1LhBqbIj9wzeJiPrDqQVSn2rh6LynRsu_ubw-3teOZ7VrMbWFUorDhoXX3FxxC_aflw33UmJCwNTuP4U1j_gkg/s1600/P1050320.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoA72M2PVwGMlWLxGdjds585-bTRBJ-EKqw-s59RFE5V5rqPjj1LhBqbIj9wzeJiPrDqQVSn2rh6LynRsu_ubw-3teOZ7VrMbWFUorDhoXX3FxxC_aflw33UmJCwNTuP4U1j_gkg/s400/P1050320.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493762204704390642" /></a><br /><br />Я получила бэджик!<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh005DXR96H9WF0R6yfLTNhf2Ph68Nnau60oI1eDB78KsTIwUpbK4iE-Fs-gwIPEVTRjOUgF6AFpI9IfpF0n4ch1gBwi6K6twxLpGCDqkZCrhsRpfbKoa9MGYA_ohWcnS1X1BDwEA/s1600/P1050268.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh005DXR96H9WF0R6yfLTNhf2Ph68Nnau60oI1eDB78KsTIwUpbK4iE-Fs-gwIPEVTRjOUgF6AFpI9IfpF0n4ch1gBwi6K6twxLpGCDqkZCrhsRpfbKoa9MGYA_ohWcnS1X1BDwEA/s400/P1050268.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493762185196244114" /></a><br /><br />Зачем-то были закрыты последние ряды. Не знаю зачем.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4Qw05yOJ3ShiDQ_tUJALNHYcRdKLcLaEdm2VbmccogPEjZ7ElaZ4A5jatP8IvzP0vx0sLSqtBQHteAEZs6m3gtiBdOqoc3hxc4a4odCsgtdUvtJg_W3gSOwMXIaztrOVGxsm0kw/s1600/P1050289.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4Qw05yOJ3ShiDQ_tUJALNHYcRdKLcLaEdm2VbmccogPEjZ7ElaZ4A5jatP8IvzP0vx0sLSqtBQHteAEZs6m3gtiBdOqoc3hxc4a4odCsgtdUvtJg_W3gSOwMXIaztrOVGxsm0kw/s400/P1050289.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493762212736417986" /></a><br /><br />Конференция была несколько омрачена традиционной французской забавой - забастовкой. Трудящиеся массово бастовали в связи с реформой пенсионной системы. Как несложно догадаться, условия выхода на пенсию меняют в худшую сторону. В связи с чем не работал некоторый транспорт, были отменены авиарейсы. Тут очень хорошо выступил спонсор - рекрутинговая компания Game Talents. Они обновляли информацию о ситуации в аэропортах на доске объявлений в реальном времени (WiFi, как мы помним, отсутствовал). Также они обещали отвезти людей в аэропорты. Отвезли или нет - не знаю, а вот доску объявлений видела своими глазами.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYw6xcV2tciDX4H-d1l1Qah2bsGOu2N3r30rF2iAbGiBWti9jGGrgeTL8WA4LYcvuQy3SFgBxQfJS0EpN29Gyqlzdtf1CYQXU0w_jMFobgp_6doRYDhE5wOd9k1HmVuB1P-rBPug/s1600/DSC00050.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYw6xcV2tciDX4H-d1l1Qah2bsGOu2N3r30rF2iAbGiBWti9jGGrgeTL8WA4LYcvuQy3SFgBxQfJS0EpN29Gyqlzdtf1CYQXU0w_jMFobgp_6doRYDhE5wOd9k1HmVuB1P-rBPug/s400/DSC00050.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493777615605219202" /></a><br /><br />Программка и бэджик<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinlQnwRSDtHsRMrIOW42Bk2A8P_B_K9r3RVPLoG4UMJhfgMxinm-AaMuuldz0bYuXQSFNwi7EhkFaAla4Wj8t4rmrYW4oV_QXbVrgU8tNDhwMDNElBfQvbrWkC4YKdcB0sZEl-0w/s1600/P1050302.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinlQnwRSDtHsRMrIOW42Bk2A8P_B_K9r3RVPLoG4UMJhfgMxinm-AaMuuldz0bYuXQSFNwi7EhkFaAla4Wj8t4rmrYW4oV_QXbVrgU8tNDhwMDNElBfQvbrWkC4YKdcB0sZEl-0w/s400/P1050302.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087147843851106" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi29eht5F4pOF3yi59haRZGt0nzkR3Ia_zm5uak5hddAkIhNWzjBGfWENRRPNW_5ZXV0kmMcWLDHLVKlKvfOO-Nu_7ZCjfR023a8xgjrqrAY3mCiVJ8rK0Eds_vg-dRG7e1gQK8NQ/s1600/P1050303.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi29eht5F4pOF3yi59haRZGt0nzkR3Ia_zm5uak5hddAkIhNWzjBGfWENRRPNW_5ZXV0kmMcWLDHLVKlKvfOO-Nu_7ZCjfR023a8xgjrqrAY3mCiVJ8rK0Eds_vg-dRG7e1gQK8NQ/s400/P1050303.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087155847314530" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRuICMs28RivxAojUMvkXp3rZ-VT4l4B9kQMjzAwLlV4GBnzafn43X4SiVGtzvFSCME2WaNx6vbc5MkF8DF1nL3xaz_8Op1R9WMBVI2h2WcFs3xSCW4kGhqSUV82uRGhqwVDYhhw/s1600/P1050304.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRuICMs28RivxAojUMvkXp3rZ-VT4l4B9kQMjzAwLlV4GBnzafn43X4SiVGtzvFSCME2WaNx6vbc5MkF8DF1nL3xaz_8Op1R9WMBVI2h2WcFs3xSCW4kGhqSUV82uRGhqwVDYhhw/s400/P1050304.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087162962744626" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf8cZQzKziRQpmG_XeXLTTL9V9pmbVwCYi8Rw3GtBxhqoo-ZqNtNk8uVdwqAp1kY1hN3LNnoz1hmWNcXKQ2hnlMac_p0GcjDg0zYzrypHWBoAwIfdon9b2oen1kvB14uq4LAkM2Q/s1600/P1050305.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf8cZQzKziRQpmG_XeXLTTL9V9pmbVwCYi8Rw3GtBxhqoo-ZqNtNk8uVdwqAp1kY1hN3LNnoz1hmWNcXKQ2hnlMac_p0GcjDg0zYzrypHWBoAwIfdon9b2oen1kvB14uq4LAkM2Q/s400/P1050305.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087167356543154" /></a><br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid2lLM4KH9ikCg5VugQan8uMpil0wB-rCwezAL0e_9A6ZknfHmAEo-2DOHH6r9TB05CRvKeBVN4rnPDXuhhQIYtCQh5La9VfslWNQIludqXEj2B-294vOwNLyPtkjCQpfXbi5LHg/s1600/P1050306.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid2lLM4KH9ikCg5VugQan8uMpil0wB-rCwezAL0e_9A6ZknfHmAEo-2DOHH6r9TB05CRvKeBVN4rnPDXuhhQIYtCQh5La9VfslWNQIludqXEj2B-294vOwNLyPtkjCQpfXbi5LHg/s400/P1050306.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087174883097522" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpVDGr1OoUGqanUwWd1NWnYGr2DCudoRChBFzC2qnzZaODF4BjTApx-Dpn5_-mtbUAcYYqBYTrLpwacjzuBS8WVqIyLn03x6SpYNjFBRxNfykqNNRWyvwycEz4whNf11lflq2-WQ/s1600/P1050308.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpVDGr1OoUGqanUwWd1NWnYGr2DCudoRChBFzC2qnzZaODF4BjTApx-Dpn5_-mtbUAcYYqBYTrLpwacjzuBS8WVqIyLn03x6SpYNjFBRxNfykqNNRWyvwycEz4whNf11lflq2-WQ/s400/P1050308.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087710001826674" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8CcWs6I2XrMcskG3953H39M4JiW3QPBLaASfUA-qAAdBFmpVX-44L8m-aDicQ6CyYLwfABGUwuPCwNpIULQipEUoorbbJ54Jbgcan3L02VeVTFkghV_lOk0VzLDeNyk_aFbS3QA/s1600/P1050307.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8CcWs6I2XrMcskG3953H39M4JiW3QPBLaASfUA-qAAdBFmpVX-44L8m-aDicQ6CyYLwfABGUwuPCwNpIULQipEUoorbbJ54Jbgcan3L02VeVTFkghV_lOk0VzLDeNyk_aFbS3QA/s400/P1050307.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087704253341186" /></a><br /><br /><br />Еще один минус, правда организаторы конференции тут ни при чем... В Париже, да и вообще во Франции, очень странные отели. Там тебя подстерегают неожиданности. Например, ты входишь в номер и входишь прямо в кровать. Или вот: кондиционер есть, но в шкафу. В одном номере у нас раковина была прямо в комнате. В каких-то ситуациях это даже удобно, на утро после верчеринки можно одним броском с кровати засунуть голову под кран с холодной водой. <br />Будьте готовы, короче, если соберетесь поехать.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com12tag:blogger.com,1999:blog-10303035.post-31587585836287143692010-06-24T22:52:00.008+04:002010-07-14T19:07:50.686+04:00Paris Game AI Conference 2010. День второйКонференция уже закончилась, рассказываю о том, что было сегодня.<br /><br />Все началось с рассказа Паоло Манинетти про гоночный симулятор. Машины и мотоциклы у них едут по идеальной траектории. На это линии есть целевая точка на определенном расстоянии и машина стремится к ней приблизиться. Траектория содержит в себе информацию об идельной скорости. Когда машин много двигают целевую точку, чтобы избежать столкновения. Они пытаются анализировать информацию о том, что происходит на дороге, пытаются определить опасные ситуации. Это отражается на производительности.<br />Показывали демки с отладочной информацией. Дебагная информация у них богатая.<br />Искали золотую середину между честной игрой и читерством. Говорят, что чем честнее, тем правдоподобнее. Но тем дороже по производительности. <br />Каждая трасса тюнится руками, можно в нее записать что-то дополнительно.<br /><a href="http://files.aigamedev.com/coverage/GAIC10_PaoloManinetti.pptx">Physics-based Racing AI[.pptx]</a><br /><br />Battlefield: Bad Company 2<br />В соседней аудитории одновременно с нами проходило еще какое-то сборище, они там громко пели хором. Это придало докладу неповторимую атмосферу.<br />Первую часть этой игры много критиковали за AI, поэтому над AI серьезно поработали.<br />В игре (они сокращали ее название до BF) есть дружественные агенты. Их сложнее делать, чем вражьих, потому что враги быстро дохнут и если в них и есть какие глюки, то это незаметно. <br />Также там есть разные виды юнитов - пехота, машины, танки, вертолеты. И мир разрушаемый.<br />Показали демку, спросили, не заметил ли народ чего подозрительное. Я не заметила, однако были люди, которые просекли, что там танк телепортируется. Причем дважды. <br />Улучшили анимации смерти - их, правда, всего пять секунд на экране видно.<br />Сделали автоматическое определение укрытий. Т.е. укрытие должно быть достаточно высоким, защищать от врага. Определяли, нужно ли вставать, чтобы выстрелить в врага или надо уйти в сторону.<br />Читят они, да. Про танки вы уже поняли. Еще солдаты у них не бегут слишком близко к игроку. И если резко развернуться, то это заметно, выглядит глупо. Солдат тоже телепортируют.<br />Итого:<br />-80% bulk AI<br />-20% memorable moments<br />Слайды у них красивые были. Модные такие, с вертолетом.<br /><a href="http://files.aigamedev.com/coverage/GAIC10_MikaelHedberg.ppt">Building the BATTLEFIELD AI Experience[.ppt]</a><br /><br />Дальше была panel discussion. Там были Брюс Блумберг, Фредерик де Кастер (Creative Assembly), Ульф Йохансен (IO Interactive). Говорили про контроль качества.<br />Тестеры отрывают разработчиков от работы, когда находят багу, потому что AI баги сложно повторить. Брюс Блумберг рассказывал, что у них был тестер, которого они прозвали Ангелом Смерти. Если он входил в комнату, значит придется задержаться.<br />Делают плейтесты. По времени прозвучала оценка полдня в неделю. <br />Фредерик из Creative Assembly рассказывал, что у каждой команды есть доска, они туда пишут над чем работают сейчас, над чем будут работать.<br />Ульф рассказывал про их smoke тест. Если игра после запуска работает 40 секунд, то тест пройден. У них есть автоматические тесты. Для повышения воспроизвоимости есть AI fight recorder.<br />Брюс рассказывал, что у них можно законнектить игру с их тулзой, где отображается граф поведения и можно открутиться назад и посмотреть что происходило. <br /><br />Дальше Щампандар рассказывал про Multi-threading AI, в основном про то, как оно много и интересно глючило, а он его отлаживал.<br />Использовал Intel TBB.<br />Высказал следующую мысль: When dealing with multithreading, denial is a very useful tool to use.<br /><a href="http://files.aigamedev.com/coverage/GAIC10_AlexChampandard.pptx">Multithreading in Practice: Uncensored and Uncot[.pptx]</a><br /><br />Дальше был доклад про EVE online characters<br />Рассказывали, что когда игрок подходит к ботам и они на него не реагируют, это выглядит странно. Показали несколько роликов. Действительно странно. <br />Они сделали некий AI social engine и будут вставлять его в EVE online. Здесь было много информации из области социологии, формирование кластеров общающихся людей, очереди, F-formations. <br /><a href="http://files.aigamedev.com/coverage/GAIC10_ClaudioPedica.ppt">Human Territoriality for EVE Online's Socially Smart Characters[.ppt]</a><br /><br />Дальше был гвоздь программы, Кен Перлин, который Perlin noise, рассказывал про процедурную анимацию. Много говорил о том, что надо делать персонажей более убедительными, живыми. И в процедурную анимацию легче вносить изменения. Чем-то мне это все напомнило Spore. По каким-то базовым принципам генерится анимация персонажей. В зависимости от того, как он анимирован, он может казаться, испуганным, веселым, смущенным, агрессивным. Даже если это не антропорморфная фигурка, а треугольное не пойми что. Здесь опять же было много демок, без них говорить сложно.<br /><br />Здесь могла бы быть красивая фотография Кена Перлина на фоне его слайда с бущующим морем и надписью Why procedural methods are cool. Не получилось.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj7gdOmaBcW12M-Psoo8s6E1sP6yTs0f1OZxXJoYUGdcUvNr2yAfJMycgVOnH8i5VbNTWOgg_4zBWlxcLwNUgdPDNeZ_WsR1ciFxa5lYAvpA0c_B1T1_S6LuMUBvv8v4YFDhW6FA/s1600/DSC00052.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj7gdOmaBcW12M-Psoo8s6E1sP6yTs0f1OZxXJoYUGdcUvNr2yAfJMycgVOnH8i5VbNTWOgg_4zBWlxcLwNUgdPDNeZ_WsR1ciFxa5lYAvpA0c_B1T1_S6LuMUBvv8v4YFDhW6FA/s400/DSC00052.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493776638047450770" /></a><br /><br /><br />Дальше были заключительные слова, организаторы конференции порешили, что Cheating is win, что Pathfinding jokes when struggling to return to the hotel - это плохая идея. Что next big thing - это взаимодействие людей и социальный аспект, то есть то, о чем были последние два доклада. <br />Шампандар обещал конференцию в следующем году в это же время, наказал ничего другого на эти дни не планировать.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com6tag:blogger.com,1999:blog-10303035.post-27498799607420199242010-06-24T00:40:00.010+04:002010-07-14T19:07:57.594+04:00Paris Game AI Conference 2010. День первый.Обещала отчитываться о конференции, выполняю обещание. <br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2sfoFNyneFh0S3dBJRb-xu6iSAOCHLV3de9uDQp9flZI7_peWdBlSh1RWfEUlW0k3vFYu89EM4RlotxcHkpDlofYk5Mmmt-Rt96996u-Fc5TGbWr-Aa6Upz-eC8iu2Pcnb_UQKQ/s1600/P1050271.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2sfoFNyneFh0S3dBJRb-xu6iSAOCHLV3de9uDQp9flZI7_peWdBlSh1RWfEUlW0k3vFYu89EM4RlotxcHkpDlofYk5Mmmt-Rt96996u-Fc5TGbWr-Aa6Upz-eC8iu2Pcnb_UQKQ/s400/P1050271.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5487933292750559778" /></a><center>На фотографии Фил Карлайл всех ждет</center><br />Сегодня все началось с введения, где выступали Шампандар и Карлайл. Про тренды меня спрашивали в комментариях. Про тренды тут как раз и было, записывайте: социальные игры, ИИ толпы, генерация контента.<br /><br />Дальше выступали три дизайнера, очень просили программистов думать не о том, чтобы применить наиболее крутую технологию, а о том, что увидит игрок.<br /><br />Дальше выступил Брюс Блумберг. Он рассказывал об игре World of Zoo, об ИИ животных в зоопарке. Здесь было много красивых роликов. Для анимации они использовали <a href="http://aigamedev.com/open/articles/hfsm-gist/">HFSM</a>, для поведения животных "что-то вроде behavior trees".<br />Его слайды: <a href="http://">Intimate Conversations with Interactive Animated Characters[.pdf]</a><br /><br />Выступили ребята с коротенькими презентациями различных миддлварей. Здесь я узнала, что Autodesk Kynapse используют Intel TBB и довольны. <br />MASA специализируются на безопасности, но также делает ИИ миддлварь, показывали ролики с драками, использующими <a href="http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D1%85%D0%B2%D0%B0%D1%82_%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F">мокап</a>. Ролики красивые. <br />Ребята из PathEngine не используют флоаты и деление тоже не любят, потому что медленно.<br />Ребята из Havok'а показали совершенно потрясающую демку с крутящимися вентиляторам, между которыми ходят боты. Это они хвастались своей работой с мобильными препятствиями. Спросила их про эту демку во время кофе-брейка. Сказали, что в Интернет они ее, может, и выложат, а вот детали реализации разглашать не могут. Также рассказывали о том, что умеют генерить <a href="http://en.wikipedia.org/wiki/Navigation_mesh">NavMesh</a> динамически.<br /><br /><br />Navigation Loop, Микко Мононен <br /><a href="http://digestingduck.blogspot.com/2010/07/my-paris-game-ai-conference.html">Navigation Loop, слайды и исходники</a><br />Рассказывал про агентов, которые вместо того, чтобы сталкиваться, кооперируются друг с другом с тем, чтобы выработать траектории, которые не столкнутся. Здесь было много красивых демок.<br />К нему было много вопросов. Спросили про нейронные сети. Ну какая ИИ конференция без нейронных сетей. Так вот, Микко Мононен нейронные сети не любит и их не использует. <br />Также его спрашивали, чего это у него все демки работают с окружностями, что делать с более сложными формами. Ответ Микки: с более сложными формами работать, хм, сложнее, поэтому работаем с окружностями.<br /><br />Дальше опять panel discussion. Это когда несколько человек сажают в ряд и задают им вопросы, а они отвечают.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgysQoPChV-Vmq5Bm6cAUgmGK5WMptY0a1VODJ_QUGAlIYOQttg1dCXI9H36IGDCYCuflRqC8L8mpQT0jhk2fy1tb02xUN4_5h0bNlad0zL8b3hwjmhOo4iLgFbggEbxtd_2l6LMg/s1600/P1050288.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgysQoPChV-Vmq5Bm6cAUgmGK5WMptY0a1VODJ_QUGAlIYOQttg1dCXI9H36IGDCYCuflRqC8L8mpQT0jhk2fy1tb02xUN4_5h0bNlad0zL8b3hwjmhOo4iLgFbggEbxtd_2l6LMg/s400/P1050288.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5487932689094330210" /></a><br /><br />Здесь были (справа налево): Алекс Шампандар, Микко Мононен, Кен Перлин, тот самый, который <a href="http://ru.wikipedia.org/wiki/%D0%A8%D1%83%D0%BC_%D0%9F%D0%B5%D1%80%D0%BB%D0%B8%D0%BD%D0%B0">Perlin noise</a> и два разработчика <a href="http://ru.wikipedia.org/wiki/Heavy_Rain">Heavy Rain</a>. Оба французы, оба произносили Heavy Rain с французским акцентом, "эви рейн" у них получался.<br />Обсуждали генерацию толпы. Здесь я узнала, что в Heavy Rain'е используется для толпыт fluid simulation (эмуляция жидкостей), они пробовали flocking (один из видов <a href="http://www.red3d.com/cwr/steer/">steering behaviors</a>), но оно плохо работало для 1000+ человек, большая нагрузка на CPU была. Также они там читят, людей телепортируют иногда. <br />Спросили их, есть ли какая-то специальная обработка ситуации, когда игрок следует за одним агентом в толпе. Один из них сказал, что следовать за кем-то одним невозможно, потому что народу слишком много. "И потому что у нас телепорт" - добавил второй.<br />Еще сказали, что motion capture толпы людей непонятно как делать, потому что люди друг друга будут скрывать. <br /><br />Байлор Ветцел рассказывал о бесчеловечных экспериментах над студентами. В простой игре с боями в стиле Heroes of Might and Magic реализовал несколько стратегий боя. Некоторые умные - они пытались атаковать самых сильных противников. Некоторые - откровенно дурацкие, типа первым атаковать противника с самым длинным названием или атаковать противников по очереди сверху вниз. Просил угадать какая именно стратегия где используется. Угадывали плохо. Просил оценить каждую из стратегий по трем критериям: Fun, Difficulty и Realism. Выяснил, что Random - один из топовых по Fun'у. Также выяснил, что Difficulty и Realism связаны друг с другом, а вот с Fun'ом никак не связаны.<br /><a href="http://files.aigamedev.com/coverage/GAIC10_BaylorWetzel.ppt">Inside Your Players' Mind With Playtesting[.ppt]</a><br /><br /><br />Гваредд Маунтайн рассказывал про психологические опыты в SILENT HILL: SHATTERED MEMORIES.<br />В процессе игры игроку предлагается беседовать с психологом. По этим беседам состовляется психологический портрет играющего, и в зависимости от него меняется контент. От этого зависело будете ли вы беседовать с секси копом или просто с копом. Меняются одежда людей, мебель, внешний вид монстров. <br />Контента у них было много. Минимум 3 варианта каждой сцены.<br />Производит сильное впечатление. Но при этом игра больная на всю голову. Да простят меня поклонники Silent Hill. <br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizbm3zEURofEUppkOt4aneT-7wzXV2DbiFPwG-ljt_Qc-A76c29_l2EDWnp4nVFfpj4_AocbyQWiwkBZRCwifJTzpKkLvLr0eX0feH4tIkuGUpYD5wCNkotj_KdXOEJTUzgByhRw/s1600/P1050293.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizbm3zEURofEUppkOt4aneT-7wzXV2DbiFPwG-ljt_Qc-A76c29_l2EDWnp4nVFfpj4_AocbyQWiwkBZRCwifJTzpKkLvLr0eX0feH4tIkuGUpYD5wCNkotj_KdXOEJTUzgByhRw/s400/P1050293.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5487933616280544146" /></a><br />Один из задававших вопросы отметил, что идея отличная, но ее бы лучше использовать для чего-нибудь более полезного.<br /><a href="http://files.aigamedev.com/coverage/GAIC10_GwareddMountain.ppt">Personality Profiling in SILENT HILL: SHATTERED MEMORIES</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com3tag:blogger.com,1999:blog-10303035.post-73628715361009929262010-05-31T23:50:00.010+04:002010-06-09T18:03:50.846+04:00Вышел Robocalypse - Beaver Defense<span style="font-weight:bold;">Updated 07.06.2010</span><br />Nintendo Life 8/10<br /><a href="http://wiiware.nintendolife.com/reviews/2010/06/robocalypse_beaver_defense">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.</a><br /><br />IGN 7/10<br /><a href="http://wii.ign.com/articles/109/1094874p1.html">The silly style's still the same, but this is a whole different kind of Robocalypse.</a><br /><br /><a href="http://www.gamespot.com/wii/strategy/robocalypsebeaverdefense/player_review.html?id=723713&tag=all-about;review1">Какой-то пользователь gamespot'а поставил 9/10. Это не официальный рейтинг, но все равно приятно.<br /></a><br />Отзывы тех, кто играл, в основном положительные.<br />Выдыхаем...<br /><hr><br /><span style="font-weight:bold;">Updated 04.06.2010</span> Сегодня, 4 июня, Бобер вышел и в Европе (31 мая был релиз на Северную Америку). Подозреваю, что это должно означать, что его видно в российском Wii Store. У кого есть Wii посмотрите, плз...<br /><hr><br />Сегодня вышел <a href="http://www.robocalypse.com/WiiWare/">Robocalypse - Beaver Defense</a>, на котором я была ведущим программистом, а также временами менеджером. Жанр игры - Tower Defense. Платформа - Nintendo Wii, вернее WiiWare - это игры под Wii, которые можно скачивать через online-магазин. Сюжет игры строится вокруг злобного бобра, который решил всех поработить. Он насылает на вас орды роботов, вам надо строить башни и от него обороняться.<br /><br />Со мной вместе работало много других хороших людей (не стала ставить ссылки на блоги, вдруг кто шифруется, напишите мне мылом или в комменты, я поставлю ссылки). Мы использовали прекрасный codebase предыдущего <a href="http://www.robocalypse.com/NintendoDS/">Robocalypse</a>'а, за что его авторам большое спасибо.<br /><br />Было интересно поработать с консолью, много отличий от работы с PC. И да, телевизор в качестве устройства вывода - это ужасно.<br /><br />Теперь ждем реакции игроков, нервничаем.<br /><br />Скриншоты<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPCJ_RGcLFoYE4LDnJg-8p4iHj6dkz6O-evJ9CTfXTH02AzzbnfteKHjF4OqV80KiQFlGh-Gpf-_Cjih9kbgDkG1JSly_80WkE7lW4uyKJ6LshXD8REyXXqY3NTX-KW4wjuAM1Kg/s1600/Robocalypse_BD_screenshot_08.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 224px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPCJ_RGcLFoYE4LDnJg-8p4iHj6dkz6O-evJ9CTfXTH02AzzbnfteKHjF4OqV80KiQFlGh-Gpf-_Cjih9kbgDkG1JSly_80WkE7lW4uyKJ6LshXD8REyXXqY3NTX-KW4wjuAM1Kg/s320/Robocalypse_BD_screenshot_08.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477523038291133442" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjivW47dpcf84RLcWR80TUv-O3WPgJY6CMTUhnAgtoTFBOpu99x2Wzc_7eBYUnNjfZmpbpIefVLDiiSdSnYhqlsXoOX2DbKwUT0tFcxm53g8Kez7fTNz1N-EbdhmgYASAAUDDQPaA/s1600/Robocalypse_BD_screenshot_06.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 224px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjivW47dpcf84RLcWR80TUv-O3WPgJY6CMTUhnAgtoTFBOpu99x2Wzc_7eBYUnNjfZmpbpIefVLDiiSdSnYhqlsXoOX2DbKwUT0tFcxm53g8Kez7fTNz1N-EbdhmgYASAAUDDQPaA/s320/Robocalypse_BD_screenshot_06.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477523034035881650" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbSVJCyQZnuMxA9YwSCElk6lZ96weD5F1bU4lBftiDD39cc1-8F81f-QhJJtuQbRHCAQpodGIGuLrZrrdIIKdD1z1hRY5wV-etIp4PSsklq4y0lyA17-bBdXIgQ2dClAOLYex8RA/s1600/Robocalypse_BD_screenshot_05.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 224px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbSVJCyQZnuMxA9YwSCElk6lZ96weD5F1bU4lBftiDD39cc1-8F81f-QhJJtuQbRHCAQpodGIGuLrZrrdIIKdD1z1hRY5wV-etIp4PSsklq4y0lyA17-bBdXIgQ2dClAOLYex8RA/s320/Robocalypse_BD_screenshot_05.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477523024581689474" /></a><br /><br />Интервью с нашим продюсером, Аланом Мартином<br /><object width="425" height="355"><param name="movie" value="http://www.youtube.com/watch?v=O1Q14bAxhRA"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/O1Q14bAxhRA" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object><br /><br /><a href="http://www.cubed3.com/news/12949">Еще одно интервью с Аланом, много букв</a>.<br /><a href="http://www.robocalypse.com/WiiWare/">Официальный сайт</a>.<br /><a href="http://press.nintendo.com/articles.jsp?id=23905">Офицальный пресс-релиз Нинтендо</a>.<br /><br />P.S. Увы, осенью Вогстер закрыл свое московское отделение. С тех пор я успела поработать в IT-Territory, которую внезапно купил Mail.Ru. В итоге сейчас я работаю в Mail.Ru, программирую под Windows. На C++, разумеется :-).Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com20tag:blogger.com,1999:blog-10303035.post-21527946288363200872010-05-06T00:33:00.002+04:002010-05-06T00:37:15.803+04:00Paris Game AI conference 2010<a href="http://gameaiconf.com/">В конце июня в Париже пройдет конференция по искусственному интеллекту в играх</a>. Я там буду, если <a href="http://igorivanov.blogspot.com/2010/04/katla-and-eyjafjallajokull.html">какая-нибудь Катла не решит извергнуться именно в эти дни</a>.<br /><br />По сравнению с другими геймдевелоперскими сборищами это очень маленькая конференция. Зал, в котором читают доклады, всего один. И недорогая, опять же, по сравнению с остальными геймдевелоперскими мероприятиями. Она дешевле КРИ, например.<br /><br />Коференция эта довольно популярна, поэтому уже в конце апреля все билеты были распроданы. После чего ее организатор, Алекс Шампандар, выкупил аудиторию вдвое больше первой. И теперь у него новая проблема - её надо заполнить. Он просил пропиарить это мероприятие, что я и делаю.<br /><br />Итак, Париж 23-24 июня, схема проезда есть на официальном сайте и, cлава Гуглу, мы можем посмотреть где именно это будет. <br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmX2j1dIR0A0i9TMCl6xRUqvAQsj0rumf7uquXKIcgmz_RQ6ewC-Aq-oR6adgXCnUKLgLrqnRnrlUd1MxK6wTpqWmEBvhiOtvsyFlP1cAI8I8OMwUZTtSRU__uyrx6oTDIGR3J_g/s1600/gameaiconf2010.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 252px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmX2j1dIR0A0i9TMCl6xRUqvAQsj0rumf7uquXKIcgmz_RQ6ewC-Aq-oR6adgXCnUKLgLrqnRnrlUd1MxK6wTpqWmEBvhiOtvsyFlP1cAI8I8OMwUZTtSRU__uyrx6oTDIGR3J_g/s320/gameaiconf2010.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5467886301239026178" /></a><br /><br />Язык конференции - английский. Здесь список докладов: <a href="http://gameaiconf.com/program.php">Program Highlights</a><br /><br />Если вы решите туда поехать, то имейте в виду, что, поскольку вы летите из-за пределов Европы, то вам положена скидка 50 процентов. Там все не очень очевидно в разделе регистрации написано.<br /><br />После конференции я напишу отчет, а в процессе буду <a href="http://twitter.com/alenacpp">твитить</a>, если там будет WiFi. Хэштэг <a href="http://twitter.com/#search?q=%23AIGD10">#AIGD10</a>.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com4tag:blogger.com,1999:blog-10303035.post-17164446445008282692010-03-29T00:24:00.002+04:002010-04-28T22:38:18.430+04:00Материалы с GDC2010<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHheepcKak2R9JBg6zKSL8Sejq4bW4LQlx2tmCBlKCbG_dYMqqSWGAZ-SyPbZa-FrBUETHY7RjR3DAfXe9G8wJOHoEaq6z5rFBPTXJBh-biJkSltHEUmepKZXJVls731ZaP0wOxg/s1600/gdc2010.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 108px; height: 81px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHheepcKak2R9JBg6zKSL8Sejq4bW4LQlx2tmCBlKCbG_dYMqqSWGAZ-SyPbZa-FrBUETHY7RjR3DAfXe9G8wJOHoEaq6z5rFBPTXJBh-biJkSltHEUmepKZXJVls731ZaP0wOxg/s200/gdc2010.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5453723862631450258" /></a>Game Developer Conference проходит ежегодно в марте. GDC этого года уже прошла и в Интернете начали появляться материалы оттуда. <br /><br><br /><span style="font-weight:bold;">На русском</span><br />orvind рассказывает о GDC2010: <a href="http://orvind.livejournal.com/94000.html">раз</a>, <a href="http://orvind.livejournal.com/94566.html">два</a> и <a href="http://orvind.livejournal.com/94965.html">три</a>.<br /><a href="http://users.livejournal.com/_winnie/231086.html">_winnie перессказывает orvind'а</a><br /><span style="font-weight:bold;">Updated 28.04.2010</span>: <a href="http://binstream.livejournal.com/84486.html">gdc san francisco 2010</a><br /><span style="font-weight:bold;"><br />На английском</span><br />Пит Исенси, Микрософт, <a href="http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!799.entry">Effective Management: Getting the Best from Your Team [.ppt]</a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpZ5Q0DzlA52Xpg0ZeQZYi64H7JbkumHUQ7V-4a3C-qWD5gfaYxm0Be8fHF48WmEWABckJsiJWIOFX3UgwOj7vImr06Vvef_f8KMcP2I8WcfBqql3yOX0ytVe7OsHIk2ZTT0NT_w/s1600/recipe.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 259px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpZ5Q0DzlA52Xpg0ZeQZYi64H7JbkumHUQ7V-4a3C-qWD5gfaYxm0Be8fHF48WmEWABckJsiJWIOFX3UgwOj7vImr06Vvef_f8KMcP2I8WcfBqql3yOX0ytVe7OsHIk2ZTT0NT_w/s400/recipe.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5453726900115600818" /></a><br /><br /><a href="http://doublebuffered.com/2010/03/21/gdc-2010-reading-the-players-mind-through-his-thumbs-inferring-player-intent-through-controller-input/">GDC 2010: Reading the Player’s Mind Through His Thumbs: Inferring Player Intent Through Controller Input</a><br /><br /><a href="http://gafferongames.com/2010/03/11/gdc-2010-networked-physics-slides-demo/">GDC 2010 Networked Physics Slides + Demo</a> (Glenn Fiedler, Sony Santa Monica) - много интересных бенчмарков пропускной способности интернетов. Подробно с примерами рассказывает о синхронизации игроков в мультиплеерных играх.<br /><br /><a href="http://www.onethree.org/gdc/">The AI of BioShock 2</a>, Kent Hudson, 2K. Все материалы в каком-то кривом формате.<br /><br />Пол-Кристиан Энгстад, Naughty Dog. Слайды про PS3 SPU. <a href="http://www.naughtydog.com/docs/gdc2010/intro-spu-optimizations-part-1.pdf">Часть1</a> и <a href="http://www.naughtydog.com/docs/gdc2010/intro-spu-optimizations-part-2.pdf">часть2</a>. Они по ним раньше вновь прибывших учили, а теперь решили поделиться знаниями с миром.<br /><br />Сид Мейер (он Цивилизацию придумал) рассказывает о психологии игроков.<br /><OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH=480 HEIGHT=310 id="videoPlayer"><PARAM NAME=movie VALUE="http://image.com.com/gamespot/images/cne_flash/production/eidothea/release/eidothea.swf"><PARAM NAME=scale VALUE="noScale"><PARAM NAME=salign VALUE="lt"><PARAM NAME=quality VALUE=high><PARAM NAME=allowscriptaccess VALUE="always"><PARAM NAME=flashvars VALUE="bwr=0&playerMode=embedded&movieAspect=16.9&mapp=embedded_480&gen=1&viewMode=sd&autoPlay=false¶msXML=http%3A%2F%2Fwww.gamespot.com%2Fpages%2Fvideo_player%2Fxml.php%3Fid%3D6253529%26mode%3Dembedded%26width%3D480%26height%3D310%26newplayer%3D1%26skin%3DeidotheaEmbedded480_169.xml"><embed id="mymovie" width="480" height="310" flashvars="bwr=0&playerMode=embedded&movieAspect=16.9&mapp=embedded_480&gen=1&viewMode=sd&autoPlay=false¶msXML=http%3A%2F%2Fwww.gamespot.com%2Fpages%2Fvideo_player%2Fxml.php%3Fid%3D6253529%26mode%3Dembedded%26width%3D480%26height%3D310%26newplayer%3D1%26skin%3DeidotheaEmbedded480_169.xml" wmode="opaque" allowscriptaccess="always" scale="noScale" salign="lt" allowFullScreen="true" quality="high" name="mymovie" style="" src="http://image.com.com/gamespot/images/cne_flash/production/eidothea/release/eidothea.swf" type="application/x-shockwave-flash"/></embed></OBJECT><br />Рассказывает, что есть некоторые игроки, которые перед каждым боем сохраняются. И, если бой прогрывают, то загружают сейв и переигрывают битву заново. (это обо мне, ага :-) ). Так вот, они стали запоминать с сейвом некий ключ. И исход битвы будет таким же, сколько ни перегружайся. "Ха-ха-ха" - добавляет в конце Сид.<br /><br />Небольшая презентация от Havok'а. У них теперь есть Havok AI.<br /><object id="flashObj" width="486" height="412" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9/22881388001?isVid=1&publisherID=22717159001" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=71250785001&linkBaseURL=http%3A%2F%2Fgamevideos.1up.com%2Fvideo%2Fid%2F28308&playerID=22881388001&domain=embed&" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9/22881388001?isVid=1&publisherID=22717159001" bgcolor="#FFFFFF" flashVars="videoId=71250785001&linkBaseURL=http%3A%2F%2Fgamevideos.1up.com%2Fvideo%2Fid%2F28308&playerID=22881388001&domain=embed&" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object><br /><br />Еще много ссылок тут: <a href="http://msinilo.pl/blog/?p=575">GDC 2010 proceedings</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com10tag:blogger.com,1999:blog-10303035.post-36388036321025584872010-03-23T00:34:00.003+03:002010-03-23T00:46:29.419+03:00Приставочные игры через видеопотокЗнаю о двух проектах, которые собираются давать играть через видеопоток.<br /><br /><a href="http://www.spawnlabs.com/">Spawn Labs</a> - нужен специальный девайс, который уже продается. И можно удаленно играть на собственной приставке. Отзывов покупателей не нашла.<br /><br /><a href="http://www.onlive.com/">onlive.com</a> - тоже нужен специальный девайс. Это сервис, то есть своя приставка не нужна. Работать собираются по подписке. Открываются летом.<br /><br />Совсем непонятно как они будут решать проблемы с пропускной способностью, особенно во втором случае. Нагрузка колоссальная, при этом собрать p2p сеть и распределить нагрузку по пользователям не получится.<br /><br />Народ настроен скептически. Тем более, что технической информации о проектах мало, в основном красивые ролики и презентации.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com12tag:blogger.com,1999:blog-10303035.post-2666053192678479772010-03-05T10:44:00.003+03:002010-03-05T12:16:51.071+03:00Вопросы с собеседования: общие вопросыЭто пятая часть вопросов. Все вопросы можно найти <a href="http://alenacpp.blogspot.com/2010/03/blog-post.html">здесь</a>.<br /><br />(5a) Как ИИ должен взаимодействовать с системой анимации? Какие проблемы возникают при взаимооднозначном отображении между поведениями и анимациями? Дайте примеры ситуаций, когда ИИ требуется взять контроль над частями тела юнита, а не просто играть анимацию всего тела, опишите реализацию каждого такого примера.<br /><br />(5b) Как должна ИИ-система выбирать анимации для проигрывания? Другими словами, какими должны быть интерфейсы для кода и для данных, каким образом данные должны быть абстрагированы, чтобы ИИ-система могла как можно проще доступаться до анимаций? Опишите достоинства и недостатки различных путей описания анимаций и доступа к ним.<br /><br />(5c) Расскажите о самой крутой ИИ-системе, которую вы видели в игре. Что именно вас впечатлило? Как вы думаете, как именно она была реализована. Каковы возможны проблемы по производительности у такой системы?<br /><br />(5d) Как можно использовать машинное обучение(ML) в играх. Какие проблемы ML помогло вам решить? Каковы достоинства и недостатки различных подходов? Каковы характеристики по производительности различных ML-подходов? Какие ML-подходы могут быть использованы в реалном времени, а какие лучше считать заранее? Дайте различные примеры использования ML, неважно, успешные или нет.<br /><br />(5e) У вас есть игра, в которой 1000 ботов ищут путь через сложный уровень игры, у каждого из них разные цели и система поведения. Сделаем допущение для данного вопроса, что это вражеские солдаты и офицеры, патрулирующие и защищающие базу в шутере от первого лица. Каким образом вы будете оптимизировать производительность ИИ для ваших ботов?Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com1tag:blogger.com,1999:blog-10303035.post-79183962197869986632010-03-04T10:17:00.007+03:002010-09-22T15:40:44.754+04:00Вопросы с собеседования: поиск пути и навигацияЭто четвертая часть вопросов. Все вопросы можно найти <a href="http://alenacpp.blogspot.com/2010/03/blog-post.html">здесь</a>.<br /><br />(4a) Расскажите об алгоритме A*. Сравните его с другими алгоритмами, почему его обычно используют в играх с расчетами в реальном времени? В каких случаях у A* низкая производительность?<br /><br /><blockquote>A* - алгоритм поиска на графе с эвристикой.<br /><a href="http://www.policyalmanac.org/games/aStarTutorial_rus.htm">Алгоритм A* для новичков</a> - простое и наглядное описание.<br />У него хорошая производительность, эвристику можно потюнить если чего.<br />Хуже всего отрабатывает тогда, когда пути для цели нет. Перебирает все возможные узлы графа и может сожрать много памяти.</blockquote><br /><br />(4b) Назовите как минимум 3 способа представить пространство поиска так, чтобы на нем можно было делать поиск пути. Каковы достоинства и недостатки каждого из этих подходов, когда какой из них вы будете использовать?<br /><br /><blockquote>Можно разделить на клеточки: квадратные, шестиугольные. Плохо подходят для трехмерных миров. Занимают много памяти. Требуют дополнительной интерполяции пути юнитов, иначе юниты, которые ходят по клеточкам, будут выглядеть глупо. Но зато есть random access look-up.<br />Waypoints. Найденный путь не всегда оптимальный. Хорошо работает в трехмерных играх.<br />Navigation mesh. Нужно хранить большое количество полигонов, если мир сложный. Хорошо работают как на открытых пространствах, так и в закрытых. Можно генерировать автоматически. Но сложно.<br />Использование сильно зависит от задачи.<br />Все это подробно и с картинками изложено здесь: <a href="http://www.cse.lehigh.edu/~munoz/CSE497/classes/BaderPathfinding_2_1.ppt">Pathfinding: Search Space Representations</a></blockquote><br /><br />(4c) Назовите все способы, какие знаете, для оптимизации поиска пути без потери качества найденного пути. Перечислите все дополнительные расходы (например, увеличившийся расход памяти) для каждой из этих оптимизаций.<br /><br /><blockquote>Речь будет идти про А*, поскольку он самый популярный.<br />Оптимизировать можно двумя путями: пространство поиска и сам алгоритм. Сначала про пространство поиска:<br />Можно разделить пространство поиска на клеточки покрупнее, алгорим будет работать быстрее.<br />Есть HPA* (hierarchical pathfinding A*) - Иерархию двух пространств поиска. Грубо говорят - клеточки покрупнее, которые делятся на клеточки поменьше. Сначала ищем по крупным клеточкам, потом, когда путь найден, уточняем по мелким. Больше двух никто не делает - получается сложно, выигрыш маленький, не нужно это.<br />Оптимизация самого алгоритма: <br />Играем с эвристикой.<br />Если идет несколько поисков одновременно, можно запоминать промежуточные данные одного поиска и использовать их в другом.<br />Можно аллоцировать необходимую для алгоритма память заранее.<br /><br />Также см. Game Parogramming Gems, глава A* Speed Optimizations</blockquote><br /><br />(4d) Ваша система поиска пути была написана с расчетом на солдата, и она хорошо работает для солдат. Посередине разработки дизайнеры решают добавить 3 новых типа юнитов: инопланетянина ростом 15 футов, который не пролезает через большУю часть дверей в игре, очень широкую машину на воздушной подушке, которая не пролезает в узкие коридоры и через маленькие двери, и солдата на мотоцикле, который довольно медленно поворачивает( например, 15 градусов в секунду на любой скорости). Какие изменения вы внесете в свой AI, чтобы они все заработали нормально?<br /><br />(4e) У вас есть система поиска пути, которая отлично работает, но она не умеет работать с динамическими объектами (ящиками, бочками, машинами, другими юнитами). Игрок играет супергероем, который может использовать суперспособность "бросить автомат с газировкой на пути юнита". ИИ-юнит не может подвинуть или уничтожить этот автомат. Когда юнит видит, что автомат заблокировал его путь, какими способами он может найти способ обойти его, при этом придерживаясь своего начального направления движения и дойдя до цели? Что будет, если автомат сбросили на точку назначения? Что если автомат заблокировал дверь, через которую юнит должен пройти согласно своему предрассчитанному пути?<br /><br /><blockquote>Ставим автомату вектор отталкивания, соответственно модифицируем вектор движения нашего юнита.<br />Если закрыло точку назначения - встаем до нее, чего делать.<br />Если заблокировало дверь - пересчитываем путь, когда в эту дверь упремся.<br />Подробнее здесь: <a href="http://www.cse.lehigh.edu/~munoz/CSE497/classes/DeLorenzoObstacles2.7.ppt">Avoiding Dynamic Obstacles and Hazards</a></blockquote><br /><br />(4f) Вы работаете над игрой от первого лица, мир трехмерный. Поиск пути в игре использует навигационную сетку. Внезапно дизайнеры решают, что они хотят, чтобы юниты в игре могли использовать лестницы, чтобы взбираться на стены, спрыгивать с небольшой высоты, перепрыгивать через небольшие трещины и все это должно стать частью поиска пути. Расскажите, как вы реализуете такую системы, и как она будет связана с существующей навигационной сеткой. Также расскажите, какие утилиты вы предоставите дизайнерам (если предоставите).<br /><br />(4h) Вы делаете шутер по мотивам Второй Мировой со сражениями на улицах Берлина. Дизайнер хочет, чтобы в определенные моменты игры нацисты, котролируемые компьютером, обходили игрока с флангов, т.е. чтобы небольшие отряды нацистов подходили с разных сторон, с боковых улиц и дворов. Допустим, жульничать нельзя (т.е. нельзя просто телепортировать юнитов туда, где они должны оказаться) и мы предполагаем, что дизайнеры не могут сделать это с помощью скрипта. Опишите как минимум 2 пути реализовать такую систему. <br /><br />(4i) Ваш дизайнер поиграл в игру, где он видел отряд юнитов двигающихся по коридору таким образом, что только один их них двигался в каждый момент времени, а остальные его прикрывали (т.е. юнит из тыла всегда двигается вперед). Он впечатлен и он хочет такое же. Опишите пути реализации такой системы. Каким образом ИИ будет понимать, когда ему двигаться, когда остановиться, когда открывать заградительный огонь?Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com3tag:blogger.com,1999:blog-10303035.post-39201803431715973342010-03-03T10:16:00.009+03:002010-06-09T16:00:26.293+04:00Вопросы с собеседования: стирингиЭто третья часть вопросов. Все вопросы можно найти <a href="http://alenacpp.blogspot.com/2010/03/blog-post.html">здесь</a>.<br /><br />Это вопросы по steering behaviors, в просторечье "стиринги". Я видела перевод "стайное поведение", но он мне не очень нравится.<br /><br />(3a)Как работают системы, эмулирующие стаю? Каковы компоненты такой системы и как они объединены? Когда поведение стаи не работает или дает нежелательный результат? Есть ли в стандартной стайной модели Крэйга Рейнольдса (Craig Reynolds) проблемы с производительностью? Если да, то как с ними справиться?<br /><blockquote>Модель Крейга Рейнольдса <a href="http://www.red3d.com/cwr/steer/">тут</a>.</blockquote><br /><br />(3b)Что такое аттракторы и репульсоры? (<span style="font-style:italic;">в оригинале "attractors and repulsors", хороший перевод не придумала</span>) Какое отношение они имеют к стиринг-системе. Когда они полезны, каковы их ограничения? Когда они могут быть использованы для огибания препятствий, а когда их недостаточно?<br /><br /><blockquote>Можно задать притяжение (это attractors) или отталкивание (repulsor) между объектами. Их можно использовать в дополнении к существующему поиску пути, в дополнении к стирингам. Притяжение и отталкивание не обязательно должны быть линейными. Можно нарисовать всякие интересные кривые. Можно кривые менять во времени. Например, зайцы убегают от волка. Но если у волка мало здоровья, то они убегают вяленько.<br />Страдают от проблемы локального минимума.<br />Не нашла ничего в открытом доступе, поэтому отсылаю вас к Game Programming Gems 4, Глава 4.6, Attractors and repulsors.</blockquote><br /><br />(3c)Вы начинаете работать над игрой, и один из ваших коллег предлагает полностью отказаться от поиска пути и использовать потенциальные поля для поиска пути и навигации. Он предлагает покрыть весь мир двумерной сеткой, в каждой ячейке которой записано расстояние для ближайшего препятствия. Хорошая ли это идея? Почему "да" или почему "нет"? Когда с этим решением возможны проблемы? Вне зависимости от ответа на этот вопрос, где еще может быть использована такая система?<br /><blockquote>Идея не хорошая, потому что у потенциальных полей много проблем, они любят застревать в локальных минимумах. Можно их использовать на тайловых малодетализированных уровнях. Подробнее: <a href="http://www.gamedev.net/reference/articles/article1125.asp">Motion Planning Using Potential Fields</a> и <a href="http://aigamedev.com/open/tutorials/potential-fields/">Using Potential Fields in a Real-time Strategy Game Scenario (Tutorial)</a></blockquote><br /><br />(3d)Вы разрабатываете средневековую стратегию, в которой пехотинцы с пиками всегда должны идти перед лучниками, а катапульты всегда должны быть за лучниками. Расскажите как вы будете реализовывать систему передвижения, в которой пехотинцы будут спереди, а катапульты в тылу, насколько это возможно. Объясните как будет зависеть ваш ответ от того, надо ли просто войску выстроиться на месте назначения в таком порядке, или надо при передвижении сохранять такой порядок. <br /><br /><blockquote>Краткий ответ. Если надо просто выстроиться в месте назначения - заранее определяем кто где будет стоять и направляем юнитов туда, это просто. Если надо сохранять порядок при передвижении - разделяем юниты по скорости. Обсуждение это вопроса есть <a href="http://forums.aigamedev.com/showthread.php?t=1151">тут</a>.<br />Подробнее смотрите статьи: <a href="http://web.archive.org/web/20080326212337/www.gamasutra.com/features/19990122/movement_02.htm">Movement Issues Facing Game Developers</a> и <a href="http://web.archive.org/web/20080326201724/http://www.gamasutra.com/features/19990129/implementing_01.htm">Implementing Coordinated Movement</a>.</blockquote><br /><br />(3e)Вам поручено реализовать толпу людей, прогуливающихся по улицам города. Расскажите о нескольких способах, которыми можно это реализовать быстро и эффективно. Как вы сделаете так, чтобы люди в толпе не дотрагивались друг до друга во время движения? Как они будут уступать друг другу дорогу и не застревать при этом, пытаясь обойти друг друга?<br /><br />(3f)Дополнение к предыдущему вопросу. Толпа должна разбегаться, когда начинается драка. Как вы реализуете такое разбегание? Как вы сделаете так, чтобы толпа не возвращалась тут же обратно? Как вы сделаете так, чтобы толпа с течением времени "забывала" об этом инциденте и возвращалась обратно?<br /><br /><blockquote>Repulsor, который с течением времени затухает.</blockquote><br /><br />(3g)У вас в игре есть машина на воздушной подушке и дизайнеры хотят, чтобы она двигалась линейно по определенным точкам. Она должна доходить до точки, останавливаться, стрелять в игрока несколько секунд, а затем случайно двигаться к следующей или к предыдущей точке из последовательности. Путь до новой точки должен занимать 4-5 секунд. Как вы реализуете движение такой машины, чтобы оно выглядело как можно более убедительно? Нужно ли здесь использовать физику, если да, то почему?<br /><br /><blockquote>Я бы сгладила путь сплайнами, ну и всё. Без физики. Если бы это было не воздушная подушка, а грузовик на колесах, пришлось бы делать реалистичный разворот, учитывать радиус разворота.<br />Подробнее об этом рассказывается в AI game programming wisdom, глава <a href="http://books.google.com/books?id=4f5Gszjyb8EC&pg=PA186&lpg=PA186&dq=Realistic+Turning+between+Waypoints++%09%09Marco+Pinter&source=bl&ots=9AWMuvJxml&sig=roIai2-6ENwb6yDAwSC8C-K4qCo&hl=en&ei=dYD-S5-oCZ6InQPU7smpDA&sa=X&oi=book_result&ct=result&resnum=1&ved=0CBIQ6AEwAA#v=onepage&q=Realistic%20Turning%20between%20Waypoints%20%20%09%09Marco%20Pinter&f=false">Realistic Turning between Waypoints</a>. </blockquote>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com11tag:blogger.com,1999:blog-10303035.post-34640254288335548012010-03-02T11:45:00.006+03:002010-03-12T11:46:32.833+03:00Вопросы с собеседования: работа с пространством и скриптованиеЭто вторая часть вопросов. Все вопросы можно найти <a href="http://alenacpp.blogspot.com/2010/03/blog-post.html">здесь</a>.<br /><br /><span style="font-weight:bold;">Работа с пространством</span><br />(2a)На примере системы ИИ из игры Thief из <a href="http://alenacpp.blogspot.com/2010/03/blog-post_01.html">прошлой серии вопросов</a> (1f) расскажите, каким образом вы реализуете поведение стражников "поиск игрока" и пустите их разведывать территорию так, чтобы это выглядело праводоподобно? Как вы убедитесь, что это поведение не слишком сложное для игрока, что игрока нельзя найти, если он играет хорошо?<br /><blockquote>Можно составить карту влияния (influence map) по результатам работы сенсоров. Также можно ввести уровень пароноидальности ботов. А дальше все это надо долго и нудно настраивать в зависимости от того, чего хотят геймдизайнеры. Не встречала никаких статей по тулзам Thief'а, предполагаю, что они это все программили в обнимку с геймдизайнерами.<br />Подробнее обсуждается <a href="http://forums.aigamedev.com/showthread.php?t=1257">тут</a>.</blockquote><br /><br />(2b)Ваша задача реализовать компьютерного игрока в стратегии реального времени (RTS). Допустим, туман войны не нужен. Как ваш компьютерный игрок будет определять какие части карты контролируются вражескими игроками, а какие можно исследовать? Как вы определите <a href="http://ru.wikipedia.org/wiki/Геостратегический_регион">геостратегические регионы</a> карты? Как вы найдете границу между частями карты под вашим контролем и частями под контролем врагов? Как вы определите готовящуюся атаку врага, изменение в уровне агрессии врага?<br /><blockquote>Опять influence map. Каждое здание "излучает" влияние. Сила влияния зависит от здания. Те места, где влияния нет, никому не принадлежат и их можно исследовать. Вражеские атаки тоже можно определить через влияния. Тут его будут "излучать" юниты врага.<br />Геостратегические регионы (английский термин лучше и короче - choke points ) - мосты, ущелья и т.п. Можно напрячь дизайнеров уровней их помечать на карте. Если дизайнеры уровней сопротивляются или если эти точки можно создавать динамически, то можно пытаться карту анализировать как-то так: если между двумя смежными регионами A и B можно пройти только через R, то R - choke point.<br />Подробное обсуждение <a href="http://forums.aigamedev.com/showthread.php?t=1191">тут</a>.</blockquote><br /><br />(2c)В вашей RTS игре компьютер время от времени посылает разведчиков разведывать территорию. Дизайнеры хотят, чтобы каждый разведчик двигался полуслучайно и обходил различные части карты, предпочитая те, которые были открыты недавно. Допустим, что игра использует сетку и что есть туман войны. Также допустим, что разведчики стоят дешево и их не жалко, их можно пускать на вражеские базы и в другие опасные места. Как вы реализуете систему, которая будет решать куда идти разведчику? Какие структуры данных вам понадобятся? Как вы поймете, что разведчики достаточно хорошо исследуют карту? Дайте оценку по производительности вашего решения. Есть ли риск того, что разведчик будет пытаться добраться до недоступного места и застрянет?<br /><br /><br /><span style="font-weight:bold;">Скриптование</span> <br /><blockquote>Ответы на большинство вопросов по скриптованию можно найти тут: <a href="http://plakhov.livejournal.com/101443.html">Дзэн-3, скрипт</a></blockquote><br />(2d)Как связаны скриптование и ИИ? Когда следует контролировать ИИ с помощью скриптов? Когда дизайнеры используют ИИ для контроля над ИИ-агентами, на каком уровне скрипт должен взаимодействовать с ИИ?<br /><br />(2e)Расскажите о нескольких системах скриптования, которые вы использовали в работе, или которые видели в других играх. Расскажите о достоинствах и недостатках тех или иных подходов к скриптованию.<br /><br />(2f)Каковы достоинства и недостатки скриптования в целом? Когда скриптование использовать не надо?<br /><br />(2g)Возьмите для примера любую игру и опишите лучший путь построения системы скриптования, которая даст дизайнерам возможность на каком-то уровне контролировать ИИ в игре. Также опишите идеальные инструменты для отладки описанной вами системы.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com6