Ознакомительная версия. Доступно 26 страниц из 130
пишут функции и методы, сначала создавая стаб, один из них показан на рис. 29.1. У стабов то же название, что будет и у готовой функции, и его можно вызвать другими частями кода, но содержит он только простой плейсхолдер: например, комментарий, который с помощью «псевдокода» описывает, что в итоге будет делать функция, или функцию print, которая подтверждает в консоли отладки, что стаб был успешно вызван.
Стабы в видеоиграх
Концепция стабов применима и к видеоиграм, она облегчает жизнь разработчикам и повышает эффективность работы. Мы уже обсуждали один тип стабов в главе 10, когда говорили о блокмеше, также известном как вайтбокс, грэйбокс или блокаут. Блокмеш – это своего рода стаб: плейсхолдер, который служит нашим первым шагом на пути к созданию чего-то сложного – в нашем случае готового дизайна уровня и левел-арта. Блокмеш снабжает нас видимой низкополигональной геометрией, с которой могут сталкиваться сущности в игре и которую мы позднее превратим во что-то более детальное как функционально, так и эстетически.
Рис. 29.1. Стаб (также известный как функция-заглушка).
Помимо блокмеша, «заготовки» нового уровня, мы можем использовать стабы, чтобы создать любой новый объект или персонажа и создать отношения с новой сущностью. Изначально стальная дверь может выглядеть как серый ящик, а дерево – как большая зеленая сфера на вершине узкого коричневого цилиндра. Персонажи в игре могут начать жизнь как объекты в форме капсулы, даже если в итоге станут похожи на барсуков или василисков.
В виде заглушек могут быть представлены и другие типы сущностей. Текстовое описание объекта может начинаться с плейсхолдера lorem ipsum. В Naughty Dog мы использовали короткое видео в качестве стаба для неотрендеренных кат-сцен, используя его как плейсхолдер роликов, которые мы еще не сделали. Так мы могли сразу оценить время загрузки и упростить последующее добавление готовых кат-сцен. Стабы интерфейсов могут включать плейсхолдер арта и упрощенное взаимодействие, которое позволит выбрать параметры и войти в меню сохранения, но без утонченности финального варианта интерфейса.
Когда игра приближается к майлстоуну альфа-версии, такие важные сущности, как персонаж игрока и прочие ключевые персонажи, объекты и уровни в игре, вероятно, уже отполированы до хорошего уровня качества. Но к альфа-версии мы должны принять во внимание и все другие сущности, которые войдут в игру: переключатели и двери, столы и стулья, золотые монеты и секретные письма. Нам не обязательно дорабатывать все эти объекты до готового состояния к альфа-версии – для этого у нас есть бета-версия, где мы займемся доработкой контента. Что нам действительно нужно иметь в игре для альфа-версии, так это все фичи игры. Наша цель – полнофункциональность, и стабы помогут нам ее достичь.
Пример стаба объекта
Возьмем, к примеру, двери. Двери дают нам отличную возможность взглянуть на многие аспекты разработки игр. Они кажутся простыми, но на самом деле они очень сложны с точки зрения гейм-дизайна. Лиз Инглэнд – гейм-дизайнер, известная работой над такими играми, как Sunset Overdrive и Scribblenauts. В своем глубоком и веселом эссе The Door Problem[169] («Дверной вопрос») Лиз на примере дверей иллюстрирует сложности гейм-дизайна. Она задает следующие вопросы.
• Может ли игрок открывать и запирать двери?
• Как игрок поймет, какую дверь можно открыть, а какую – нет?
• Знает ли игрок, как отпереть дверь? Нужно найти ключ? Взломать консоль? Решить головоломку? Или дверь откроется после определенного сюжетного момента?
• Есть ли двери, которые могут открываться, но в которые игрок никогда не сможет войти?
• Откуда приходят враги? Через двери? После их появления двери опять закрываются?
Я настоятельно рекомендую вам прочитать The Door Problem. Каждому члену команды разработчиков есть что ответить о дверях в игре. И мы можем начать отвечать, соорудив стаб двери.
Надеюсь, что к альфа-версии нам удалось создать по крайней мере одну готовую дверь с окончательной графикой, анимацией, звуком и тактильной отдачей (вибрацией контроллера). Но давайте предположим, что нам нужен особый тип двери для особого дверного проема – опускная решетка в замке или дверь космического корабля, которая открывается крутым, но сложным образом. Мы должны добавить эту дверь к майлстоуну альфа-версии, если она достаточно сложна, чтобы ее можно было считать уникальной фичей. Но что, если наши художники слишком заняты другими важными ассетами для майлстоуна? Тут-то нам и поможет стаб.
При создании стаба мы должны руководствоваться несколькими соображениями. Первое заключается в следующем: насколько сложен этот объект? Чем больше стаб будет соответствовать размеру и форме готового объекта, тем лучше. Если вы делаете дверь, которая заполняет дверной проем определенного размера и формы, и если вам известны размер и форма дверного проема, то сделайте так, чтобы дверь точно ему соответствовала и была правильной высоты и ширины. Также тщательно выбирайте толщину двери – она тонкая и хрупкая или толстая и прочная?
Следующее соображение: как дверь будет анимироваться. Открывается ли она внутрь или наружу? Скользит к потолку или въезжает в стену? Это одинарная дверь или двойная? (См. рис. 29.2.) Или же это круглая механическая дверь, которая открывается как диафрагма?
Помимо анимации двери, вам следует подумать о том, как избежать столкновения двери с видимой вокруг нее геометрией. Этот термин, столкновение[170], пришел из мира компьютерной графики (CG). Говорят, что объекты CG сталкиваются с видимой геометрией, когда они проникают друг в друга так, как в реальном мире физически невозможно (рис. 29.3). Один из самых быстрых способов разрушить иллюзию реальности – показать, как объекты, которые должны быть твердыми, проваливаются друг в друга. Люди очень к этому чувствительны, и взгляд аудитории часто направлен прямо туда, где рука персонажа хоть немного провалилась внутрь поднимаемого объекта.
Ознакомительная версия. Доступно 26 страниц из 130