Жизнь в мире компьютерных игр — страница 52 из 58

с однопользовательскими играми, качество мультиплеера в Gettysburg! стало очевидно тогда, когда весь наш офис стал подолгу засиживаться за игрой в него после работы. Сам я не очень люблю дух соперничества: самое жесткое, что я могу сказать в словесной перепалке, – это напомнить своим сотрудникам, что я их начальник (предположительно, после этого они должны позволить мне выиграть). Но когда слышишь, как ребята радостно поддразнивают друг друга в соседней комнате, а коллеги за них болеют, то знаешь наверняка: ты сделал что-то особенное. К сожалению, этот опыт сыграл со мной дурную шутку в работе над Civilization Revolution: я слишком поверил в то, что в предстоящей мне работе не будет ничего сложного.

В отношении игры онлайн всегда необходимо учитывать два фактора: задержка и синхронизация. Первый параметр выявить куда проще, и игроки могут быстро его определить, но вот второй способен сильно все испортить. Более того, улучшение задержки часто приводит к проблемам с синхронизацией. Для того чтобы ее сохранить, то есть чтобы оба компьютера одинаково воспринимали происходящее в игре в каждый конкретный момент, необходим постоянный взаимообмен данными.

– Я выстрелил из пушки, – сообщает первый компьютер.

– Да, ты выстрелил из пушки, – отвечает ему второй. – Ты попал вот в эту цель.

– Да, я попал вот в эту цель.

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

– Я в тебя попал!

– Нет, ты промазал! – И игра вылетает.

Самое простое решение этой проблемы, которое мы с успехом применили в Gettysburg! – это передавать полные логи состояния игры от одного компьютера другому.

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

– Хорошо, я тебе верю.

Любые противоречия переписываются при следующей передаче данных. Изображение на экране может иногда чуть-чуть подпрыгнуть, когда, например, корректируется расположение одного из солдат или кто-нибудь погиб от таинственного выстрела, который никто никогда не делал, но если все эти несоответствия быстро устраняются, игра будет идти ровно и выглядеть логично для обоих игроков.

Но даже в упрощенном, по сравнению с основной версией, игровом процессе Civilization Revolution содержала слишком много данных, чтобы передавать можно было все сразу. Нужно было учитывать и расположение армий, и экономические показатели, и уровни счастья населения, и запасы продовольствия, и статусы соглашений о перемирии, и особенности ландшафта… И все это максимум для пяти цивилизаций одновременно. Именно по этой причине предыдущие версии многопользовательской Civilization упрекали в медлительности и отсутствии баланса: полусекундное зависание и разворот армии на 45 градусов было простительной помехой, но 10-секундное зависание и прыжок армии на другой континент – уже нет.

Но единственный альтернативный вариант таил в себе серьезные риски.

– Мои солдаты здесь, твои – там.

– Да. Мы передвинули одного в сторону Севера.

– Мы передвинули одного в сторону Востока.

– Мы потеряли одно очко здоровья.

– Мы приобрели два очка продовольствия.

– Мы передвинули одного на Запад.

– Подождите, вы не могли бы повторить?

Передача одних только произошедших изменений была куда более эффективной, и так игра не тормозила и шла на приемлемой скорости. Но малейшая ошибка синхронизации грозила катастрофой, способной обрушить всю игру, потому что у нас не было возможности восстановить с нуля весь перечень команд, которые передавались туда-сюда на протяжении нескольких часов. Я потратил многие месяцы, устраняя ошибки синхронизации, чтобы генераторы случайных чисел для любого возможного сценария совместно использовались в обеих системах или, наоборот, были изолированы – смотря что было нужно в конкретной ситуации. В итоге мои усилия не пропали даром, потому что игра обрела на удивление преданных фанатов среди любителей планшетных онлайн-игр. И все же я рад, что с тех пор мне ни разу не довелось повторять ничего подобного. Мне было бы приятно сказать, что так произошло благодаря талантливым программистам, которые нашли более элегантное решение этой проблемы, но реальность была прозаичнее: скорость передачи данных увеличилась настолько, что мы смогли посылать целиком большие куски объемных игр и при этом не бояться лагов.

