Программист Искусственного Интеллекта (AI) – профессия не слишком известная, но чрезвычайно важная. Все мы любим увлекательные одиночные игры, и от того, насколько умен, изощрен и непредсказуем компьютерный соперник, зависит львиная доля удовольствия. Нас впечатлила система симуляции жизни в S.T.A.L.K.E.R, и в поисках ответов мы обратились к Дмитрию Ясеневу, ведущему программисту AI студии GSC GameWorld. Сейчас Дмитрий вместе с Андреем Коломийцем работает ведущим программистом на анонсированном недавно проекте под названием «S.TA.L.K.E.R: Чистое Небо». Полное имя: Ясенев Дмитрий Анатольевич Дата рождения: 06.01.1979 г. Никнейм: neo Специализируется в: программировании ИИ Работал над: S.T.A.L.K.E.R.: Shadow of Chernobyl Последняя впечатлившая игра: F.E.A.R. Обычно одет в: кроссовки, джинсы, футболку/гольф По жизни любит: общество интересных людей Не любит: хамства Девиз: Относитесь к людям так, как хотите, чтобы они относились к вам Приветствуем, Дмитрий! Как вы стали программистом?
Здравствуйте! Мой папа – кандидат в мастера спорта по шахматам, он научил меня двигать фигуры еще в дошкольном возрасте, поэтому первой моей мечтой было стать чемпионом мира по шахматам. Но так как родители закончили факультет кибернетики КНУ им. Шевченко и работали программистами, то за ужином они обсуждали работу, а я их не понимал, но очень хотел поучаствовать. Тогда я подумал, что, когда вырасту, то обязательно стану программистом, чтобы говорить с ними на одном языке. Так оно и получилось. После окончания лицея поступил на факультет кибернетики Киевского Национального Университета им. Шевченко. Обучение в университете здорово расширило мой кругозор, хотя к тому времени я уже умел главное – учиться. Иногда учиться было интересно, иногда – тяжко, особенно на первом курсе, но все-таки я успешно закончил магистратуру. Бросать университет мне не хотелось, так как со второго курса я уже работал программистом, у меня получалось совмещать учебу с практической деятельностью. Кроме того, у меня было домашнее увлечение: сначала архиваторы (еще со школьных времен), а потом интеллект для настольных игр.
Если говорить о системе образования, то, кроме бесспорно необходимой теоретической базы, хотелось бы больше внимания к прикладной части – не деталей, но именно обзоров существующих технологий, ведь важно знать ситуацию в целом и понимать, как правильно составить запрос в Google. В свое время этот пробел мне, как и всем, пришлось устранять самому.
Как вы попали в игровую индустрию?
На тот момент я заканчивал писать диплом и искал работу, которая бы мне нравилась. Мама помогала мне в поисках, кстати, именно она прислала мне вакансию программиста AI в GSC GameWorld. Я пришел на собеседование, пообщался с ведущими программистами проекта, показал свою программу, играющую в реверси, поговорил с Антоном Большаковым, потом с Сергеем Григоровичем, хорошенько взвесил другие варианты, и согласился на испытательный срок.
S.T.A.L.K.E.R. Когда вы пришли в проект? Чем он стал для вас?
Я пришел в проект 19 марта 2002 года, когда уже был готов уровень с пирамидами, а работало над ним, если я не ошибаюсь, пять человек: два программиста, два художника и геймдизайнер. Этот проект стал для меня серьезным испытанием. Рядом люди, делавшие «Казаков», выпускали продолжение за продолжением, создавались и выходили другие игры (HoverRace, FireStarter), а S.T.A.L.K.E.R. все это время разрабатывался. Было много трудностей, не хватало подготовки, отсутствовал опыт. Для многих людей S.T.A.L.K.E.R. стал дебютом, для остальных он был первым проектом такого уровня. После лестных отзывов о технической демке 2001 года среди разработчиков бушевали страсти: порвать всех! С одной стороны, это хорошо, когда проект отвечает уровню амбиций команды, с другой, мы не успевали делать каждую составляющую лучше, чем у всех. Аврал начался с самого начала разработки, каждая выставка бралась приступом. Проделано много работы, но из-за отсутствия прототипирования многие вещи, которые были придуманы и реализованы, так и не попали в финальную версию игры по разным причинам. Для меня самого «Сталкер» стал очень важным этапом в жизни, своего рода школой геймдева.
Сколько усилий потребовало внедрение симуляции жизни? Насколько вы были первопроходцами в этой области?
Сама идея возникла в мае 2002 года. Несмотря на то, что до этого уже были игры с чем-то подобным («Космические Рейнджеры», например), идею придумали заново. Мне показалось, что если создать мир, живущий по простым и понятным законам, он сам обеспечит разнообразный и интересный геймплей. Подтверждением этому служила небезызвестная игра «Жизнь Конвея», которая, имея всего три правила, заставляла меня в лицейские годы долго наблюдать за ее работой. Также сыграла роль «Реверси», девиз которой гласил: «A minute to learn – a lifetime to master». Идея симуляции, родившаяся под напором требований к игре, которые выдвинул наш геймдизайнер Алексей «Koan» Сытянов, очень ему понравилась. Объединенными усилиями мы отстояли задумку перед программистами, высказывавшими недовольство тем, что спаун (spawn – появление объектов на уровне) становился непредсказуемым. После месяца споров решили все-таки сделать в движке поддержку динамического спауна, что дало жизнь симуляции. В декабре 2002 года я сел за реализацию симулятора, и 1 марта 2003 года мы впервые запустили симулятор на реальном уровне.
Какие чувства были, когда узнали, что игра ушла на золото и 23 марта появится в продаже?
Узнали мы об этом 27–28 февраля, я уже точно не помню, так как до этого был сплошной аврал, начавшийся в середине января, и практически без выходных (у меня было два выходных, один из которых – больничный, половина команды работала в аналогичном режиме). По поводу результатов – я рад, что имел честь участвовать в проекте такого масштаба. Здорово, что мы сумели его выпустить, ведь если бы он не вышел 23 марта, он не вышел бы уже никогда. Я доволен результатом. Кто бы что ни говорил, но S.T.A.L.K.E.R. получился качественным продуктом. Хотя мы не сумели воплотить все, что собирались, но иначе в том положении, в котором мы оказались, не выпустили бы совсем ничего.
Готовы ли вы сейчас потратить пять лет на новый проект такого же колоссального масштаба и влияния на индустрию?
Это слишком большой срок, и мы столкнулись с самой главной бедой долгостроев – устареванием технологий, особенно графических. Поэтому пять лет (а насколько мне известно, проект начал разрабатываться осенью 2000 года, то есть, в общей сложности, шесть с половиной лет) – это слишком много для проекта любого уровня. три года – максимум, а лучше – 18–24 месяцев. Сейчас, имея на руках готовый продукт, можно проводить все изменения последовательно, так, чтобы релизы не затягивались надолго, что мы и постараемся сделать.
Чем вы занимаетесь сейчас?
Пока что я собираюсь воплотить те идеи, которые по тем или иным причинам остались нереализованными в оригинале. Кроме того, за время создания проекта выкристаллизовались и другие идеи, которые мы тоже обязательно попробуем осуществить. Также активно занимаюсь внедрением своего нового middleware-AI, хочу написать пару статей, чтобы поделиться приобретенным опытом с коллегами: я им многим обязан, пришло время и мне внести лепту в копилку знаний.
В руках у Дмитрия самый первый отпечатанный диск «Сталкера» украинского производства!Медовый месяц на Кипре в прошлом году. Как работают художники в игровой индустрии, мы примерно представляем, но чем занимаются программисты AI, понимаем очень смутно.
Программист AI решает немало задач, они меняются от проекта к проекту, и в «Сталкере» они были такими:
Подсистема симуляции жизни, которая следит за оффлайновой (невидимой для игрока) жизнью объектов, контролирует, какие объекты переходят в онлайн, какие – наоборот, уходят в оффлайн, эта подсистема также ответственна за сохранение и загрузку сейвов.
Навигация персонажей (генерация навигационных графов, построение путей по ним, сглаживание этих путей, движение по путям, обход динамических препятствий при движении по путям, движение по патрульным графам, учет при всем этом пространственных ограничений, которые назначены персонажу геймдизайнерами), в нашем случае при отсутствии бесшовного мира сюда еще входит и навигация персонажей по общему графу симуляции, который включает в себя все уровни игры, переходы персонажей с уровня на уровень и т. д.
Тактические подсистемы (генерация укрытий, их умелое использование во время боя).
Скриптовая подсистема для расширения возможностей движка.
Персонажей необходимо «вооружить» органами чувств: зрением, слухом; они должны ощущать, когда им наносятся повреждения, должны уметь обрабатывать сырую информацию, чтобы вместо, например, видимых/невидимых объектов оперировать величинами другого уровня абстракции, как то: опасности, враги, вещи, которые можно подобрать, и т. д.
Персонажи должны уметь принимать решения. Для этого они у нас выбирают цели (например, решить загадку Зоны) и далее с помощью планировщика строят план действий для достижения этих целей, а потом его выполняют.
Персонажи должны осуществлять какое-то воздействие на окружающий мир: проигрывать анимации, двигаться, менять ориентацию в пространстве, отыгрывать звуки, взаимодействовать с объектами (стрелять или целиться из лучшего оружия), многое они делают одновременно. Например, во время передвижения персонажу нужно смотреть в определенную сторону, при этом он может параллельно стрелять из автомата, перезаряжая его, если магазин пуст или заклинило и т. д.
Групповое взаимодействие персонажей между собой во время боя (распределение опасностей, врагов, обмен информацией, отыгрывание разных ролей и т. д.). С помощью такого инструментария необходимо реализовать базовые универсальные модели поведения для персонажей: обработка опасностей, бой и т. д.
С какими трудностями пришлось столкнуться?
Главная беда была в том, что отсутствовал опыт разработки игровых проектов, не говоря уже о проектах с размахом «Сталкера». Из-за этого почти все делалось впервые. По поводу симуляции – ничего сложного в ней нет, просто обычно люди к ней не стремятся: задач более низкого уровня им и так хватает. Также обычно AI начинают заниматься слишком поздно, поэтому времени на подобные вещи не остается. Кроме того, даже в эти затянутые сроки нам не удалось реализовать и половины того, что мы хотели сделать изначально. Задача сама по себе была грандиозной, и я не представлял себе все сложности, с которыми нам пришлось столкнуться. Симуляция – очень неудобная вещь для разработчиков, ее крайне тяжело отлаживать. С точки зрения пользователя, вы никогда не можете предсказать, с какой стороны на вас выбежит тварь, а с точки зрения геймдизайнера, вы никогда не угадаете, как она сломает вам сюжетную сцену.
Как вдохновляетесь и настраиваетесь на рабочий лад?
Необычными идеями, неважно из какой области. Помню, всю ночь не мог уснуть, когда ускорил разом на 30% свою программу по реверси, за счет чего она сумела обыграть доселе недостижимую для нее программу чемпиона мира (Logistello). Или когда после очередного варианта «комбата» (поведения персонажей в бою) геймдизайнеры обрадовались действиям AI. Такие случаи приятно переживать и вспоминать, они вдохновляют на решение новых задач.
Работать нужно, но и отдыхать тоже обязательно! Насколько сильно помогали вам семья и друзья во время пятилетнего труда над проектом?
Хочу от всего сердца поблагодарить жену, родителей, родственников и друзей за то, что они были рядом со мной в трудные моменты, за то, что силой выдергивали меня из насыщенного графика работ, чтобы я отвлекся, получил новые и свежие впечатления. Без их поддержки мне было бы гораздо сложнее пережить этот марафон.
Что пожелаете новичкам?
Честно говоря, я не считаю себя гуру, чтобы кому-то давать советы, но раз уж вы спрашиваете, то посоветовал бы никогда не останавливаться на достигнутом, не переставать учиться и совершенствоваться. Украинский философ Григорий Сковорода говорил, что у каждого человека есть прирожденное занятие, которое сделает его счастливым. Желаю всем найти это занятие для себя и заниматься им в свое удовольствие. <<Интервью: S.T.A.L.K.E.R: Чистое Небо