понедельник, сентября 01, 2008

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

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

Видео лежит, например, тут.

Для тех, кто не может или не хочет смотреть видео, я расскажу о чем собственно Кармак говорил. Это не точный перевод, ибо там много и местами довольно скучно. Это пересказ близко к тексту с цитатами. Кроме этого выступления, на QuakeCon2008 много говорили про новую игру Rage, промо-ролики показывали, Кармак давал про него отдельные интервью.
Ролик про Rage в хорошем разрешении тут. Картинка оттуда.

Но сейчас речь пойдет именно про ежегодное выступление, которое John Carmack Keynote. Может про Rage отдельный пост напишу, если соберусь.
Updated 14.09.2008: написала - Rage и Tech5.

Кармака упрекали в том, что он слишком вдается в технические детали. Поэтому он решил в них не вдаваться. Что не может не огорчать.

Собственно выступление

Кармак говорил про развитие его компании, id Software. Раньше они работали одновременно только над одним проектом. Quake3, Doom3. Долгое время старались оставаться маленькой компанией, в основном по инициативе самого Кармака. Однако разработка в течение четырех лет (Doom3) их несколько утомила и они решили расширяться. То есть id Software нанимает. Вакансии здесь.

Расширяются по трем направлениям
1. AAA - проекты, кроссплатформенные. Rage, следующий Doom. Большинство людей, как старых, так и свеженанятых работают здесь.
2. Игрушки на мобильных платформах.
Нравится ему iPhone, хвалит его очень. Графика как в DreamCast. И вообще PS2 - уровень, мощнее чем PSP и DS. Наверное, будут делать под iPhone что-то. Сейчас у них есть два проекта, но ничего подробно он говорить про них не хочет.
3. Многопользовательский 3Д шутер. Quake Zero - так должна была называться игра. Однако имя пришлось поменять. Они упоминули где-то название игры и киберсквоттеры этот домен заняли. И предложили id Software его выкупить. На что id'шники подумали - мы всего месяц игру разрабатываем, сменим имя и не будем платить шантажистам. Эта история была встречена бурными апплодисментами.
Теперь игра называется Quake Live.

Сначала это должен был быть проект на шесть месяцев. Геймдевелоперы считают, что веб-девелопмент - это фигня, уж мы-то справимся. Все оказалось не так просто, но они наняли людей с веб-девелоперским опытом и дела движутся.
Собираются собирать там всевозможную статистику, а потом посмотреть что с ней можно будет сделать.
Нервничали, что достаточное количество народу не наберут. Кармак говорит, что они отлично понимали, что могут ошибаться на два порядка. Думали про цифры 50 000 и 5000000. "В таких ситуациях некоторые бизнесмены будут пытаться заставить тебя поверить, что у них чуть больше информации, чем есть на самом деле, но мы идём наощупь в темноте и можем ошибаться на два порядка."
Но когда они запустили подписку на бета-тестирование, то очень быстро набрали 100 000, безо всякой рекламы.
Каким образом будут деньги собирать с пользователей пока не решили. Однако там внутри игры определенно будут билборды с рекламой.

"Клавиатура + мышь всё еще лучший способ играть в шутеры от первого лица." (Keyboard and mouse is still the best way to play the first person shooter)

В Rage они реализовали давнюю идею Кармака - уникальные текстуры по всей игре.
"Три года назад у меня была отличная демонстрация этой технологии. И вот теперь, три года спустя мы всё ещё работаем над ее элементами. Очень легко взглянуть на что-то и сказать: "О, фрагментная программа [шейдер то есть], которая это делает, займет всего пару страниц кода!". Но работа, усилия, в инфраструктуре. В том, чтобы сделать технологию куском общего полотна работы художников и дизайнеров." (Three years ago I had perfectly good demonstration of what the technology was gonna do[..].And here we are - three years later still working on elements of it. It's easy to look at something and say: "well the fragment program that implements this is just a couple pages of code!"[...] But the work and the effort is in the infrastructure. It's in allowng a piece of technology to become a part of a canvas that the artists and designers are work on.)

Анализировали код какой-то чудо-приблудой. Название приблуды Кармак не сказал. Говорит, помогает. В большинстве случаев она рапортовала о каких-то незначительных недочетах, но им удалось найти и причины некоторых серьезных ошибок.

Про качество кода вообще интересно говорил. Разговаривал с каким-то геймдевелопером и спросил, запускают ли они BoundsChecker, на что тот в ужасе ответил "За три недели до выхода игры? Боже, нет". То есть чувак даже знать не хочет, что у него в коде может быть что-то не так. (народ в зале поржал, но на самом деле это обычное отношение)

"Во многих случаях такова реальность. Если кажется, что нечто выполняет свою работу хорошо, то этого достаточно. Неверно думать, что наша задача сделать идеальный код, наша задача в том, чтобы разработать достаточно хороший код." (In many cases that the rality of things. If it seems that it's doing the job acceptably that it is good enough. It's wrong to think that we are in a quest to make perfect code, we are in a quest to make good enough code.)

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

