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

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

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

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

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


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

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

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



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

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

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

20 коммент.:

Stas Fomin комментирует...

Ой, это еще предварительные версии видео (там концовки надо еще обрезать), плюс я планирую сделать стенограммы ваших выступлений.

Эмбедить видео нужно так (чтобы окошко было приличной ширины):

{iframe src="http://player.vimeo.com/video/12955832?byline=0&portrait=0" width="720" height="405" frameborder="0"}{/iframe}

и

{iframe src="http://player.vimeo.com/video/14457262?byline=0&portrait=0" width="720" height="405" frameborder="0"}{/iframe}

(замените фигурные скобки угловыми конечно, это тчортов блоггер).

Плюс уговорить юзеров смотреть все это полноэкранном режиме (проверив, что горит галочка «HD»), видео там 1280x720.

Alena комментирует...

Stas Fomin

Ой, это еще предварительные версии видео (там концовки надо еще обрезать), плюс я планирую сделать стенограммы ваших выступлений.

Поздно! :-). Я в твиттере увидела ссылку и опубликовала.
Стенограммы - это прекрасно. :-)

Эмбедить видео нужно так (чтобы окошко было приличной ширины):

Попробовала, окошко приличной ширины у меня в блог не лезет.

Stas Fomin комментирует...

Попробовала, окошко приличной ширины у меня в блог не лезет

Хм. Ну сделайте поменьше, но, все же шириной побольше чем 400px (а то как-то сиротливо выглядит, страшно смотреть). И напишите, чтобы смотрели в fullscreenе — тогда идет максимальный битрейт и разрешение.

Для тех, кому очень не терпится увидеть видео с ADD — я выкладываю его в отдельный альбом http://vimeo.com/album/1474715 (можно даже подписаться на обновления — http://vimeo.com/album/1474715/rss )

Кстати, насчет видео про игры — я решил было улучшить часть, где было OpenSteerDemo.avi (дабы увеличить фреймрейт ролика), взял его отсюда,
http://www.youtube.com/watch?v=fM5kY5t8Bz0
но хоть тут фреймрейт лучше, но качество здесь отстойное.

Может вы оригинал куда-нибудь на narod.ru выложите?

Dragon комментирует...

В C++0x помимо упомянутых вещей есть еще из интересных - move конструктор. С ним намного проще некоторые вещи.

vitfil комментирует...

Интересные доклады. Волнительная докладчица.

OpenQuality.ru комментирует...

Про помощь игроку в случае невезухи с теорией вероятности - жесть! Как дальше жить? :)

Сергей Любимов комментирует...

Алена, почему не рекомендуется использовать fuzzy logic. На сколько мне известно, это один из самых пригодных способов описать логику человека.

p.s. Близок тематике fuzzy logic и эволюционных алгоритмов.

Alena комментирует...

Stas Fomin

Может вы оригинал куда-нибудь на narod.ru выложите?

Ушло мылом.

Dragon

В C++0x помимо упомянутых вещей есть еще из интересных - move конструктор. С ним намного проще некоторые вещи.

О, там много интересных вещей, которые остались за кадром. Те же variadic templates. И про списки инициализации я мало рассказала.
Я это сделала намеренно - я не хотела залезать в дебри, а хотела показать простые, понятные новые концепции, которые полезны всем. Чтобы тут же захотелось попробовать.


Сергей Любимов

Алена, почему не рекомендуется использовать fuzzy logic.

Все те же причины. Высокая сложность, дорогие специалисты, никаких преимуществ перед конечными автоматами и творчески примененным рандомом.

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

Возможно, но наша основная цель, не педоставить умного оппонента, а предоставить интересного оппонента. При минимальных затратах.

noonv комментирует...

Большое спасибо!

pa23 комментирует...

Алёна, большое вам спасибо за интересные доклады. За слушателей стыдно. Задавать вопросы не представившись и даже не удосужившись зад со стула поднять... позорище.

Alena комментирует...

pa23

Алёна, большое вам спасибо за интересные доклады.

пожалуйста :-)

За слушателей стыдно. Задавать вопросы не представившись и даже не удосужившись зад со стула поднять... позорище.

О, нет, там на всех докладах была такая, демократичная атмосфера.
На записи не видно - но мы там сидим в небольшом зале ДК с пианино. :-)

Владимир комментирует...

Alena Спасибо за доклад. Было очень интересно послушать про С++!

Ang3L комментирует...

Здорово что кто-то ещё рассказывает по существу. Помню хотел послушать доклады с КРИ, такую ересь несли просто ужас. Типа той темы где вы описываете книгу про хакинг онлайн игр - воды много, по теме мало. Был только один паренёк из небольшой фирмы, который говорил реальные вещи, что действительно происходит при использовании того или иного метода и вообще о разработке игры от начала до конца на конвеере (конечно, в сжатом виде как и вы). По большей части, реально поступает информация от наших заграничных коллег. На англ. языке... Вот(pdf, 2.18mb) хорошая работа Jean Paul van Waveren'а по созданию ботов в Quake III (ныне, вроде, старший программист в id Software). Всегда можно посмотреть исходники, они в открытом доступе.
Вот ещё нашёл работу трёх старшИх дядей. Сделано классно! Куча объектов как бы генерируют общее динамическое потенциальное поле и "плавают" в нём. Очень хорош метод для моделирования толпы в городе. Continuum crowds, может будет интересно (а лучше посмотреть весь блог, интересные штучки, но достаточно академичные, для игр возможно не подойдет).

По поводу Нейронных сетей, ГенАлгоритмов, Нечёткой Логики. Им нужно найти правильное применение. Это очень мощные и высокотехнологичные инструменты. А ими пользуются как шуруповёртом по орехам. Ну не для этого они. Они не подходят по нескольким причинам:
Тем что они требуют слишком много ресурсов для исполнения.
Тем что требуют преподготовки, что уже противоречит играбельности.
Они нужны для изучения ситуаций, когда предмет неизвестен на момент исполнения, тогда да, Конечный Автомат потерпит поражение. Но в таких играх нет особого смысла, только как эксперимент. Зато в FEAR придумали интересный КА. Вот(pdf, ?mb) доклад с GDC 2006.

P.S.: Звук на видео ужасно шумен, тяжело расслышать о чём речь.
P.P.S.: Вы очень часто смотрели на экран! :) Как будто вы ему рассказывали, а не людям в зале, это немного нервирует. Такое ощущение что вам не интересно то о чём рассказываете.
P.P.P.S: Удачи в дальнейших делах!

Alena комментирует...

Ang3L

P.P.S.: Вы очень часто смотрели на экран! :)

Угу, я уже посмотрела и сделала выводы.

P.P.P.S: Удачи в дальнейших делах!

Спасибо :-)

Scripter комментирует...

супер! очень интересно

Анонимный комментирует...

Выступление на похожую тему (поиск путей)

http://vacademia.com/record/detailed/1105

Как думаете, Алена, предлагаемый подход лучше описанных вами?

igor комментирует...

Нашел эффектное видео от той же работы:

http://www.youtube.com/watch?v=NMunrmtG00o

Анонимный комментирует...

и правильно, что нет сборщика мусора. использовать различные smart pointers для этого достоточно.

Анонимный комментирует...

Насчет слайда про "недоделки лямбда-функций в MSVS 2010": откуда же компилятор возьмет значение переменной "Val"? Если значение переменной "Init" ему передается с вызовом "a(3)", то судьба передаваемого в вложенную лямбду так как скажем "не раскрыта" :)

Более правильный (IMHO) код, который скомпилировался в VS 2010 (со всеми последними патчами и SP):

auto a = [](int Init)->int{ auto i = [=](int Val)->int{ return Init + Val; }; return i(4); };

Можно еще в "i" передавать внешнюю переменную, например.

Анонимный комментирует...

Это опять я насчет слайда про лямбда-функции в VS 2010 :)

Вот так получилось:

auto a = [](int Init)->std::function{ return ( [=](int Val){ return Init + Val; } ); };

std::cout << a(3)(4) << std::endl;

То есть здесь внешняя лямбда возвращает по-сути функцию. Интересно, что "внутренняя" функция свободно использует "внешнюю" для нее переменную.