Жизнь в мире компьютерных игр - Ли Нунан Дженнифер. Страница 63


О книге

Но в мире приставок все было по-другому. Наличие многопользовательского режима было не только жизненно важно для обладателей консолей, но и входило в число официальных требований производителей к разработчикам. Sony и Microsoft делали инвестиции в мощную инфраструктуру для игры онлайн для PlayStation 3 и Xbox 360 соответственно, и они рассчитывали на то, что гейм-дизайнеры будут использовать эти ресурсы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Перейти на страницу: