Как создать свою первую игру и выжить: подготовка, реализация и ошибки
Всем привет! Меня зовут Виктор Антоненко, я Senior Unity-разработчик в Genesis, команда Obrio. И я действительно люблю игры. С юного возраста мне нравилось играть, и, когда дело дошло до выбора специальности, я без раздумий пошел учиться на программиста.
К своему первому самостоятельному игровому проекту я пришел пять лет назад: собрал команду друзей, мы продумали идею, разобрались, что к чему, и стартовали. Проект так и не увидел свет, но дал множество полезного опыта, который и позволил найти первую работу, связанную с игровой и мультимедийной разработкой.
Когда начал его, наткнулся на видео, где объяснялись базовые вещи, процесс и типичные ошибки, которые поставили бы под угрозу не только продукт, но и мою карьеру как гейм-разработчика. Надеюсь, моя статья будет вам так же полезна, как то видео для меня в свое время.
Это подробный гайд о том, как стартовать проект, не забросить и дойти до релиза, с акцентом на ключевых моментах и разбором ошибок. Материал я поделил на три части и буду публиковать постепенно. Статья будет полезна для начинающих разработчиков, которые уже освоили язык программирования и умеют работать с игровым движком, но не знают, как создать собственный проект, или для более опытных, которые хотят больше узнать об организации процесса.
Основные термины
Предполагаю, что статью могут читать люди, которые только задумываются о создании своей игры. Поэтому я подготовил мини-словарь терминов, которыми оперирует разработчик игр. Они будут встречаться в тексте.
Игровой движок, движок (Engine) — программное обеспечение, дающее базовый функционал для создания новых игр без существенного изменения основ.
Релиз (Release) — публикация продукта для поставки пользователям.
Билд (Build) — сборка приложения для тестирования или релиза.
Ассет (Asset) — файлы-ресурсы проекта, например, картинки, видео, модели, файлы настроек. При билде конвертируются в специальный формат и поставляются вместе с исполняемыми файлами.
Asset store — магазин ассетов Unity, содержащий готовые решения, плагины, модели, звуки.
Плагин (Plugin) — независимый программный модуль, динамически подключаемый к основной программе.
Платформа (Platform) — это среда и устройства, на которых будет запускаться продукт.
Сеттинг (Setting) — это среда, в которой происходят действия игры. С помощью сеттинга задаются условия реальности, истории и персонажей для продукта.
Референсы (Reference) — это источник вдохновения, которым может выступать что угодно — картина, другая игра, музыка.
Система контроля версий (Version control system) — это система, записывающая набор изменений в файлах, позволяющая зафиксировать их, чтобы возвращаться к ним в любой момент.
Планировщик задач (Task Manager) — это инструмент для планирования, чтобы создавать, приоритизировать, изменять, комментировать, прикреплять ресурсы и дополнительную информацию к задачам, анализировать рабочий процесс.
Интеграция (Integration) — введение файлов в игровой движок с дополнительными настройками и последующей конвертацией ресурсов проекта в особый формат.
Метрики (Metrics) — числовые показатели проекта.
Баг (Bug) — ошибка, описанная и зафиксированная с помощью отчета, с предоставлением шагов для воспроизведения и имеющая приоритет для исправления.
Шейдер (Shader) — программа, выполняемая на видеокарте, для задания визуальных эффектов.
AI (Artificial Intelligence) — искусственный интеллект.
Левел-дизайн (Level Design) — построение сцены внутри игры, размещение объектов, специальных зон, баланс условий.
Подготовка
Тем, кто уже знаком с темой, описываемые моменты могут показаться банальными, но эти простые вещи помогут избежать множества ошибок и успешно начать разработку.
Семь советов перед началом проекта
Умерьте амбиции. Проекты вроде Doom Eternal или «Ведьмака» делают команды из десятков людей, а то и более. Их создание занимает несколько лет, у одного человека на подобную работу уйдет слишком много времени. Призвание вашей первой игры — дать ценнейший опыт разработки от идеи до релиза и как можно быстрее. Пройдя этот путь однажды, в следующий раз вы сможете сделать все лучше, быстрее, качественнее. Размер моего первого проекта был выбран не слишком продумано, поэтому он так и не дошел до релиза.
Ведите документацию. Нет необходимости создавать большие документы и планировать действия слишком детально. Но важно записывать все свои идеи, концепции, графики и схемы, результаты встреч и хранить их в надежном месте, не удалять. Отброшенная когда-то идея может оказаться решением проблемы в будущем, а старая схема поможет объяснить работу написанного тогда же участка кода. Однажды, после длительной паузы в разработке, чтобы разобраться в первоначальной концепции игры и вспомнить, на основе чего принимались решения по созданию механик, я поднимал старые интервью с представителями целевой аудитории, и это помогло ответить на мои вопросы. Так мы поняли, что проект начал развиваться в отрыве от предпочтений ЦА и что некоторые механики были избыточными и не принесли бы пользы.
Будьте гибкими. Первый проект не должен стать для вас непосильной задачей. Пусть это будет набор из нескольких механик, соединенных в игру, но зато каждый шаг будет понятен и прост. Для своей первой игры я выбрал Top-Down Shooter с дополнительными способами прокачки персонажа, предметов и подачи сюжета, и этого уже было слишком много! Но, как мне казалось, я зашел слишком далеко, чтобы отказываться от изначальной концепции. Это повлекло трудности в реализации — слишком большой объем работы при недостаточном опыте. Если вы уже взялись за сложную фичу, то иногда лучше не пытаться разобраться в ней до конца, а искать простые (готовые) пути решения.
Ищите обучающие материалы. Практически любую вещь уже кто-то делал до вас и, возможно, даже записал об этом видео! Вместо того чтобы тратить уйму времени на поиск решения, лучше пройти этот путь быстрее и занять себя следующей задачей.
Вот несколько ссылок:
- Unity Learn — содержит массу обучающих материалов о Unity и геймдеве в целом, приятный интерфейс и функционал, позволяющий отмечать прогресс в туториале.
- Brackeys — YouTube-канал со множеством толковых туториалов на разные тематики. Я лично использовал для освоения механизма Shader Graph и смотрел овервью NavMesh.
- Code Monkey — здесь найдете обучающие видео, советы по реализации и искусственному интеллекту.
- Курсы на Udemy — когда только начинал, мы купили с друзьями их курс по Unity, который состоял как из базовых, так и сложных тем.
Не стесняйтесь заглядывать в Asset Store. Иногда дешевле потратить средства и приобрести готовое решение, чем всё делать с нуля. Люди, пишущие такие плагины или разрабатывающие вижуал, являются экспертами в своей области. Покупка их пакетов будет выгодным вложением и, вероятнее всего, сэкономит ваше время и нервы. Однажды я использовал анимационный движок DoTween — у него есть бесплатная версия с ограниченными возможностями. Этот движок хорошо написан и документирован, покрывает весь функционал простых анимаций.
Никогда не сдавайтесь. Вы столкнетесь с трудностями в разработке, часто будет не хватать времени и сил, но каждый раз, возвращаясь к работе, вспоминайте, зачем вы это делаете. В сухом остатке остается только ваше упорство и целеустремленность.
Не бойтесь критики. Покажите свою первую игру друзьям. Скорее всего, её воспримут скептически, сравнивая со стандартами игр в индустрии. Обратная связь поможет увидеть, что необходимо улучшить. Когда я показал свою первую выпущенную игру друзьям и знакомым, я столкнулся с непониманием процессов в ней, обучение тоже не слишком этому способствовало. Но благодаря фидбэку можно увидеть проблемные точки, усовершенствовать игру и довести её до релиза.
Помните: никто сразу не становился выдающимся разработчиком. Многие начинали свой путь с малого. Разработка игр — такой же навык, как и другие. Его можно прокачать.
Начало проекта: пять шагов к реализации
Шаг 1. Идея
Вы как художник можете придумать что угодно, чтобы затронуть чувства будущего игрока — вызвать радость, смех, интерес, страх, мотивацию «попотеть». Несмотря на то, что работа над идеей — творческий процесс, в нем есть и техническая подоплека.
Создание идеи состоит из нескольких составляющих.
Описание — соберите все ваши наработки, схемы, скетчи и сформируйте из них целостную концепцию. Необходимо составить портрет будущего игрока (возраст, пол, предполагаемые предпочтения и интересы). Для этого следует опросить друзей, которые интересуются данным жанром, и проанализировать, что их объединяет, что они хотят от игры. Для описания игр на ранних этапах я использую такую методику: пытаюсь объяснить механику игры человеку, не связанному с разработкой, на ходу делая схемы от руки, небольшие текстовые описания игрового процесса, таблички с балансом.
Цели проекта — подумайте, рассчитываете ли вы зарабатывать с вашей игры или делаете её просто в свое удовольствие, какой опыт хотите от этого получить, в каких событиях поучаствовать. В своей первой игре я ставил цель научиться процессу разработки, сделать что-то интересное и получить опыт. Важно осознавать, к чему вы стремитесь, потому что подход к разработке при разных целях будет отличаться. Если основная цель — получить больше опыта, то стоит уделять время технологиям и не искать обходных путей в решении задач. А если закончить проект, то иногда можно пожертвовать качеством в пользу скорости. Если уверены, что это не приведет к значительным проблемам на других этапах развития проекта.
Сеттинг — соедините всю информацию об игровом мире, персонажах, создайте сюжет и опишите это максимально систематизировано. Детально проработанный сеттинг сможет ответить на множество ваших вопросов во время разработки. У меня значительный опыт в настольных ролевых играх, поэтому создание сюжета, историй и правил не составляет проблем. Начиная новую игру, после выбора жанра и основ сеттинга я с удовольствием прописываю действующие лица, особо значимые события и места. Даже если игроку не будет видна общая картина, она поможет в создании локального сюжета, ответит на вопросы, кто стоит за событиями, какие последствия действий игрока и как на это будет реагировать остальной игровой мир.
Референсы — в 2021 году действительно большим достижением является выжить придумать что-то новое. Ведь, скорее всего, кто-то уже сделал что-то похожее на вашу идею. Прочитайте рецензии, дневники разработчика, статьи об игре и обязательно сыграйте! Пусть такие проекты станут вашими идейными вдохновителями. Глядя на них, вы сможете понять, как сделать свою игру лучше, избежать чужих ошибок и придумать что-то новое.
Шаг 2. Выбор платформы
Выбор платформы сильно повлияет на рынок, жанр и управление игрой. Классический рынок игровых консолей и компьютеров очень разнообразный. Высокие аппаратные мощности позволяют ослабить ограничения для полета фантазии, а контроллеры помогут сделать действительно интересный продукт.
Рынок обладает мощными площадками для издания игр, например Steam, GOG, Epic Games Store, с налаженным процессом их реализации. Развивающийся мобильный рынок включает в себя телефоны и планшеты. Это связывает вам руки из-за ограниченных аппаратных мощностей, но дает доступ к более широкой аудитории. В отличие от компьютера или консоли, телефон в наше время есть у большинства людей. Несмотря на более слабые возможности в плане «железа», среди мобильных игр встречаются серьезные проекты, даже если на первый взгляд они такими не кажутся.
При выборе платформы для первой игры руководствуйтесь:
- доступностью — если у вас нет PlayStation, возможно, не стоит разрабатывать под неё игры, ведь вы не сможете их протестировать;
- опытом — как у игрока определенной платформы у вас накопилось достаточно экспертизы, и игровой опыт целевой аудитории вам ближе, а значит, качество игры будет выше.
Шаг 3. Жанр
Как я уже написал выше, выбор платформы влияет на то, на каком жанре нужно остановиться. У каждой платформы есть своя аудитория и технические ограничения, «идеология».
Во время поездки в транспорте, когда ваш игрок одной рукой держится за поручень, а во второй держит телефон, ему будет неудобно играть в платформер альбомной ориентации с виртуальным джойстиком и панелью кнопок с другой стороны. А игра «три в ряд» с малой вероятностью станет популярной, если вы выпустите её на консоль нового поколения.
О жанрах игр можно написать отдельную статью, но в разрезе первого опыта стоит разработать что-то действительно простое.
Вот какие жанры, я считаю, подойдут:
Топдаун шутер (Topdown Shooter) — упрощенный вариант шутера, есть вид сверху, отсюда и название. Основная механика — это стрельба и бой. Примеры: Helldivers, Alien Shooter, Hotline Miami.
Роуглайк (Roguelike) — «рогалики», пошаговая игра, обычно имеет процедурно-генерируемые уровни, смерть персонажа необратима, нужно начинать игру заново. Примеры: Angband, Dungeon Crawl Stone Soup, Dwarf Fortress — имеет элементы roguelike.
Платформер (Platformer) — динамичная игра с основной механикой в виде разнообразных платформ и перемещения персонажа по ним, также есть множество вспомогательных инструментов. Примеры: Super Mario Bros., Hollow Knight, Ori and the Blind Forest.
Казуальная или гиперказуальная игра (Casual/Hypercasual) — игра, предназначена для широкого круга пользователей. Не требует от игрока особой усидчивости и затрат на обучение. Четко очерченных границ и механик у жанра нет. Примеры: Zuma, Fruit Ninja, Candy Crush Saga.
Пазл (Puzzle) — такие игры имеют механики, связанные с решением головоломок и задач, могут касаться разных типов головоломок (логических, словесных), конструирования, визуальных пазлов. Примеры: Harry Potter: Puzzles & Spells, 2048, World of Goo.
Гоночный симулятор (Racing game) — «гонки». Жанр связан с перегонами на скорость, необязательно автомобилей. Примеры: Need For Speed, GRID, Real Racing.
Я бы не советовал браться за:
Стратегия (Strategy) — бывают трех типов: стратегия в реальном времени, пошаговая стратегия, смешанная стратегия. Могут фокусироваться на стратегии (глобальные карты, действия больших масштабов) или тактике (локальная постройка, конкретные сражения). Имеют множество механик — управление юнитами, постройка базы, технологическое развитие и так далее. Примеры: Sid Meier’s Civilization, StarCraft, Stellaris, Tropico.
РПГ (RPG) — ролевая игра, основной упор делается на развитие персонажа, сбор команды для выполнения разных задач. Имеет механик даже больше, чем стратегия: развитие персонажа, способности, управление персонажем или персонажами, диалоги и прочее. Зачастую у РПГ разветвленный сюжет и несколько концовок. Из-за большого количества механик, вариантов развития игры их тяжело тестировать и разрабатывать, это самый сложный жанр. Примеры: Icewind Dale, Dragon Age, «Ведьмак».
Приключенческий боевик (Action adventure) — сочетает в себе элементы квеста и экшн. Несмотря на относительную простоту механик, имеет высокие требования к левел-дизайну и графической составляющей. Механики сводятся к преодолению препятствий в виде головоломок, задач на скорость, реакцию или логику и боев с противниками. Примеры: Assassin’s Creed, Tomb Raider, Batman: Arkham City.
Сейчас популярное веяние в разработке игр — смешение жанров. Но для старта я бы советовал выбрать один простой жанр и попробовать найти похожие игры, чтобы понять их механики.
Шаг 4. Знакомство с инструментами
Вам понадобится: игровой движок, редактор контента (2D и/или 3D), редактор кода, система контроля версий и планировщик задач.
Мой набор — это игровой движок Unity, редактор кода Visual Studio Community, идущий в комплекте с установкой Unity, графическая оболочка для системы контроля версий SourceTree с использованием Git, планировщик задач Trello, так как он самый простой, а весь функционал Jira мне не нужен. Для ведения и хранения документации я использую облачные инструменты Google.
Шаг 5. Распределение ролей в команде
Поговорим о сложностях. Хорошо и грамотно построенный процесс работы команды — это всегда большая заслуга менеджеров, потому начинать свой первый проект в большой команде я бы не стал. Лучше самостоятельно или с минимальной командой.
Если работаете в команде, у вас должны быть четкие границы ответственности в проекте. Это отдельная тема для изучения.
Основные роли
Гейм-дизайнер (Game Designer) — описывает игровой процесс, создает идеи, схемы и на более поздних этапах проверяет разработку на соответствие концепции.
Художник, 3D-моделлер (2D/3D Artist) — разрабатывает контент игры — 2D-спрайты, 3D-модели — и предоставляет его разработчику (или техническому художнику) для интеграции.
Разработчик (Developer) — пишет код, приводящий всё в действие, разрабатывает игровые механики, интегрирует ассеты, занимается сборкой игры.
Дополнительные роли
Тестировщик (QA Engineer) — тестирует с помощью различных методик, отвечает за качество продукта, выдает список багов разработчику для исправления.
UI/UX-дизайнер (UI/UX Designer) — разрабатывает дизайн, эффекты и анимации интерфейса, проводит исследование пользовательского опыта (UX), чтобы устранить неудобства.
Технический художник (Technical Artist) — интегрирует ассеты, настраивает эффекты, анимации, пишет скрипты. Является связующим звеном между художниками и программистами.
Аниматор (Animator) — создает 2D- или 3D-анимации для последующего использования в движке.
Саунд-дизайнер/Композитор (SFX Designer) — создает звуковые эффекты окружения, интерфейса, пишет музыку.
Визуальный дизайнер (VFX Designer) — занимается разработкой визуальных эффектов.
Маркетолог (Marketer) — отвечает за маркетинг игры, её распространение, аналитику и рекламу.
Продакт-оунер (Product Owner) — ответственный за игру, принимает решения об изменении курса и приоритизации задач с точки зрения бизнеса.
Аналитик (Analyst) — анализирует поведение игрока с помощью метрик и событий, прогнозирует успешность определенного функционала.
Менеджер экономики (Economy Manager) — настраивает игровой баланс, экономические показатели для внутреннего рынка игры.
Топ-5 ошибок при начале разработки игр
- Слишком амбициозный проект — нужно уметь оценивать свои силы и не пытаться откусить кусок больший, чем можете прожевать. А если вы свои силы ещё не знаете, начните с небольшого проекта, например, платформера с парой дополнительных механик или гиперказуальной игры.
- Запутанная идея — если при написании вы не можете объяснить её своей бабушке, значит, это слишком сложно. Всё должно быть описано так, чтобы любой мог разобраться в ней, стоит избежать сложных ссылок и запутанных формулировок.
- Неправильно поставленные цели — они могут касаться как заработка, так и обучения. Не стоит ожидать, что ваша первая игра принесет богатство и славу. Как и не нужно пробовать замахиваться на слишком сложные технологии и методики (мультиплеер, создание шейдеров, написание своего движка физики, редактирование пайплайна сборки) — это принесет только разочарование и подорвет ваши моральные силы.
- Большая и слабо организованная команда — составляйте команду, размышляя трезво, берите новых людей, только если четко понимаете, какие функции будет выполнять человек и кто будет отвечать за его работу.
- Длительная разработка — слишком затянувшийся проект лишит вас мотивации, потому и советую брать что-то поменьше, с чем справитесь быстро. Постепенно наращивая темп, сможете реализовывать более масштабные и сложные задачи.
Выводы
Подход к любому проекту всегда должен быть индивидуальным. Успех кого-то другого не гарантирует ваш личный успех, даже если повторить весь путь. Но со всех материалов можно собрать ценный опыт и рекомендации, которые помогут избежать части типичных ошибок и проблем. Что объединяет всех, кто добился успеха, так это тяжелый и кропотливый труд.
В следующей статье мы обсудим важный момент — как не забросить начатый проект и пройти путь до релиза.
Не теряйте энтузиазм, наполняйтесь вдохновением, творите и преуспевайте!