Дневники разработчика Arcanum — Часть 3

Arcanum

Сейчас два часа ночи. Последние четыре часа я слушал один и тот же CD. Тара из-под кофеиновых напитков разбросана на моём столе, потому что мусорка переполнена фантиками и кофейными фильтрами. Болят глаза. Может быть, это из-за того, что я спал 21 час назад, а может из-за того, что я уже два дня не снимал контактные линзы. Я принимал утром душ? Что я ел на завтрак? Когда мой день рождения? Хочется пить, но я не двигаюсь. Интересно, мои ноги ещё не атрофировались? Я слышу как по коридору проносится крик. Возможно, это рассыпаются клавиши разбитой об стену клавиатуры. Тишина. Чей-то безумный смех. Может быть, мой? Всё это уже не важно. Дедлайн близок.

Вскоре я просыпаюсь на полу. Тащусь в ванную, умываюсь холодной водой. Над горизонтом поднимается солнце — ещё один прекрасный день в Калифорнии. Это самые одинокие часы жизни разработчика. Пойти домой ради нескольких часов беспокойного сна? Или просто сгонять за кофе с пончиком и поработать ещё чуть-чуть, пока не начались галлюцинации?

На обратном пути из «Dunkin Donuts» я спрашиваю себя: почему всегда так получается? В смысле, эй… мы же профессионалы, чёрт побери! В любом случае, мы должны знать, как составлять графики работ. Восемь часов в день в течение 18-и месяцев — это же прорва времени для десяти парней, которые хотят сделать игру… даже такую огромную как Arcanum. Мы всё понимаем, мы ветераны, матёрые разработчики. Так почему? Почему я всегда возвращаюсь домой, когда по телевизору крутят самые кошмарные сериалы? Эрик Робертс, Майкл Айронсайд, Гарри Хэмлин… Они мне уже все как родные. Почему? Ну почему?

Итак, я таращусь в монитор, мои глаза закипают, я поддаюсь воспоминаниям и пытаюсь понять, куда пропало столько времени.

Мой будильник прозвенел в 8:00. Я должен встать и идти в спортзал. Но я перевёл его на 9:30 — в самый раз, чтобы умыться, побриться и на полчаса опоздать на работу. Когда я пришёл, Тим и Леонард уже были на месте… У всех остальных рабочий день начинается на час позже и они должны присоединиться к нам в ближайшее время. Я захожу и включаю свой компьютер. Начался новый день и мне предстоит многое сделать. Время играет ключевую роль. Я проверяю почту, заглядываю на форумы, совершаю пару покупок в интернет-магазине и прохожу по паре неинтересных ссылок, отправленных мне друзьями по учёбе.

На часах уже 11:30, я помню, что время играет ключевую роль. Я проверяю списки багов и обнаруживаю, что мой сильно разросся за те шесть часов, пока меня не было. Я делаю серьёзное лицо. У меня много работы, так что нужно собраться с духом и сделать её.

Держась за живот, ко мне вваливается Майк Маккарти.

— Чува-а-ак, я умираю с голоду. Пошли, поедим.

— Успокойся, мужик. Мы же только пришли. Давай где-нибудь через час.

Он делает грустную мину.

— Чед, я не шучу. Мне нужна ПИЩА. К тому же, я уже позвал кое-кого из наших, мы встречаемся через 15 минут в Gypsy Den. Погнали.

— Ну уж нет, туда я с вами не пойду. Это точно растянется часа на два. Забудь. Увидимся позже.

Он показывает карточку.

— Всё за мой счёт.

Я потерял примерно два с половиной часа своей жизни, но обед был просто офигенным, если честно.

14:00. Я вернулся в офис и всецело готов начать работу. Больше никаких «попозже»… Я открываю список багов. Первый как-то связан со скриптом, который я написал девять месяцев назад. Этот скрипт был простым, понятным и изящным. В конце концов, его же писал я. Так что, разумеется, меня смутило, что в нём была проблема. Я провёл парочку предварительных тестов и решил, что настало время посовещаться с кем-нибудь, кто может пролить свет на проблему.

В офис Тима Кейна я врываюсь, потому что верю, что аргументы человека, ворвавшегося в чужой офис, звучат убедительнее. Это моё заблуждение, но я профессиональный самообманщик, так что продолжаю врываться в офисы.

— Тим, у нас проблема с моим скриптом, который до вчерашнего дня работал идеально, — я уже научился мастерски объяснять ситуации и расставлять акценты, превознося собственные заслуги. Вдобавок, я нахмурился, чтобы показать, как я возмущён и расстроен.

Тим обращает на меня свой Взгляд. Этот взгляд, должно быть, оттачивался несколькими поколениями клана Кейнов. Он смотрит на меня по-отечески снисходительно и в то же время раздражённо. Так долго, что это начинает пугать. Но сегодня я твёрдо намерен выполнить свою работу и даже Взгляд меня не остановит.

— Ты проверял этот скрипт? — сказал Тим своим Голосом. Голос прекрасно дополняет Взгляд и создан для риторических вопросов.

— Разумеется. Смотри, он работает если… эй, что это такое?

Моё внимание привлекла какая-то магнитная штуковина на столе. Насколько мне известно, каждый программист держит на своём столе одну или две каких-то штуковины. Большинство из них, похоже, простым и понятным путём доказывает элементарные физические законы. Я полностью поглощён. Некоторое время я вращаю эту штуковину и размышляю.

— Знаешь, думаю, я мог бы сделать вечный двигатель из этой штуки.

— Нет, Чед. Это невозможно.

— Я серьёзно, вот смотри…

В течение следующего получаса мы сидим и дискутируем о термодинамике и Ньютоне. В моей голове крутятся гениальные чертежи, но внезапно я вспоминаю, зачем пришёл.

— Слушай, мне же нужно разобраться с этим скриптом. Хватит игр! Я серьёзен! Что не так с моим скриптом?

Тим сидит пару секунд, задумавшись, и тут его осеняет:

— О! Так это проблема Джесси, а не моя. Он на днях менял какие-то параметры в контроллере анимаций. Поговори с ним.

Наконец-то! Похоже, что всё налаживается. Я иду в офис Джесси, готовый добраться до сути проблемы.

Джесси Рейнолдс — наш программист и заядлый коллекционер картин, игр и мерча «Дилберта». Кроме того, он фанат научной фантастики, что, по-моему, очень круто. Но сегодня рабочий день и на повестке дня куча багов, которые надо отследить. Джесси сидит в своём офисе, облокотившись на полки с книгами. Он снимает наушники и терпеливо ждёт.

— Да?

— Привет, Джесси! Я отследил один баг… и Тим послал меня к тебе. Нужно что-то сделать с контроллером анимаций. Мой скрипт перестал работать из-за изменённых параметров.

Джесси на секунду задумывается:

— Знаешь, я думаю, что проблема в AI, но никак не в анимациях. Джейсон недавно менял там какие-то параметры. Наверное, тебе лучше поговорить с ним.

— Так и поступлю.

Я уже почти вышел из офиса, но не выдерживаю и говорю ему:

— Кстати говоря об AI, я на днях взял ту книгу Дэна Симмонса…

Я опомнился только через двадцать минут, когда голод снова дал знать о себе.

По дороге в офис Джейсона я сталкиваюсь с Йоном Паком. Или, точнее сказать, он пролетел мимо меня. Йон — наш художник, нарисовавший огромное количество материалов для Arcanum за последние два года. Йон всегда в движении. Думаю, одно с другим как-то связано, но сейчас мне некогда об этом думать.

— Привет Чееее… ееееед, — его голос утопает позади, и дверь закрывается за ним быстрее, чем я успеваю хоть как-то отреагировать. Но скорость и настрой Йона вдохновили меня, так что я продолжаю путешествие с новыми силами.

Джейсон Андерсон — один из основателей Troika Games. У нас с ним очень сложные отношения. Мы оба мученически отдаёмся созданию игр. Нередко мы берём на себя ответственность исключительно для того, чтобы получить больше жалости от наших коллег и друзей. Сегодняшний день не исключение. Схватка начинается почти мгновенно.

— Здорово, Джейсон. Слушай… я сидел здесь вчера до четырёх часов утра, делал то, за что никому не хотелось браться, а когда пришёл сегодня утром, меня ждал список с 500 багами, и первый связан с этим скриптом, который не работает, потому что кто-то изменил параметры AI, не сообщив мне.

Но Джейсон был готов к контратаке:

— Да… это я поменял их. Извини что не сказал тебе, я был дома этой ночью… Не спал где-то до шести утра, мне нужно было работать над игровым балансом и дорисовать кое-что из того списка, который ТЫ дал мне. К тому же, никак не мог до полуночи уложить Гвин спать, а мой компьютер трижды зависал, пришлось переустанавливать систему. Дважды.

