Игрострой: от хаотичного кода к грамотной архитектуре игры

19 Октября 2017, Hi-News.ru 1

Продуманная архитектура игры экономит силы, время и определяет жизнеспособность проекта.

Архитектура компьютерной игры — система организации программы, которая определяет внутреннюю логику построения кода, выбор структурных элементов и определение связей между ними. Сложная система (а игры обычно таковыми и являются) состоит из нескольких подсистем — функциональных модулей, сервисов, слоёв, подпрограмм, соединённых в определённой последовательности. В этом случае разработчики получают не спагетти-код, а набор понятных элементов, взаимодействующих по простым правилам.

Разработку архитектуры кода нельзя отнести к азам, которые легко освоить самостоятельно. Для сторонников самообучения доступны учебники, форумы, статьи, в которых содержится огромное количество информации. Если нет времени и желания отделять зерна от плевел, освоить тонкости можно на курсах, которые готовят непосредственно разработчиков игр.

Признаки хорошей архитектуры кода

  • В него легко вносить правки. Новые фрагменты не требуют переписывания уже существующих.
  • Система эффективна. Код решает поставленные задачи и работает в любых условиях.
  • Срок разработки можно уменьшить, увеличив команду. Задачи легко дробятся и делятся между разработчиками.
  • Фрагменты кода можно повторно использовать в других системах.

Последнее условие соблюсти проще всего. Даже если вы работаете над суперэксклюзивным проектом, без паттернов проектирования обойтись будет сложно.

Все по шаблону

Паттерн или шаблон — готовое решение, которое применяется в проекте для устранения часто возникающих проблем. Разумеется, при использовании шаблонов разработчику нужно учитывать специфику проекта. Обычно паттерн прямо не преобразуется в код. Он даёт скелет конструкции, которая дорабатывается под задачи.

По направлению шаблоны делятся на:

  • фундаментальные;
  • порождающие;
  • структурные;
  • поведенческие;
  • частные.

Фундаментальные паттерны

Позволяют создать изначальную архитектуру проекта. Это высокоуровневые шаблоны, которые описывают взаимоотношения между функциональными составляющими системы. Пример — популярный фундаментальный шаблон MVC (model-view-controller). В программной парадигме «модель-графика-контроллер» графика отвечает за данные, которые отображаются пользователю, модель изменяет состояние в соответствии с командами контроллера, контроллер воздействует на модель и заставляет её менять состояние в зависимости от действий юзера.

Порождающие паттерны

Предназначены для создания объектов. При этом система остаётся независимой от процесса порождения и типов объектов. Порождающие шаблоны инкапсулируют данные о конкретных классах, система получает доступ только к интерфейсам, определённым с помощью абстрактных классов.

Структурные паттерны

Компонуют систему на основе классов и объектов. Структурные шаблоны позволяют добавить объектам больше обязанностей, группируют схожие объекты в древовидные структуры.

Поведенческие паттерны

Распределяют обязанности между объектами, определяют способы реализации взаимодействия объектов.

Частные паттерны

В этот класс попадают паттерны, которым не нашлось места в предыдущих пунктах.

Шаблон — не панацея

Использование паттернов увеличивает скорость разработки и снижает её сложность. Шаблоны упрощают общение между разработчиками за счёт унификации вариантов и снижают количество потенциальных ошибок.

При этом разработку игры не стоит начинать с обдумывания, какие паттерны можно применить. Это инструменты, которые применяются, когда проблема уже возникла. Так плотник берётся за рубанок, если доска недостаточно гладкая. Шаблон помогает программисту устранить острые углы в программе. Напротив, бездумное использование паттернов может необоснованно усложнить код.

Поэтому не стоит считать паттерны элементами конструктора, из которых собирается игра. Сначала придётся научиться писать код с нуля и до победного конца.

Осваивать игрострой в любом случае придется самостоятельно, в вузе такого не преподают. Если выбираете курсы, следите, чтобы в качестве учителей выступали разработчики из игровых проектов. Практики уже научились на своих и чужих ошибках и готовы передать знания. Такая система преподавания используется в GeekUniversity. И учителя, и наставники знают толк в разработке игр и готовы кратчайшим путем провести студента через тернии к пониманию игростроя.

1 комментарий Оставить свой

  1. andmetoo

    В статье нет ничего, вода. Шаблоны проектирования в отрыве от базовых знаний построения кода - бесполезны....

Новый комментарий

Для отправки комментария вы должны авторизоваться или зарегистрироваться.