Геймдизайн. Рецепты успеха лучших компьютерных игр от Super Mario и Doom до Assassin’s Creed и дальше - Тайнан Сильвестр
Шрифт:
Интервал:
На первый взгляд эти методы выглядят как ужасный геймдизайн. В этой книге я сделал акцент на элегантности и простоте. В учебных заведениях программистов учат писать понятный, простой код. На уровне интуиции чувствуется, что такая огромная невидимая сложность плохо влияет на игру.
Но эти методы являются исключением из принципа элегантности. Они стоят очень дорого для дизайнера, но они ничего не стоят игроку, потому что он никогда не чувствует, что они существуют. На самом деле игрок вообще ничего не чувствует. Потому что, если мы делаем нашу работу правильно, интерфейс исчезает.
Помощь в отношении входных сигналов
ПОМОЩЬ В ОТНОШЕНИИ ВХОДНЫХ СИГНАЛОВ – это предварительная обработка на основе необработанных входных данных, полученных от игрока.
Управление Марио в игре не только сложное, но и не очень удачное. Дизайнеры не пытаются понять, что делает игрок; они просто применяют некоторые простые правила, которые улучшают опыт. В некоторых играх этого недостаточно, и мы должны помогать игрокам более рационально.
Помощь в отношении входных сигналов состоит в том, чтобы угадать намерения игрока и незаметно сделать так, чтобы его входной сигнал соответствовал. В идеале, игрок никогда даже не осознает, что ему помогают.
Давайте разберем пример помощи в прицеливании. В консольных шутерах игрок целится, управляя маленьким джойстиком с помощью большого пальца. Этот метод настолько сложен, неточен и вызывает фрустрацию, что в течение многих лет люди думали, что консольные шутеры всегда будут уступать шутерам на ПК с управлением мышью. Затем, в 2001 году, игра Halo показала нам всем, как помочь игрокам с прицеливанием, чтобы шутеры хорошо работали на консоли. С тех пор они стали одним из самых крутых жанров консольных игр. Без помощи в прицеливании консольные шутеры никогда не стали бы такими, какими мы знаем их сегодня. Но как именно работает помощь в прицеливании?
Она помогает игрокам отслеживать цели. Хитрость в том, что игроки не должны заметить, что им помогают. Просто навести прицел на цель кажется слишком очевидным. Единственный способ не очевидно, но эффективно помочь при прицеливании – это создать ряд чередующихся подсистем, помогающих разными способами. Одна подсистема помогает игрокам отслеживать движущиеся цели, заменяя часть входного сигнала стика на входной сигнал, который точно соответствует движению цели на экране. Никто не наводит прицел на цель, дизайнер только помогает компенсировать движение цели. Другая подсистема помогает игрокам перестать двигать прицелом, когда он попал на цель. Система определяет, когда стик отпущен, ищет ближайшие цели и незаметно скользит прицелом по одной из них. На первый взгляд кажется, что это будет заметно, но игрок не сможет ничего почувствовать, потому что все происходит только при медленном движении прицела. Третья подсистема следит за игроками, которые почти пропустили цель, и слегка смещает направление движения прицела, чтобы он попал на нужный объект. Поскольку мы лишь немного регулируем направление движения прицела, а не его скорость, игрок ничего не заметит. Эффект зависит от расстояния между целью и игроком, ее углового расстояния от прицела, наличия других целей, уровня сложности, используемого оружия и прочих факторов. И эти три варианта являются лишь примером. В различных играх используются и многие другие подсистемы.
Причина, по которой эта система работает, а игроки ничего не замечают, заключается в том, что система влияет только на то, что игроки не в состоянии обнаружить естественным образом. Игроки замечают произвольно двигающиеся прицелы, но они не замечают, что они останавливались на несколько пикселей раньше, или ускорялись, или корректировали направление, потому что эти события спрятаны за движением, происходящим вокруг них. Поэтому помощь при прицеливании работает только в этих уголках потока входного сигнала.
Иногда дизайнеры даже используют помощь в прицеливании в качестве балансирующего фактора. Например, снайперская винтовка в игре Halo мощная и точная. Как и предполагалось, она эффективна при стрельбе с дальнего расстояния. Но ее мощь и точность делают ее не менее смертоносной в ближнем бою, что дублирует роли других видов оружия. Нулевая помощь в прицеливании при уменьшенном масштабе – это один из способов, которым разработчики Halo ослабили снайперскую винтовку при стрельбе с близкого расстояния. На первый взгляд оружие все еще остается абсолютно точным. Но теперь из-за полного отсутствия помощи в прицеливании игроку сложнее использовать винтовку нежелательным способом. В таких ситуациях это влияет на коэффициент успешности выполнения задания и заставляет игроков использовать оружие по назначению, и при этом никто ничего не замечает.
Помощь в прицеливании является лишь одним из видов помощи. Помощь в прыжках помогает игрокам направить своих персонажей в безопасное место. Помощь в атаке помогает игрокам наносить точные удары. Помощь в вождении помогает игрокам избежать аварии. Помощь в движении помогает игрокам скакать по уступам и избегать препятствий. В каждом случае дизайнеры разработали набор методов, помогающих игрокам, при этом не недооценивая их намерения и не делая ничего, что игроки могли бы заметить.
Задержка отклика управления
ЗАДЕРЖКА ОТКЛИКА УПРАВЛЕНИЯ – это временная задержка между моментом, когда игра получает входной сигнал и когда она отображает видимую обратную связь, являющуюся результатом этого сигнала.
Когда вы нажимаете кнопку или перемещаете джойстик, игре требуется несколько миллисекунд, чтобы обработать входной сигнал и создать видимый отклик. Эта задержка называется задержкой управления.
Задержка отклика управления неизбежна, поскольку она встроена в аппаратное обеспечение. Большинство современных компьютерных систем используют многоступенчатую потоковую визуализацию. В любое время система имеет несколько фреймов на разных этапах обработки. Прогрессия выглядит так:
• Фрейм 0 (входной сигнал получен). В какой-то момент фрейма поступает входной сигнал – возможно, нажатие кнопки. Однако его нельзя использовать сразу, так как игра уже начала обработку фрейма. Вместо этого он сохраняется до начала следующего фрейма.
• Фрейм 1 (игровая логика). Процессор считывает входной сигнал, который был сохранен в течение последнего фрейма, и обновляет игровой мир.
• Фрейм 2 (визуализация графики). Визуализатор графики захватывает состояние игрового мира, заданное вычислениями предыдущего фрейма, и использует его для визуализации изображения.
• Фрейм 3 (отображенный фрейм). Отображается изображение на экране.
Каждый этап работает все время. В графическом виде это выглядит так:
Такое расположение обладает очень высокой производительностью, поскольку поддерживает постоянную работу как процессора, так и графического процессора. Без этой системы графическому блоку пришлось бы бездействовать в первой половине каждого фрейма, пока процессор обновлял бы игровую систему.
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!