| Представляем вашему вниманию: Жан Поль Ван Вайверен (Jan Paul van Waveren). Первое из серии интервью, проведенное с разработчиками ID Software онлайн журналом GameSpy
Итак, давайте знакомиться: Жан Поль Ван Вайверен один из разработчиков Quake, работающий в настоящее время в Id Software. Начинал Жан Поль с написания програмы интеллекта ботов для Quake I и Quake II (в том числе и lдля знаменитого Gladiator Bot), Жан Поль также принимал участие в разработке искусственного интеллекта ботов для Quake III, специально ориентированных на игру с человеком в дезматче. В проекте Doom III ему поручили несколько иную работу: модернизировать физический движок (physic engine) и написать принципиально новый детектор столкновений объектов (collision detector)
Три последних года Жан Поль жил в Нидерландах, сотрудничая с Id при помощи современных телекоммуникаций, через Интернет. Все это время он учился и готовился к получению ученой степени (вычислительная техника и информационные технологии). И сейчас, когда он успешно сдал экзамены, Жан Поль подумывает о переезде Соединенные штаты для начала своей по настоящему творческой карьеры. Мы поинтересовались, как получилось, что именно его задействовали в разработке физического движка для Doom III. (Без сомнений, было очевидно, что новый проект очень сильно его волнует).
GameSpy: Твое сотрудничество с Id началось с написания ботов для Quake III?
Жан Поль: Верно, для Quake III Arena, затем доработал их для командной игры в Team Arena. Одновременно я писал диссертацию, что отнимало у меня много времени, пока я не защитился. Тем не менее, я умудрился доделать детектор столкновений объектов до защиты диссертации. А когда я защитился, то приступил к разработке физического движка.
GameSpy: Почему же так получилось, что от разработки искусственного интеллекта вы перешли к детектору столкновений объектов и реализации физики в игре?
Жан Поль: Ну, вообще-то я всегда был больше 3D программистом. Программировал свои собственные небольшие движки. Но написание ботов всегда нравилось мне больше всего, поэтому я очень хотел заниматься ими. Искусственный интеллект развивался, что побудило меня начать писать ботов для Quake1, а потом для Quake2 и Quake 3 Arena, а сейчас я снова вернулся к 3D программированию. Вообще-то я довольно много сделал в 3D программировании для искусственного интеллекта, например, разработал систему зон для карт. Поэтому можно сказать, что я всегда тем или иным образом был вовлечен в 3D программирование, а сейчас вот делаю физику.
GameSpy: Скажи, чем отличается работа над новым движком Doom III по сравнению со старыми Quake движками?
Жан Поль: Я считаю, что Quake движок, который сделал Джон, был фундаментом, с которым действительно просто работать. К проекту Quake3 я присоединился довольно поздно, куда встроил ботов, которые круто играли. Мне это удалось, потому что составные части движка были хорошо продуманы и связаны между собой. В Doom III я занят также и некоторой другой работой, поэтому можно сказать, что в этом и есть отличие.
GameSpy: А какие цели вы прежде всего преследуете, занимаясь физическим движком и детектором столкновений? Как, по-вашему, движок должен работать?
Жан Поль: Прежде всего, мы проанализировали существующие на сегодняшний день реализации других движков и поняли, что одна из общих проблем, которая чаще всего встречается - это алгоритм определения столкновений, основанный на периодичных по времени пересечений объектов друг с другом (Вайверен взял в руки два стаканчика из-под содовой, чтобы проиллюстрировать свои слова, мы к сожлению, эотго не увидим, но представить можно, конечно). Объект перемещается небольшими шажками, и на каждый шаг этого перемещения приходится проверять, не ударился ли он в другой объект. А если этот объект (он берет в руки первый стаканчик) перемещается очень быстро и в один момент времени он здесь, а в другой уже там (ставит первый стаканчик позади второго), то определить их столкновение не удастся. Возникает проблема, как точно определить: где и в какой момент времени произошло столкновение? И мы нашли для этого решение.
В Doom III мы применили детектор столкновений, работающий с полигональными моделями, поэтому можно точно вычислить, где и как перемещается (и вращается) модель, пока не ударит другую, при этом также определялся время их столкновения.
Такой детектор столкновений очень надежный и абсолютно достоверный,
с его помощью всегда можно точно сказать: где и когда столкнутся
объекты, поэтому в нашем физическом движке можно симулировать буквально
все. Даже пули! Пули очень быстро передвигаются, и если к ним применить
старый тест пересечения, то он не будет работать, и пули будут пролетать
сквозь все остальные объекты. А так мы можем даже точно рассчитать,
где и когда и с каким объектом пересекутся пули, где они столкнутся
с окружающей средой и куда срикошетят чистая физика!
GameSpy: А возможно ли двигать пулями объекты?
Жан Поль: Вы видели демо, когда игрок стреляет в ящик? Пуля - такая же полигональная модель в физическом движке, поэтому для нее также рассчитывается точное попадание в ящик. Пуля, естественно, высокоскоростной объект, поэтому передает ящику свою энергию, из-за чего тот начинает перемещаться.
GameSpy: То есть, если выстрелить в ящик из двух разных мест, то ящик по разному отреагирует на это, смотря в какую сторону попасть?
Жан Поль: Да, та же ситуация с монстрами. Если попасть в плечо, то его отдернет назад, если в ноги, то он споткнется. В зависимости от того, куда попасть - каждый раз будет новая симуляция.
GameSpy: В игре мы видели дымовой эффект, это тоже относится к физическому движку или просто спец-эффект?
Жан Поль: Физический движок сейчас работает довольно быстро, но если в нем одновременно обсчитываются тысячи объектов, то, естественно, он будет тормозить. На этот случай мы придумали систему частиц (particle system) для повышения скорости, которую реализовал Грейм Девайн (Graeme Devine). В ней используются схожие с физическим движком методы, и она хорошо подходит для обработки большого количества маленьких объектов в игре.
Система частиц применяется буквально везде - клубящийся дым от ракеты, силовое поле: в действительности все это довольно сложная система взаимодействия частиц, но очень удобная в обращении. Этим занимался Роберт, сделав компактный и более простой механизм для использования частиц. Теперь можно создавать много разных эффектов с использованием моделей, звука, других частиц, что дает возможность разрабатывать действительно потрясающие сцены!
К вашему сведению, когда Имп выводит в комнате потомство (показано в последней карте), в воздухе парят столы, и частицы летают там повсюду. Столы парят из-за того, что в комнате произошел взрыв; один из столов ударяется об лампу, точнее об источник света, висящий на потолке, и начинает покачиваться. От этого повсюду расходятся тени, которые простираются даже на движущиеся физические объекты. Тени порождаются везде, куда не попадает свет, который льется из лампы. Как я уже говорил, движок может делать абсолютно все!
GameSpy: Понятно, а как зрители отреагировали на демонстрацию вашей игры?
Жан Поль: Все были настолько восхищены, что мне было забавно зайти в демонстрационную комнату и наблюдать за их реакцией. Большинство девушек поражались: "о боже!", что поначалу вызывало смех у мужской части, но потом они все притихли! После этого, изредка слышалось только удивленное: "вау".
Интервью является переводом аглийского оригинала проведенного сайтом GameSpy
Перевод ©
® Ser 2002 под ред. Ultra ©
® 2002
|