Они подумывали, не перейти ли на Java или C#, в которых есть защита от проблем С++ (речь идет о работе с памятью, о "падении" игры). Не перешли, и Кармак считает, что массового перехода с С++ не будет.

Какие у них планы для технологии следующего поколения. Текущий движок у них называется Tech5, следующий будет называться Tech6.
Говорить про эти технологии сложно, потому что харда, под который они будут программить пока не существует. Они следят за тем, что происходит с Larrabee, CUDA и прочими.
Есть люди, которые считают, что PC вернется и консоли зарулит. Так вот, Кармак считает, что это наивное предположение.
Отдельно сказал несколько слов про CUDA. Считает, что алгоритмов, которые достаточно хорошо распараллелятся немного. По большому счету это только работа с графикой - обработка вершин.
Рендеринг следующего поколения - все еще полигоны. Возможно не всё будет полигональным, но они всё ещё будут в большинстве.

Ещё Кармак вроде как обещал, что с выходом Rage они откроют исходники Doom3. Когда именно он это обещал я не знаю, похоже, прослушала. Вот это очень хорошая новость. Я не уверена, что буду играть в Rage, но вот исходники третьего Дума посмотрю обязательно.

Ссылки по теме:
John Carmack: QuakeCon 2008 Keynote Highlights
Перевод выступления Кармака на Quakecon 2004
Выступление Джона Кармака на QuakeCon2005

12 коммент.:

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

Кармарк один из лучших! :)
Жалко что они с Ромеро разошлись...

Dmitri Kuzmenko комментирует...

>Говорить про эти технологии сложно, >потому что харда, под который они >будут программить пока не существует.

кошмар просто.

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

Doom 3 прошел мимо меня. UT - наше все и под линуксом - тож.

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

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

Я вот это не совсем понял. Это про игры или "про вообще"? Если про игры, то кроме работы с графикой в них почитай никаких сложных алгоритмов и нету. Ну pathfinding еще, и collision detection, так они тоже параллелятся отлично.

А если про "вообще", то значит, Кармак - "узкий специалист".

Алёна комментирует...

2Андрей
Я вот это не совсем понял. Это про игры или "про вообще"?

Про игры. Конкретно этот кусок: что можно будет выжать из технологии типа CUDA.

Если про игры, то кроме работы с графикой в них почитай никаких сложных алгоритмов и нету. Ну pathfinding еще, и collision detection, так они тоже параллелятся отлично.

Ээээ... Ну расчеты физики еще есть.

"Хорошо параллелятся" - это тонкий момент. Достаточно хорошо, чтобы сбросить их на SIMD устройство? Судя по тому, что я читала про CUDA'у, если там число потоков меньше, скажем, сотни, то это не распараллелирование, а так, фигня.
Я, честно говоря, слабо представляю себе как можно тот же pathfinding эффективно рассчитать на CUDA. Вершины да, задачи биоинформатики еще хорошо туда ложатся.
С вершинами вообще всё понятно, их полно и обрабатываются они все одинаково...

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

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

Дадешь Ansys и Nastran в играх !!!!
Будут деформируемые тела, сложные связки из нескольких тел.

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

>Анализировали код какой-то >чудо-приблудой. Название приблуды >Кармак не сказал.

Есть такие. Coverity, например. Стоит кучу денег. Мы подписывались на тестовый прогон - те даже не удостоили ответом.

>Разговаривал с каким-то >геймдевелопером и спросил, >запускают ли они BoundsChecker

BC не реально использовать на реалтайм-проектах. Я запускал под ним наш клиент - за полчаса он даже не загрузился. Соответственно, играть на нём невозможно и тестировать в реальных условиях тоже.

>Они подумывали, не перейти ли на >Java или C#, в которых есть защита >от проблем С++ (речь идет о работе >с памятью, о "падении" игры). Не >перешли

Они на С++ сколько лет переходили? ;)

>и Кармак считает, что массового >перехода с С++ не будет.

В плане утилит переход уже сейчас вполне массовый. Движки на C#/Java массово действительно вряд ли будут писать. Как бы не росла память и вычислительные мощности, из них всегда будут стараться выжать максимум. И C#/Java здесь пока не помошники. Ждём появления языка, который на шкале Скорость-Безопасность будет лежать между С++ и C#/Java.

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

Если писать код прямо, BoundsChecker работает нормально.
А вот если считывать файлы по байтику, тогда да... даже за ночь не запускается. был опыт в молодости.

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

Предлагаю Вам, уважаемый аноним, для начала привести пример реал-тайм игрового проекта (с 3d-рендером), который работает с преемлемой для тестов играбельностью. ;)

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

> кошмар просто.
а в чём кошмар-то? как я понимаю — реч про консоли нового поколения.

Алёна комментирует...

2zg:
а в чём кошмар-то? как я понимаю — реч про консоли нового поколения.

Речь шла про CUDA, Larrabee, Fusion.

Константин комментирует...

2Андрей:

Не можешь рассказать подробней про CUDA и CollisionDetection? Всё что я видел по этой теме, говорит о broad-phase или оперирует с выпуклыми телами.