Советы Курт Арнлунд о програмировании
Курт Арнлунд (Kurt Arnlund), Accolade
Перед тем как оставить Activision и стать ведущим программистом игры Slave Zero в компании Accolade, Курт Арнлунд работал над созданием таких бестселлеров, как Mechwarrior 2: NetMech, серия Interstate '76 и Heavy Gear. Курт говорит, что, приступая к написанию компьютерной игры, программист должен держать в голове три условия успешного завершения проекта: соблюдение баланса между сроками и желаниями, точность в постановке задач, выбор между кратчайшим и оптимальным путями решения проблем.
Компромисс между сроками и желаниями
Разработчик должен постоянно балансировать на тонкой грани между мечтами о «потрясающей игре, которая намного опередит современные технологии» и временем, отпущенным на создание этого шедевра. Громадье планов - типичная причина срыва проектных сроков, обычно укладывающихся в один год. А любая - даже полугодовая - задержка с выходом на рынок влечет за собой риск опоздать: конкуренты гарантированно уже выпустят что-нибудь подобное. Впрочем, проблема обоюдоостра: слишком занизив планку проекта, вы имеете все шансы выпустить игру, которая будет превзойдена конкурентами задолго до релиза вашего нетленного произведения.
Будьте конкретны, предельно конкретны
Одна из главных задач разработчика состоит в том, чтобы придумать великолепную игру, а затем предельно четко и точно изложить свои мысли на бумаге. После этого не остается ничего иного, как передать программисту проектную документацию - и вожделенно потирать руки: еще немного - и мечта станет реальностью. Увы. Программист, приступив к реализации проекта, обычно наталкивается на детали, которые вы не обговорили заранее. И здесь, надо заметить, мало что может вызвать такую же досаду, как небрежность разработчика при составлении проекта. В результате - потеря времени и производительности, ведь программист, обнаруживший недочет в документации, возможно, уже начал писать программу... Чем больше времени вы потратите на раскрытие мельчайших деталей своей идеи, тем меньше создадите проблем для всех остальных. А заодно, получите умопомрачительную игру.
Какой путь выбрать, кратчайший или оптимальный?
Программисты - люди в большинстве своем ленивые. Это так, и ничего с этим не поделаешь. Не верьте, если кто-то попытается убедить вас в обратном. Не замечали, мы почти инстинктивно пытаемся воспользоваться самой короткой дорогой из пункта «А» в пункт «Б»? Порой кратчайший путь - это единственное, что мы видим, приступая к выполнению задачи. Зачем я все это говорю? Так и быть, раскрою вам один маленький секрет. Кратчайший путь далеко не всегда лучший. Как ни жаль, но это правда. Чем больше вы, разработчик, руководитель проекта, понимаете в программировании, тем чаще сможете подходить к своему программисту и говорить: «Слушай, то, что ты тут сотворил, - это, конечно, здорово, но какого черта ты не сделал так-то и так-то? Я ведь именно этого хотел!» Еще лучше, если вы, уважаемый разработчик, действительно знаете, что хотите получить, и зададите конкретный способ реализации с самого начала.
Возможно, у вас появится искушение спросить нас, программистов: если вы знаете, что короткий путь не всегда лучший, то почему не обращаете внимание на действительно лучший путь? Отвечаю: только потому, что лучший путь не всегда является кратчайшим. Вообще-то, это не так уж и плохо, что большинство программистов рассуждают именно так, поскольку это означает, что работа будет сделана вовремя. Если бы при создании программного кода мы стремились к полному совершенству, то проект отнимал бы в три раза больше времени, и при этом он содержал бы только треть планировавшихся деталей. А ведь может быть и того хуже, как с игрой Trespasser, мы закончили ее с перерасходом бюджета и серьезным опозданием, игра просто блистала с технологической точки зрения, но была совсем неинтересной.
А как насчет покупки готового программного ядра, уровня, например Quake II или Unreal? Или собственные разработки - более надежный способ вкладывания капитала?
Трудный вопрос. Я знаю нескольких программистов, которые даже мысли не допускают о лицензионных движках, справедливо полагая, что в этом случае лишатся возможности копаться во всевозможных захватывающих деталях ядра игры, которая им нравится. На мой же взгляд, это не так уж и важно. Если создавать программное ядро с нуля, придется прорабатывать массу технических деталей, от не всегда приятного общения с которыми вы освобождены в случае с лицензией. Лицензионный движок - это, как правило, быстрое создание работающих прототипов, однако со временем вы все равно столкнетесь с необходимостью изучения и, возможно, отладки всех деталей лицензионной технологии. Если, конечно, захотите выжать из нее все, на что она способна. А поскольку у каждого собственный стиль программирования, то лицензионный движок может показаться вам как абсолютно нечитаемым кодом, так и шедевром программирования. Но, скорее всего, это будет нечто среднее.
Далее Курт Арнлунд дает советы начинающим программистам, желающим влиться в игровую индустрию.
Прежде всего необходим соответствующий диплом. Нет-нет, модный и дорогой вуз вовсе не обязателен; просто постарайтесь найти место, где можно получить крепкие знания по математике и (немного) физике, и все будет в порядке.
Вот лучший совет, который я могу дать начинающему программисту: дружище, если ты действительно молишься на игры, ни в коем случае не оставляй своей цели! Посвяти в свои планы всех, кого только можно. Вдруг завтра тебе удастся переговорить с агентом из рекрутирующей фирмы, курирующим нашу индустрию, или, скажем, с программистом, непосредственно работающим в одной из игровых компаний. А еще поднакопи денег и обязательно посети Конференцию разработчиков игр (Game Developers Conference), либо устройся ее обслуживать в качестве волонтера, чтобы получить бесплатный доступ. Старайся общаться с как можно большим числом людей, занятых в этой области, и удача тебе улыбнется. Мне повезло, поскольку мой друг, пытавшийся найти такую же работу, рассказал обо мне агенту по найму...
«Многие начинали с тестирования игр, а со временем становились разработчиками или продюсерами. Главное - упорно идти к намеченной цели, и все получится», - заключает Курт Арнлунд.