Геймдизайн. Рецепты успеха лучших компьютерных игр от Super Mario и Doom до Assassin’s Creed и дальше - [150]
БРЕМЯ НЕЗАВЕРШЕННОСТИ – цена, которую платят люди, вынужденные выполнять работу, которая зависит от незавершенных частей игры.
Для большинства разработчиков работа со стабильным, совершенным ПО и игровыми системами – непозволительная роскошь. Обычно инструменты глючные и плохо задокументированы, игровая механика сделана наполовину, а история меняется ежедневно. Эти сырые элементы обременяют всех, кто с ними работает. Не смертельные, но раздражающие баги тормозят работу. Незавершенная история тормозит дизайн уровней, внося неопределенность в проектные решения уровней. Несбалансированная игровая механика мешает дизайнерам уровней оттачивать и балансировать соответствующие задачи.
Благодаря стеку зависимостей можно избежать сырого дизайна. Впрочем, даже если стек зависимостей будет четким и понятным, полностью устранить бремя незавершенности невозможно.
РИСКИ КРИТИЧЕСКОГО ОТКАЗА – это затраты, вызванные критическими отказами сырой системы.
Существенные недостатки могут появиться в любой сырой системе в самое неподходящее время. Серьезные, сложные баги могут сорвать тестирование. Непредсказуемые доминирующие стратегии могут разрушить месяцы работы над балансом. В течение нескольких месяцев разработчики могут не замечать пробелов в нарративе. Как бомбы замедленного действия, эти проблемы скрыты глубоко в игре, могут взорваться в любой момент и вызвать критический сбой.
Цена таких ошибок – не столько реальная работа по их устранению, сколько их влияние на другие процессы. Простой баг может привести к тому, что художнику в другом офисе придется потратить два дня на обнаружение ошибки импорта данных. Даже если исправление ошибки представляет собой изменение одной строчки кода, ущерб все равно нанесен: замедлилась работа художника и все то, что от него зависит.
Наибольший ущерб наносится тогда, когда такие бомбы срабатывают в критических ситуациях. Иногда случается так, что художник работал над графикой, которая была необходима для запланированного на следующий день плейтеста нового игрового режима. Из-за отсутствия графики приходится отменять плейтест, в результате дизайнеры лишаются данных, а это, в свою очередь, тормозит процесс принятия решений по следующей итерации кода, оставляя программистов геймплея без четких инструкций. Такая цепная реакция нередка в больших и сложных процессах.
НАГРУЗКИ, СВЯЗАННЫЕ С ПРОЦЕССОМ РАЗРАБОТКИ, – цена отслеживания и составления графика работ.
У каждого процесса разработки существует определенный организационный уровень, который помогает соблюдать координацию. Один разработчик может вести для себя заметки. Команда из трех человек может ежедневно собираться с целью обсудить координацию работы. По мере роста команды стоимость и сложность координации возрастают. Большие команды используют специально обученных разработчиков, системы отслеживания ошибок и вики по дизайну. Затраченные усилия являются нагрузками, связанными с процессом разработки.
Низкий уровень нагрузок, связанных с процессом разработки, является одним из самых больших преимуществ небольших команд. В то время, когда я работал один над уровнями Unreal Tournament ради развлечения, четыре часа рабочего времени означали десять минут изучения своих заметок и три часа пятьдесят минут работы в редакторе уровней. Я знал о дизайне все и ни от кого не зависел. Если вы работаете над большими студийными проектами, четыре часа рабочего времени часто означают час написания спецификаций, еще один час обсуждения и два часа на саму работу в редакторе. В первом случае нагрузки, связанные с процессом разработки, занимают 4 % моего времени. Во втором – 50 %.
ТАКТИЧЕСКИЕ ПОСЛЕДСТВИЯ влияют на отношения между разработчиками.
Процесс групповой разработки всегда является в некотором смысле продажей. У каждого есть доля влияния, которое он может потратить и обменять на улучшение игры. Это влияет на проектные решения.
Например, в студии может работать очень опытный старший программист, который основал компанию 15 лет назад. Он не уделяет особого внимания сюжету, но любит работать с новыми графическими технологиями. В этой студии дизайн, который не раздвигает границы графических возможностей, может иметь большие преимущества, но за это приходится платить раздражением опытного программиста, который может ополчиться против такого решения.
Работать с тактическими последствиями часто означает думать на несколько шагов вперед. У дизайнера может быть материал, который он хочет попробовать реализовать, но он понимает, что никогда не сможет урезать его, если идея не сработает, потому что в нее будет вложено слишком много сил других людей. Если вероятность того, что материал урежут, слишком велика, дизайнер не станет продвигать эту идею. Это неприятный результат, обусловленный недостатками организации, однако с точки зрения дизайнера так будет лучше для процесса разработки и самой игры.
КУЛЬТУРНЫЕ ПОСЛЕДСТВИЯ меняют привычки разработчиков и атмосферу развития.
Культура студии – это коллективный набор ожиданий, предположений и привычек команды. Принятые сейчас решения оказывают долгосрочное влияние на культуру и, следовательно, на дальнейшую работу. Некоторые решения могут улучшить культуру, другие – уничтожить ее.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Автор книги — американский специалист по программированию, один из руководителей фирмы IBM, в своей книге делает попытку изложить общие проблемы создания программного обеспечения, его сопровождения и использования. Особенно подробно рассматриваются все фазы разработки программ разных типов. Изложение ясное, удачно иллюстрировано примерами.Для программистов разной квалификации и пользователей ЭВМ.fb2: ВНИМАНИЕ. В тексте присутствуют таблицы. Рекомендуется читать файл с помощью программы, поддерживающей их отображение.
Книга посвящена разработке программ для мобильных устройств под управлением операционной системы Android. Рассматривается создание приложений с использованием системных компонентов и служб Android. Приведены базовые данные о структуре приложений, об основных классах и их методах, сопровождаемые примерами кода. Часть 1 содержит шесть глав, описывающих основные принципы создания приложений, пользовательский интерфейс, полномочия приложений, а так же базовые классы: Activity, Intent, Fragment. Книга предназначена для программистов, владеющих языком программирования Java и желающих освоить написание приложений, работающих под ОС Android.
"В своем докладе я опишу процесс создания электронного исследовательского инструмента, имеющего в своей основе печатный библиографический указатель, который предназначен для использования в научных целях, а также проанализирую некоторые трудности, с которыми мы столкнулись в ходе реализации данного проекта, и расскажу об избранных нами вариантах решения возникших проблем.".
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
Очень часто под рукой не оказывается ни отладчика, ни дизассемблера, ни даже компилятора, чтобы набросать хотя бы примитивный трассировщик. Разумеется, что говорить о взломе современных защитных механизмов в таких условиях просто смешно, но что делать если жизнь заставляет?..