Как создаются игры. Основы разработки для начинающих игроделов - Григорий Радовильский
Шрифт:
Интервал:
Закладка:
• Анимация – это создание движения объекта или персонажа после того, как риг готов.
Шейдер (shader, shade – оттенок, затенять) – это набор инструкций для видеокарты, изначально предназначенный для расчета теней на объектах игрового мира. Эти инструкции можно применять как для самой модели, так и для текстуры, натянутой на эту модель. Шейдер позволяет создавать различные эффекты, которые иначе создать очень сложно или вовсе невозможно. Для моделей это могут быть эффекты, например, колыхания под дуновением ветра или следов на снегу. Для текстур это прежде всего эффекты отражения света различными материалами: неоновое свечение, матовые и мультяшные материалы, отражение света зеркалом или преломление поверхностью воды. Также с помощью шейдеров можно реализовать эффекты появления или исчезновения объектов.
Подобный путь может быть проделан и для объектов и персонажей 2D-игры. С той лишь разницей, что в 2D-анимации еще распространена покадровая анимация, которая уже практически не используется в 3D. Но и к двумерным объектам можно применять карты нормалей для создания эффекта неровности, а также анимацию с помощью костей.
Плюс к этому существует великое множество различных визуальных стилей, жанров, сеттингов. Эти стили могут требовать разного подхода на всех шагах и во всех областях работы над графикой для игры. Но одинаково хорошо работать даже в нескольких из них один художник далеко не всегда может. А значит, возникает проблема с подбором команды художников, которые подходили бы друг другу не только профессионально, но и по стилю.
* * *
Среди игровых художников и близких к ним специальностей можно выделить определенные группы.
• Концепт-художники разрабатывают все необходимые компоненты видения игры. Их работы составляют артбук – набор изображений, характеризующих общий стиль игры. Они могут делать предварительные концепты моделей для 3D-отдела, заниматься подготовкой артов или скетчей для уровней, локаций и других игровых сущностей (они не всегда проработаны детально – этим займутся уже другие художники). Их задача поддерживать общую эстетику игры.
Пропсы (props – «реквизит») – это предметы, которые создают атмосферу в игре, добавляют ей колорита. Это могут быть большие объекты: транспорт, деревья, заборы, танки и другие; средние: мебель, кусты, оружие, сундуки, рекламные вывески и т. п.; а также маленькие: магические амулеты и камни, трава, шкатулки, украшения. Они могут быть как интерактивными, так и декоративными.
• 2D-художники рисуют иконки, изображения персонажей, объектов и фонов, если игра двухмерная.
• 3D-моделлеры (скульпторы) делают трехмерные модели персонажей и объектов, если игра трехмерная. Также они могут заниматься созданием модели игрового уровня по собранным левел-дизайнерами макетам.
• Текстурщики создают текстуры для 3D-моделей. Эта работа достаточно специфическая, чтобы не относиться к 2D-художникам, так как текстуры очень отличаются от простого двухмерного рисунка, поэтому, бывает, этой работой занимаются сами моделлеры.
• Риггеры – специалисты, подготавливающие модели для анимации. Подобная подготовка может требоваться как трехмерным, так и двухмерным объектам, в зависимости от стиля игры.
• 2D– и 3D-аниматоры создают анимации передвижения персонажей и объектов. Существует множество методик создания анимаций, которые требуют очень разноплановых специалистов, а иногда необходимы целые команды, в состав которых могут входить в том числе режиссеры, операторы и актеры.
– Покадровая анимация, как в классической мультипликации.
– Перекладывание, где перекладываются, например, вырезанные из бумаги кусочки персонажей и объектов сцены.
– Кукольная анимация, в которой используются фигурки персонажей, например из пластика или пластилина.
– Ротоскопия, когда аниматор обрисовывает снятых на видео персонажей.
– Анимация на костях, в которой для анимирования персонажа используется скелет.
– И наконец, для анимирования персонажей можно использовать технологию захвата движения – motion capture.
• GUI-художники (graphical user interface – «графический пользовательский интерфейс») – это узкопрофильные художники, которые умеют делать красивые и понятные интерфейсы: обрисовывать то, что спроектировали специалисты по игровому UI/UX. Также художники по интерфейсам должны знать технические особенности реализации интерфейсов в игре: как интерфейсы вставляются в игру, на чем можно сэкономить ресурсы и так далее.
• Технические и FX-художники (FX, effects – эффекты) – художники по спецэффектам, шейдерам и постпроцессингу.
– Создание спецэффектов – это работа с частицами и всеми теми инструментами, которые отвечают за магию, взрывы, искры, капли дождя и другие природные явления.
– Шейдеры – различные эффекты, связанные с материалами: то, как различные материалы отражают, рассеивают и преломляют свет.
– Постпроцессинг – это различные эффекты, добавляющиеся в кадр в последнюю очередь. Это могут быть различные подергивания картинки, как на старых телевизорах, или раздвоение картинки, чтобы показать, что персонаж игрока пьян, и т. п.
• Технические помощники выполняют нехудожественные работы, связанные с работой художников, например выгрузкой 3D-моделей, созданием палитр двухмерных объектов или сборкой интерфейсов. Слово «помощник» не означает, что работа низкоквалифицированная. На самом деле она тоже требует значительного опыта и глубоких технических знаний.
Программирование
Программисты – это люди, которые реализуют в программном коде все, что описывают гейм-дизайнеры. Они должны не только уметь программировать, но обладать большим игровым опытом, чтобы общаться с гейм-дизайнерами на одном языке. К тому же существуют в той или иной степени распространенные шаблоны реализации различных игровых механизмов, в которых нужно разбираться.
От программиста может потребоваться хорошее знание специфики движка, на котором разрабатывается игра, особенностей операционной системы, где игра должна запускаться, или понимание, как на уровне кода защитить игру от взлома, ломающего игровой баланс или дающего одному игроку не предусмотренное правилами игры преимущество над другим.
В зависимости от сложности проекта от программистов может потребоваться решение очень специфичных задач. В отличие от художников, у программистов нет последовательной работы (например, от скетча до анимированного персонажа), но у них тоже есть специфические зоны ответственности, требующие определенного опыта и знаний.
Начнем с того, что мы, надеюсь, и так хорошо знаем: игры бывают однопользовательские и многопользовательские.
• Однопользовательские приложения выполняют простую функцию: собирают действия пользователя, обрабатывают их и визуализируют результат. Так работают не только игры, но практически все программы, работающие с локальными данными. Например, программы, входящие в офисный пакет, или графические редакторы.
• Многопользовательские же игры не могут существовать без механизма связи пользователей друг с другом. Соответственно, им нужен либо какой-то метод поиска других игроков, находящихся поблизости, с помощью Wi-Fi или Bluetooth, или вообще всех игроков в эту игру через интернет.
Вариант с игроками поблизости еще можно реализовать только одним клиентским (запускающимся у игрока) приложением. И функцию сервера (приложения, собирающего и обрабатывающего данные всех игроков) будет выполнять приложение одного из игроков. Но второй вариант неизбежно порождает необходимость иметь серверное приложение, которое будет запущено на отдельно стоящем компьютере или в облаке.
В самом простом варианте отдельное серверное приложение будет просто помогать игрокам найти друг друга, при этом в качестве боевого сервера (на котором рассчитывается бой) все равно может выступать один из клиентов. В этом случае сервер должен просто удостовериться в том, что пользователи находятся достаточно близко друг к другу, чтобы минимизировать задержки (если это важно, конечно), и установить соединение между ними.
В более сложном варианте серверное приложение будет заниматься получением команд от клиентских приложений, расчетом результатов их действий и раздачей этих результатов обратно игрокам. Это будет выполнять любой сервер в многопользовательской игре, даже устройство одного из игроков. Соответственно, клиент должен уметь отдавать серверу данные о действиях игрока, получать от сервера обработанные данные и как-то их визуализировать – функции клиентского приложения значительно отличаются от функций однопользовательского приложения. В результате мы получаем двух специалистов, один из которых занимается клиентом, а другой – сервером.
Если игра многопользовательская, то появляется необходимость администрировать пользователей. Закрывать доступ к игре для тех, кто нарушает правила игры, или начислять какому-нибудь игроку награду за победу в конкурсе, проведенном на форуме, посвященном игре. Здесь необходима разработка средств администрирования. Это может быть отдельная программа или сайт, которые недоступны простым игрокам. Сюда же можно отнести и различные аналитические сервисы, которые могут понадобиться игре.
Также, если наша игра имеет какие-то уровни, независимо от того, является ли игра шутером или головоломкой, для нее, скорее всего, придется сделать редактор уровней. С шутерами и аркадами немного проще: современные средства разработки по умолчанию имеют редактор уровней, в целом подходящий для создания игр этих жанров. А вот для игр других жанров, скорее всего, придется создавать редактор