У случайно генерируемых чисел есть одна интересная особенность: на самом деле они не случайны или, по крайней мере, не настолько случайны, как мы вам об этом говорим. Когда результаты действительно случайны, люди начинают проигрывать гораздо чаще, чем рассчитывают. Из определения слова «средний» следует, что у большинства из нас именно такие способности, но нам-то хочется думать, что мы лучше других – это подтверждается хотя бы тем, что мы вообще стали играть в видеоигру. Быть магнатом, королем, капитаном корабля – все это не для средних людей, как и все остальные иллюзии величия, которые мы предлагаем игрокам. И все же они берут коробку с игрой, читают текст, напечатанный на оборотной стороне, и говорят себе: «Конечно, с этим я справлюсь». Этот далекий от реальности, но зато устремленный к веселому времяпрепровождению образ мысли заложен в большинстве форм развлечений. Рэмбо всегда расправляется с плохими парнями, а Шерлок Холмс разгадывает тайну. Единственная сфера, где мы ожидаем, что большинство окажется в роли проигравших – это профессиональный спорт, но даже там аутсайдеры регулярного сезона в следующем получают преимущество в драфте. И участвуя в событии, и наблюдая за ним, фанаты требуют справедливости, иначе они не получат от зрелища чувства удовлетворения. А ведь случайность – полная противоположность справедливости.

Иллюстрирующие это непонимание примеры встречались мне на пути на всем протяжении моей карьеры, но только в процессе работы над Civilization Revolution я в полной мере осознал, в какой степени люди нерационально воспринимают случайные события.

Мы подумали, что будет здорово отображать на экране вероятности исходов каждой битвы – частично потому, что игрокам будет интересно следить за статистикой, частично для того, чтобы решить проблему, которая стала на форумах постоянной темой для шуток. Она произрастала из того, что ни в одном противостоянии исход никогда не был предопределен: шансы могли быть сколь угодно неравны, но у аутсайдера всегда был шанс. Иногда это приводило к абсурдным результатам, например копейщик, представляющий армию слаборазвитой страны, мог в битве победить танк. Я лично твердо убежден, что теоретически это все же возможно. Недаром полторы тысячи швейцарских горожан, вооруженные палками и подручным оружием, победили вдвое превосходящие силы австрийских рыцарей в битве при Моргартене; англичане в сражении при Ассайе одолели войско Маратхской конфедерации, которое было больше их в пять раз; предводитель корейского флота Ли Сун Син силами 12 кораблей победил японский флот, состоявший из 133 судов; 1800 хорватов при Вуковаре почти три месяца сдерживали сербскую армию численностью 36 тысяч солдат.

Такое бывает. Да и потом, гарантированные победы уж точно не привнесут в игру баланс.

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

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

– Сид, в игре что-то не то. Я сражался с варварами, и мои шансы на победу были три к одному. И представляешь, я проиграл!

– Ну да, – соглашался я. – Время от времени такое происходит.

– Нет, ты не понимаешь. Три – это много, а один – очень мало. И у меня было много шансов.

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

– Это другое! У меня была отличная стратегия, я правильно питался и вел здоровый образ жизни – в расчет нужно принять много разных факторов.

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

Сколь бы нелогичной ни казалась эта позиция, нам пришлось учесть их инстинктивные порывы. Николас Мейер, автор сценариев четных частей «Звездного пути» (то есть всех хороших, если верить мнению фанатов серии), однажды сказал: «Зрители, возможно, глупы, но они никогда не ошибаются». В офисе Firaxis мы используем похожую поговорку: обратная связь – это факт. Если кто-то скажет мне, что игра его разочаровала, я не могу начать спорить и говорить: «Нет, ничего подобного. Ты просто не понял, что тебе понравилось!» Человек испытал разочарование потому, что его разочаровала игра. По большому счету не имело никакого значения, винили игроки в Civilization Revolution в поражении свою удачу, недостаток мастерства или злой умысел гейм-дизайнера. В итоге они переставали получать от игры удовольствие, и мы должны были это исправить.

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

– Сид, у меня еще одна проблема.

– Хмм. И что случилось?

– Ну, у меня в битве было преимущество два к одному. И я проиграл. Ничего страшного – мы это уже обсуждали. Но потом у меня опять была битва с такими же шансами – и я опять проиграл!