четверг, сентября 01, 2005

.kkrieger

Игра .kkrieger (произносится "кригер") в свое время наделала много шума. 3Д шутер размером всего 96 килобайт! То, что он 96 килобайт, это безусловно интересно. Но еще более интересен ответ на вопрос "а как?". Секрет маленького размера игры в том, что они генерят весь контент, вместо того, чтобы уже готовый таскать за собой в дистрибутиве. Игра из-за этого стартует небыстро...
Сделала эту игру группа немецких разработчиков, под названием .theprodukkt. Они занимались созданием демок для конкурсов "меньше 64кб", а потом им в голову пришла идея сделать целиком игру.
.kkrieger screenshot
Вот видеоролик с рассказом о том как делался .kkrieger. Генерация текстур очень похожа на то, что есть в Фотошопе. Очень здорово они сделали анимацию персонажей. Они не могли использовать скелетную анимацию, поскольку самый маленький размер для такого персонажа, что они смогли добиться - это 12 кб. В итоге они сделали нечто свое. В этом ролике они подробно показывают анимацию одного из монстров, как он автомагически начинает правильно ноги переставлять, когда поворачивает, когда начинает идти быстрее, когда идет назад... Впечатляет.
kkrieger-content_creation
Не все у них получалось, особенно они недовольны своей системой коллизий. Больше всего эта система коллизий глючит, когда проходишь сквозь дверь. Можно в этой двери застрять навечно, я так застревала дважды.

Написанная ими утилита .werkkzeug1 (произносится "веркцойг"), с помощью которой они делали свои последние демки, находится в свободном доступе. Так что сделать очень маленькую демку с ее помощью может любой желающий, после того как разберется с интуитивно непонятным интерфейсом.
demo screenshot
demo screenshot
Они собраются выпустить и утилиту .werkkzeug3, которую написали, чтобы сделать игру. Давно уже собираются...

Меня в их демках очень заинтересовала работа с прозрачностью. Очень похоже, что она не зависит от порядка отрисовки.



demo screenshot


Один из программистов, работавших над .kkrieger'ом, Фабиан Гизен (Fabian Giesen) рассказывает Гамасутре:
"Какой язык использовался при написании .kkrieger'а?

C++ и немного кода на языке ассемблера, там где это было действительно нужно: в основном для циклов генерации текстур и для синтезирования звука.
C++ это пожалуй единственный язык, который удовлетворяет нашим специфичным требованиям. У нас есть как низкоуровневые (управление памятью, генерация текстур), так и высокоуровневые (граф сцены, управление миром) компоненты, и нам нужен язык, который подходит для обеих задач, и чтобы это поддерживалось компиляторами и при этом позволяло нам писать компактный код."

"Какой совет вы можете дать тем, кто разрабатывает свои собственные графические 3Д программы?

Пожалуй самая важная вещь - это знать когда остановиться. Особенно небольшим командам. Совершенно невозможно сделать нечто, что "побьет" крупные софтверные компании, если вы будете пытаться сделать все так, как делают они.
Пробуйте странные решения, которые никто не использует. Заинтересуйтесь проблемами, которые до конца еще не изучены. Пробуйте нестандартные подходы. Это то, в чем плохи крупные компании, потому что они должны придерживаться дедлайнов, соответствовать ожиданиям пользователей. Это то, где вы можете достигнуть действительно новых и интересных результатов: взять одну новую идею и развить ее настолько, насколько возможно."

Ссылки по теме
.theprodukkt
.kkrieger. Для работы требуется сравнительно быстрый компьютер и DirectX9.
Interview: Frugal Fragging with .kkrieger. То самое интервью с Гамасутры. Чтобы читать статьи на Гамасутре надо регистрироваться, но регистрация там быстрая и бесплатная.
Видеоролик с рассказом о том как делался .kkrieger. 54Мб, однако.

Technorati tag:

9 коммент.:

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

Странно. У Вас там вставлены скриншоты от демок fr (farb-rausch). По крайней мере точно есть скриншот от fr-08 и fr-19.
Зачем они? Ведь fr != .theprodukkt.

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

Кстати, Вы не занимаетесь разработкой демок? Хотелось бы узнать.

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

>Зачем они? Ведь fr != .theprodukkt

Нет, нет, это одни и те же люди. Или по крайней мере сильно пересекающиеся группы людей. Как написано у них на сайте: "www.farb-rausch.com the demo group that eventually led to .theprodukkt". Некоторые демки есть на сайте theprodukkt.com. В рассылке DIRECTXDEV Фабиан Гизен подписывается как .theprodukkt, а не как farbrausch. Подозреваю, что они это сделали, чтобы название было легче англоязычным произносить.

>Кстати, Вы не занимаетесь разработкой демок?
Нет, демками не занимаюсь. Хотя после написания этого поста очень захотелось заняться :-).

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

Давно интересуюсь демо–сценой. Сам бы тоже хотел что нибудь написать. Правда времени нет что бы шарик анимировать… ;)

А ещё какие–нибудь группы или демки Вы можете для себя отметить как фаворитные?
Для меня группы: Stravaganza(http://pouet.net/groups.php?which=1240) и equinox(http://pouet.net/groups.php?which=48) любимые. ;)

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

>А ещё какие–нибудь группы или демки Вы можете для себя отметить как фаворитные?
Я не так много демок видела: farbrausch, да демки с Chaos Constructions'05. farbrausch понравились больше :-).

P.S. И большая просьба ко всем, давайте все-таки общаться на "ты", так как-то привычнее...

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

Алёна, почему ты выбрала именно DirectX?

Спасибо.

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

>Алёна, почему ты выбрала именно DirectX?

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

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

Спасибо.

А среда разработки какая? Или просто компилятор. Если не затруднит конечно… Только название…

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

>А среда разработки какая?

Пока Microsoft Visual C++ 6.0. Вообще хочу перейти на Code::Blocks IDE, а в качестве компилятора использовать бесплатный, из микрософтовского тулкита. Но перейду или нет - большой вопрос.

Ты пиши мылом, если что, а то тут не очень удобно беседовать. Адрес e-mail есть в профайле.