Продуманная архитектура игры экономит силы, время и определяет жизнеспособность проекта.
Архитектура компьютерной игры — система организации программы, которая определяет внутреннюю логику построения кода, выбор структурных элементов и определение связей между ними. Сложная система (а игры обычно таковыми и являются) состоит из нескольких подсистем — функциональных модулей, сервисов, слоёв, подпрограмм, соединённых в определённой последовательности. В этом случае разработчики получают не спагетти-код, а набор понятных элементов, взаимодействующих по простым правилам.
Разработку архитектуры кода нельзя отнести к азам, которые легко освоить самостоятельно. Для сторонников самообучения доступны учебники, форумы, статьи, в которых содержится огромное количество информации. Если нет времени и желания отделять зерна от плевел, освоить тонкости можно на
Признаки хорошей архитектуры кода
- В него легко вносить правки. Новые фрагменты не требуют переписывания уже существующих.
- Система эффективна. Код решает поставленные задачи и работает в любых условиях.
- Срок разработки можно уменьшить, увеличив команду. Задачи легко дробятся и делятся между разработчиками.
- Фрагменты кода можно повторно использовать в других системах.
Последнее условие соблюсти проще всего. Даже если вы работаете над суперэксклюзивным проектом, без паттернов проектирования обойтись будет сложно.
Все по шаблону
Паттерн или шаблон — готовое решение, которое применяется в проекте для устранения часто возникающих проблем. Разумеется, при использовании шаблонов разработчику нужно учитывать специфику проекта. Обычно паттерн прямо не преобразуется в код. Он даёт скелет конструкции, которая дорабатывается под задачи.
По направлению шаблоны делятся на:
- фундаментальные;
- порождающие;
- структурные;
- поведенческие;
- частные.
Фундаментальные паттерны
Позволяют создать изначальную архитектуру проекта. Это высокоуровневые шаблоны, которые описывают взаимоотношения между функциональными составляющими системы. Пример — популярный фундаментальный шаблон MVC (model-view-controller). В программной парадигме «модель-графика-контроллер» графика отвечает за данные, которые отображаются пользователю, модель изменяет состояние в соответствии с командами контроллера, контроллер воздействует на модель и заставляет её менять состояние в зависимости от действий юзера.
Порождающие паттерны
Предназначены для создания объектов. При этом система остаётся независимой от процесса порождения и типов объектов. Порождающие шаблоны инкапсулируют данные о конкретных классах, система получает доступ только к интерфейсам, определённым с помощью абстрактных классов.
Структурные паттерны
Компонуют систему на основе классов и объектов. Структурные шаблоны позволяют добавить объектам больше обязанностей, группируют схожие объекты в древовидные структуры.
Поведенческие паттерны
Распределяют обязанности между объектами, определяют способы реализации взаимодействия объектов.
Частные паттерны
В этот класс попадают паттерны, которым не нашлось места в предыдущих пунктах.
Шаблон — не панацея
Использование паттернов увеличивает скорость разработки и снижает её сложность. Шаблоны упрощают общение между разработчиками за счёт унификации вариантов и снижают количество потенциальных ошибок.
При этом разработку игры не стоит начинать с обдумывания, какие паттерны можно применить. Это инструменты, которые применяются, когда проблема уже возникла. Так плотник берётся за рубанок, если доска недостаточно гладкая. Шаблон помогает программисту устранить острые углы в программе. Напротив, бездумное использование паттернов может необоснованно усложнить код.
Поэтому не стоит считать паттерны элементами конструктора, из которых собирается игра. Сначала придётся научиться писать код с нуля и до победного конца.
Осваивать игрострой в любом случае придется самостоятельно, в вузе такого не преподают. Если выбираете курсы, следите, чтобы в качестве учителей выступали разработчики из игровых проектов. Практики уже научились на своих и чужих ошибках и готовы передать знания. Такая система преподавания используется в
Комментарии (0)