Он покачал головой, борода Джейсона красноречиво убеждала меня, что ему приходится гораздо тяжелее. Я молчал. Я был повержен. Я исчерпал свои резервы жалости.

— Нууу… что ж… всё будет хорошо. Но что ты думаешь об этом баге?

— Тебе нужно поговорить с Маккарти. Он занимается AI. Если нужно изменить какой-то параметр, ты должен проверить это с ним, а затем я внесу правку, — он тяжело вздыхает. — Если будет время.

На этот раз мне было чем ответить:

— Я понял, куда ты клонишь. Просто на исправление этого бага у меня ушёл целый день, и я всё ещё пытаюсь разобраться с ним. Такие вещи способны испортить все планы.

— Не нужно объяснять мне это, — сказал он.

— Ну, тогда пойду поговорю с Майком. До встречи.

— Хорошо. Но будь осторожен.

— Почему? — спрашиваю я.

— Ты же знаешь Майка и его джедайские уловки.

Я проработал рядом с Майком Маккарти последние три года. Я встретил его, когда он был стажёром в Interplay, и мы целый год находились в одном кабинете, пока я не пришёл в Troika. Майк присоединился к Troika примерно через шесть месяцев после меня. Он очень талантливый аниматор, музыкант и устный стратег. Майк хорошо справляется в области убеждений и доверия. Он в раннем возрасте осознал, что лучшее решение проблемы зачастую то, которое лучше объяснено. Он изъясняется гиперболами и процентными соотношениями. Обычно он — чемпион среди простых людей.

Перед тем как войти, я мысленно подготовил свой разум к сопротивлению.

— Майк… можно мне с тобой минуту переговорить?

Он поворачивается ко мне.

— Конечно, приятель. Что тебе нужно?

— Про тот баг, который я нашёл. Я его, наверное, через всех отследил, и это, по-моему, имеет какое-то отношение к изменению в параметре AI, на который ты дал зелёный свет. Думаю, нам нужно поменять его обратно.

Майк отрицательно покачал головой.

— Блин, хотел бы я, чтобы это было возможно. Но мы никоим образом не можем даже ДУМАТЬ о том, чтобы отправлять эту игру без данного параметра в текущем виде. То есть, как мы можем-то?

Он почти убедил меня. Но что-то не даёт мне убежать обратно в свой офис.

— Э… погоди. Мы последний год играли в эту игру со старым параметром. Когда это он успел стать такой помехой?

Майк улыбнулся, терпеливо пытаясь изъясняться как можно проще.

— Приятель, мы оба знаем, что игра не была до этого такой уж крутой. Теперь она такая. Тебе всё ясно?

Начинаю теряться.

— Я… мне?

— Конечно тебе, дружок. Ты умный парень, — он вынул свою Cassiopeia, лениво застрочив на её экране. — Я думаю, что, по крайней мере, 83% всех, кто играет в эту игру, увидят реальную разницу. А это означает продажи, приятель.

— Я… пожалуй, ты прав, Майк. Постараюсь это проработать, — на часах 18:00, а мне всё ещё не ясно, как исправлять этот баг. Мне нужно бодренько взяться за это дело и побыстрее. Следующие несколько часов — решающие. Так что я спрашиваю у Майка, не хочет ли он перехватить немножко еды. Я угощаю.

Два часа спустя я снова в офисе. Начало операции. Лучшую свою работу я выполняю в ночь. Готов шлёпнуться о землю на бегу. Я знаю как раз нужного человека.

Марк Гаррисон — наш программист, ответственный за Arcanum World Editor. Это был крупный кусок всей работы над игрой. Я довольно часто оказываюсь у него в офисе. Марк как раз возвращался с ужина.

— Марк! Ты как раз тот, кто мне был нужен! Слушай… у меня тут проблема…

— Ага… я слышал об этом. Нечто, связанное с параметрами AI? Тим мне рассказывал об этом за обедом.

— Правда? А что вы, ребята, ели?

— Сырую рыбу, — лицо Марка мрачнеет. Он очень серьёзно относится к своим суши. — Мы опробовали новое местечко в Тастине.

А теперь момент истины. Мне надо ещё кучу работы сделать, уже около полуночи. Мне нужно быть сосредоточенным. Нужно быть упорным.

Но мне просто необходимо узнать!

— Как пошло сашими из тунца?

Через сорок пять минут я уже знал имя шеф-повара и пятёрку лучших блюд в меню.

