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

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


Они собраются выпустить и утилиту .werkkzeug3, которую написали, чтобы сделать игру. Давно уже собираются...
Меня в их демках очень заинтересовала работа с прозрачностью. Очень похоже, что она не зависит от порядка отрисовки.
Один из программистов, работавших над .kkrieger'ом, Фабиан Гизен (Fabian Giesen) рассказывает Гамасутре:
"
Какой язык использовался при написании .kkrieger'а?C++ и немного кода на языке ассемблера, там где это было действительно нужно: в основном для циклов генерации текстур и для синтезирования звука.
C++ это пожалуй единственный язык, который удовлетворяет нашим специфичным требованиям. У нас есть как низкоуровневые (управление памятью, генерация текстур), так и высокоуровневые (граф сцены, управление миром) компоненты, и нам нужен язык, который подходит для обеих задач, и чтобы это поддерживалось компиляторами и при этом позволяло нам писать компактный код."
"
Какой совет вы можете дать тем, кто разрабатывает свои собственные графические 3Д программы?Пожалуй самая важная вещь - это знать когда остановиться. Особенно небольшим командам. Совершенно невозможно сделать нечто, что "побьет" крупные софтверные компании, если вы будете пытаться сделать все так, как делают они.
Пробуйте странные решения, которые никто не использует. Заинтересуйтесь проблемами, которые до конца еще не изучены. Пробуйте нестандартные подходы. Это то, в чем плохи крупные компании, потому что они должны придерживаться дедлайнов, соответствовать ожиданиям пользователей. Это то, где вы можете достигнуть действительно новых и интересных результатов: взять одну новую идею и развить ее настолько, насколько возможно."
Ссылки по теме
.theprodukkt.kkrieger. Для работы требуется сравнительно быстрый компьютер и DirectX9.
Interview: Frugal Fragging with .kkrieger. То самое интервью с Гамасутры. Чтобы читать статьи на Гамасутре надо регистрироваться, но регистрация там быстрая и бесплатная.
Видеоролик с рассказом о том как делался .kkrieger. 54Мб, однако.
------------