Читаем Ошибки разработчиков видеоигр. От идеи до провала полностью

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

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

Смерть – далеко не единственное, что выдергивает игрока из потока путем остановки времени. Долгие загрузки между экранами или утомительные однообразные анимации оказывают такой же эффект. Оптимизация проектов – обычно не самая сильная сторона независимых разработчиков, пришедших в нашу индустрию из отраслей, не связанных с программированием. Иной раз независимый проект вынуждает вспомнить эпоху PlayStation 2, когда времени между загрузками локаций хватало, чтобы сходить в туалет, налить чаю или кому-нибудь позвонить. В играх, плотно работающих с состоянием потока, загрузок практически нет: Journey создает впечатление путешествия по бесшовному миру, а не по разбитой на отдельные секции игры. Нет видимых переходов между локациями и в Gris – игре, которая тоже прекрасно удерживает игроков в потоке.

В играх, умело удерживающих игрока в потоке, иной раз интерфейс отсутствует целиком: никакой статичной информации не отображается ни в Journey, ни в Gris. Многие разработчики экспериментируют с интеграцией интерфейсов на саму сцену с персонажем. В Dead Space индикатор уровня здоровья расположен на спине главного героя, а в старенькой игре Boogerman у игрока при получении урона менялся цвет плаща. Некоторые ужастики экспериментируют с демонстрацией уровня здоровья через анимации протагониста, но этот метод требует огромного количества ресурсов и, будем честны, не всегда работает: естественно, состояние, когда персонаж уже при смерти, читается игроком на ура – герой сгибается, хромает и истекает кровью, а вот доходчиво продемонстрировать таким образом «легкое ранение» не так уж и просто.

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


Бесконечные загрузки

Если загрузки становятся для вас проблемой при разработке, то способы ее устранения я рекомендую подсмотреть в играх той эпохи, когда оперативная память игровых систем и скорость чтения дисков не позволяли прогружать массивные объемы данных. В ужастике Fatal Frame (известном на Западе как Project Zero) перемещение между разными помещениями было оформлено следующим образом: главная героиня подходила к двери, и, когда игрок нажимал на кнопку «Открыть», камера приближалась к героине – таким образом скрывалось исчезновение выгружаемых из памяти текстур и объектов в комнате. После этого героиня лишь слегка приоткрывала дверь (что отлично работало на атмосферу ужасов) и робко топталась перед ней до тех пор, пока не прогружалась следующая локация. Конечно, смотреть на одну и ту же анимацию каждый раз может быть утомительно, но в контексте Fatal Frame, когда постоянно казалось, что из-за приоткрытой двери на нас вот-вот выпрыгнет уродливая нечисть, этот трюк работал. Более того, иногда действительно кто-то выпрыгивал.

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

Похожие книги

Programming with POSIX® Threads
Programming with POSIX® Threads

With this practical book, you will attain a solid understanding of threads and will discover how to put this powerful mode of programming to work in real-world applications. The primary advantage of threaded programming is that it enables your applications to accomplish more than one task at the same time by using the number-crunching power of multiprocessor parallelism and by automatically exploiting I/O concurrency in your code, even on a single processor machine. The result: applications that are faster, more responsive to users, and often easier to maintain. Threaded programming is particularly well suited to network programming where it helps alleviate the bottleneck of slow network I/O. This book offers an in-depth description of the IEEE operating system interface standard, POSIX (Portable Operating System Interface) threads, commonly called Pthreads. Written for experienced C programmers, but assuming no previous knowledge of threads, the book explains basic concepts such as asynchronous programming, the lifecycle of a thread, and synchronization. You then move to more advanced topics such as attributes objects, thread-specific data, and realtime scheduling. An entire chapter is devoted to "real code," with a look at barriers, read/write locks, the work queue manager, and how to utilize existing libraries. In addition, the book tackles one of the thorniest problems faced by thread programmers-debugging-with valuable suggestions on how to avoid code errors and performance problems from the outset. Numerous annotated examples are used to illustrate real-world concepts. A Pthreads mini-reference and a look at future standardization are also included.

David Butenhof

Программирование, программы, базы данных
Язык программирования C++. Пятое издание
Язык программирования C++. Пятое издание

Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!Р'С‹ держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под стандарт С++11. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. Р' соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать РёС… наилучшие СЃРїРѕСЃРѕР±С‹ применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.Стенли Р'. Липпман работал старшим консультантом в Jet Propulsion Laboratory, архитектором РіСЂСѓРїРїС‹ Visual С++ корпорации Microsoft, техническим сотрудником Bell Laboratories и главным инженером- программистом по анимации в кинокомпаниях Disney, DreamWorks, Pixar и PDI.Р–РѕР·и Лажойе, работающий ныне в кинокомпании Pixar, был членом канадской РіСЂСѓРїРїС‹ разработчиков компилятора C/C++ корпорации IBM, а также возглавлял рабочую группу базового языка С++ в составе международной организации по стандартизации ANSI/ISO.Барбара Э. Му имеет почти тридцатилетний опыт программирования. На протяжении пятнадцати лет она работала в компании AT&T, сотрудничая с Бьярне Страуструпом, автором языка С++, и несколько лет руководила РіСЂСѓРїРїРѕР№ разработчиков С++.• Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования• Р

Жози Лажойе , Барбара Э. Му , Стенли Б. Липпман

Программирование, программы, базы данных