Марк повернулся ко мне прямо перед уходом.

— О, и насчёт твоей проблемы. Я наверняка смогу выставить флажок в World Editor, который всё поправит, но тебе придётся переговорить с Крисом, узнать, нет ли с этим проблем. Увидимся утром.

До меня начинает доходить, что для меня утро настанет задолго до него.

После разговора с Марком я уже смирился с тем фактом, что этот конкретный баг никак не выйдет исправить в такие временные рамки, в которые мне бы хотелось. Меня это встревожило, так как я создание воли и расторопности. Будучи ветераном разработки игр, я смотрю на мир через призму прагматичности. Я потащился в офис Криса Джонса, нашего программиста графики, надеясь устроить всё так, чтобы этот конкретный баг был как-нибудь выветрен до наступления глухой ночи.

Крис сидит в своём офисе, погружённый в нечто, что оказалось у него на экране. Так как его экран смотрит в противоположную от двери сторону, я никогда не знаю точно, над чем он там работает. Но, судя по его взгляду, это должно быть чрезвычайно важно. Не думаю, что мне за всю мою жизнь доводилось видеть более напряжённое выражение лица. За исключением, наверное, последнего раза, когда я наведывался к Крису в офис. Крис — личность напряжённая, он выработал технику проявления данной напряжённости во всём, что говорит и делает. Я заметил, что даже воздух в его кабинете сотрясается от потенциального напряжения. Я представил, как жужжит ковёр, пронизываемый кинетическими вибрациями. Он поднял на меня взгляд, ничего не сказав.

— Э… привет, Крис. Как дела?

— Не особо, — он опустил взгляд обратно на экран. Напряжён. — Что тебе нужно?

Весь запал, скопившийся во мне по теме этого бага, выходит из меня, словно воздух из проколотой шины.

— Ну… я… э… есть у меня тут проблема с этим багом. Я, как бы, надеялся, что… ну… то есть, это, как бы, в AI дело, но Марк сказал…

Его глаза не отрываются от экрана. Он печатает со скоростью миллион миль в час.

— Просто расскажи мне о проблеме.

Каким-то образом я вытягиваю из себя слова. Офис напоминает скороварку. Если я отсюда быстро не уберусь, меня начнёт скрючивать. Время течёт так, будто я на «горизонте событий».

— Хммм. Окей. Я займусь этим.

Перевод: Баг искоренён.

Я выдыхаю с чистейшим облегчением. С багом #1 из 500 покончено. В первый раз за весь день я чувствую расслабление. Чувствую позыв перетереть с кем-нибудь о чём-нибудь, не связанном с работой. Я в настроении вернуться к реальности.

— Спасибо, Крис. Я признателен, — я делаю ещё шаг в комнату. — Ну, так как у тебя там дела?

— Хорошо, спасибо, — его глаза не отрываются от экрана.

Возможно, он не улавливает месседж. Я беру перерыв, вот оно.

— Значит… э… большие планы на выходные?

— Не очень, — печатает дальше.

— Верно. Ну… э… как насчёт этих Lakers?

Он останавливается, поднимает на меня взгляд.

— А, извини, Чед. Мне тут нужно поработать.

Я иду назад в свой офис, немного удручённый. То есть, можно ведь ВООБЩЕ парню расслабиться-то? Не то, чтобы я сам не видел отдыха целый день напролёт. Я расселся в своём кресле, глядя на список багов перед собой. Я смотрю на свои часы. Время — 22:00. Я пробыл здесь двенадцать часов.

Леонард Боярский, арт-директор и друг, заглянул по пути. Леон был здесь с 7:00 утра. Он человек семейный, у него двухлетняя дочь по имени Саманта. Леон не придумал способа объяснить ей, что не совсем подобающим является просыпаться в тёмное время суток. Леон был вынужден осторожно поддерживать баланс между сном, работой, семьёй и своим собственным здоровьем. Леон расползается по швам.

— Как дела? — спрашивает он.

— Баги фиксим, Леон. Это будет допоздна.

— Паршиво.

В настроении Леона отсутствует всякая видимость сожаления или сочувствия. Конечно же, это может быть в силу того факта, что он балансирует на грани полного истощения.

— Ага. Просто один из этих дней.

— Пожалуй, — Леон зашаркал прочь, направляясь к свободе. — Не засиживайся допоздна.

Ему легко говорить. Он, очевидно, понятия не имел, с чем я здесь связался.

Шэрон Шеллман приходит в районе 23:00. Шэрон — наш офисный менеджер, PR-специалист, дизайнер, и наша «стайная мамочка». Она работает по утрам, уходит домой к своей дочери Гвин, затем приходит обратно, в ночь, чтобы ещё поработать. Она весьма преданная личность. Приносит с собой печенье почти каждый день.

Я всё ещё занят багом #2, она входит ко мне в офис. Этот баг занял у меня много времени, потому что я разговаривал со своей подружкой Дианой. Диана окружала меня вниманием и заботой — даже ветеранам разработки игр время от времени требуется эмоциональная поддержка. Шэрон качает головой, смеётся.

— Опять на телефоне?

— Подожди, дорогая… прошу прощения, Шеллман? Что ты говорила?

— Я сказала «Опять на телефоне?» Извини… я забыла добавить «сачок».

Это было уже слишком. Я был почти на грани.

— Ага, ну и что. Я не был весь день на телефоне. Я работал над правкой багов. Созданием этой игры. В окопах. Comprende?

— Поплачься мне тут, — говорит она. — Ты разобрался с теми багами, что я тебе прислала?

Я зевнул, глядя на свои часы. Может быть, пойду домой сегодня вечером пораньше. Для ветеранов вроде меня полночь наступает раньше.

— Ага, с некоторыми. Я, скорее всего, покончу с ними к концу недели.

Шеллман смеётся.

— Извини. Ты разве не получил присланное мной письмо? С этими тебе придётся закончить до завтра… мы отсылаем билд в Sierra, и эти баги в приоритете, — она разворачивается, направляется обратно к себе в офис. — Удачно повеселиться!

Не будь у меня и так огромная проседь, я бы бесконтрольно разрыдался. На деле же я сдержался, тихо заскулив.

Дэйв Брэгг, наш стажёр-на-все-руки, составляет раннюю смену в Troika. Он приходит где-то в 5:30. Дэйв приходит пораньше, чтобы потом уйти пораньше. Очевидно, Дэйв пока не уловил, что разработчикам игр не положено иметь личную жизнь. Он нашёл меня, провалившуюся в своё кресло жертву необычайно воинственного бага #5. Я устал. Я выжат. Если выпью ещё хоть чашку кофе, произойдёт самовозгорание.

— Хей, Чед. Ты пробыл здесь всю ночь?

— Ага. Надо покончить с этими багами до конца дня.

— Что ж, удачи, — у Дэйва в руках коробка пончиков. — Пончик хочешь? Я прихватил по пути сюда.

— Конечно. Спасибо, — я взял «медвежью лапу». Дэйв уходит. Я откусываю. Хорошо. Очень хорошо.

Я снова смотрю в свой экран. Мне так много надо сделать. Нужно браться по-серьёзному. Вперёд и с песней. Искоренить все баги.

Но я уже на полпути к двери. Я просто обязан выяснить, где он берёт эти пончики.

Ну ладно. Может быть, не каждый день всё так плохо. Но суть дела в том, что, когда ты создаёшь игру, ты просто никогда не знаешь, что произойдёт дальше. Создание расписаний — коварное дело. Обычно оказывается так, что ты берёшь свои прогнозы и удваиваешь их, а затем удваиваешь их снова, а потом удивляешься, откупоривая кофеиновые таблетки в конце месяца. Ответ? Разработка игр динамична, сложна и непредсказуема. Даже те, кто не склонен (как я) к периодическим странностям, скажут вам то же самое. Просто никогда не знаешь, что произойдёт дальше.

Здесь, в Troika, всё даже круче. У нас есть 10 парней, создающих игру, для которой, по-хорошему, потребовалась бы команда размером в три раза больше. Мы здесь все носим кучу колпаков, и все мы провели несколько поздних ночей (вплоть до раннего утра) в офисе. Трудно ли это? Конечно. Жертвуем ли мы чем-то? Постоянно. К несчастью, это, кажется, норма среди небольших контор разработчиков, вроде нашей. Стоит ли оно того, по-нашему мнению? Определённо. Никаких сомнений. Мы любим эту игру, и мы не желаем выпускать её из рук, пока она не достигнет совершенства. Так что мы продолжим создавать расписания и работать поздно ночью, а я буду дальше жаловаться на это, прямо до самого конца.

Мне пора вернуться к работе. От всей этой писанины я жутко проголодался…

— Чед Мур, ведущий дизайнер