Оглавление
Время чтения: 18 минут
Создать компьютерную игру с нуля можно и одному, и командой. Путь в обоих случаях один и тот же: идея, документ, движок, прототип, графика, код, тесты и выпуск. Разница в том, сколько времени уходит на каждый шаг.
Мы в AppFox делаем игры для ПК и выпускаем их в Steam. В статье разбираем по шагам, как создать свою игру на компьютере: с чего начать, какой выбрать движок и язык, где взять графику и звук, как проверить игру и где её опубликовать. Сроки и деньги показываем на смете из нашего калькулятора, а не на усреднённых цифрах из интернета.
Коротко: как создать игру за 9 шагов
Если нужна только последовательность, вот она. Каждая карточка ведёт к разбору шага.
- 01 Идея и масштаб Выбираем жанр и сужаем игру до одной главной механики Описание игры в абзац
- 02 Дизайн-документ Записываем правила, уровни и всё, что предстоит нарисовать и запрограммировать Документ по игре (GDD)
- 03 Движок и язык Выбираем Unity, Unreal Engine, Godot или конструктор Проект в движке
- 04 Прототип Собираем механику на серых кубах и проверяем, интересно ли играть Играбельный прототип
- 05 Графика и звук Рисуем или берём готовых персонажей, локации, интерфейс и музыку Готовые ассеты
- 06 Производство Пишем код, собираем уровни, настраиваем баланс Полная версия игры
- 07 Тестирование Ищем ошибки и проверяем игру на слабых компьютерах Стабильная сборка
- 08 Выпуск Готовим страницу игры и публикуем её в магазине Игра в продаже
- 09 Поддержка Исправляем ошибки после релиза и выпускаем обновления Патчи и обновления
По такой же цепочке мы ведём студийные проекты: концепт и документ, прототип, производство, тестирование, релиз в Steam и поддержка после выхода. Подробно процесс описан на странице разработки компьютерных игр.
Как создать свою игру: пошаговая инструкция
1. Придумайте идею и ограничьте масштаб
Первую игру чаще всего губит размер замысла. Открытый мир, сюжет на двадцать часов и сетевой режим не по силам одному человеку, да и небольшой студии тоже.
Начните с одной механики, которая интересна сама по себе: прыжок, стрельба, сбор предметов, головоломка. Опишите игру одним абзацем: кто герой, что он делает, почему игроку это нравится и чем всё заканчивается. Если абзац не складывается, идея ещё не готова.
Жанр сильно влияет на объём работы. В нашем калькуляторе казуальная игра по шаблону стоит 1,9 млн ₽, а MOBA 9,9 млн ₽: в MOBA больше механик, сетевой код и 3D-графика. Для первой игры подойдут платформер, головоломка, раннер или небольшой рогалик. Как выбрать тему, мы разбирали в статье «Какую игру сделать».
Результат шага
2. Напишите дизайн-документ
Дизайн-документ игры (GDD, Game Design Document) описывает правила, уровни, персонажей, интерфейс и экономику. Для маленькой игры хватит нескольких страниц, у студийного проекта документ растёт до сотни.
В смете нашего калькулятора на документацию казуальной игры закладывается 60 страниц и 120 часов менеджера проекта, у стратегии уже 97 страниц.
Что записать в документ даже для небольшой игры:
- Цель и правилаКак выиграть, как проиграть, что даёт очки
- Механики и управлениеЧто умеет герой и какие кнопки за это отвечают
- Уровни и прогрессСколько уровней, чем они отличаются, как растёт сложность
- Список ассетовПерсонажи, локации, предметы, звуки и экраны интерфейса
Список ассетов нужен даже одному разработчику. По нему видно, сколько моделей, локаций и звуков предстоит сделать, и можно трезво оценить срок. Примеры документов собраны в статье «Делимся опытом: 5 примеров написания документации по разработке игр», а про сюжет мы писали в статье «Разработка сценария игры или приложения».
Результат шага
3. Выберите движок и язык программирования
Движок берёт на себя графику, физику, звук и сборку игры под разные платформы. Писать свой движок для первой игры не нужно: это отдельный большой проект.
Для ПК чаще всего выбирают Unity, Unreal Engine или Godot, а 2D-игру без кода можно собрать в конструкторе. Сравнение ниже, в разделах «Какой движок выбрать» и «Какой язык программирования нужен». В студии мы работаем на Unity с C# и на Unreal Engine с C++ и Blueprints.
Результат шага
4. Соберите прототип и проверьте, что играть интересно
Прототип собирают из простых фигур: кубы вместо персонажей, плоскости вместо уровней. Задача одна: понять, интересна ли главная механика, пока на графику не потрачено ни часа.
В Unity серый куб начинает слушаться клавиш после одного короткого скрипта. Его перетаскивают на куб, и по уровню уже можно ходить:
using UnityEngine;
using UnityEngine.InputSystem;
// Двигает объект по полу: WASD, стрелки или левый стик геймпада
public class PlayerMove : MonoBehaviour
{
[SerializeField] float speed = 5f; // единиц сцены в секунду
InputAction moveAction;
void Start()
{
// Move есть среди стандартных действий Input System
moveAction = InputSystem.actions.FindAction("Move");
}
void Update()
{
Vector2 input = moveAction.ReadValue<Vector2>();
// Клавиши дают X и Y, а пол в 3D лежит в плоскости X и Z
Vector3 direction = new Vector3(input.x, 0f, input.y);
transform.position += direction * speed * Time.deltaTime;
}
}
Скрипт читает действие Move из Input System, системы ввода Unity. Оно уже связано с WASD, стрелками и стиком геймпада, так что коду всё равно, на чём играют. Если в проекте действий ещё нет, их создаёт кнопка в Edit → Project Settings → Input System Package. Через стены такой куб проходит насквозь, но прототипу это не мешает.
Дайте прототип поиграть друзьям и молча смотрите, где они застревают и где им скучно. Если механика не цепляет на серых кубах, графика её не спасёт.
Из практики AppFox
После прототипа мы делаем vertical slice: один уровень, доведённый до финального качества по графике, звуку и интерфейсу. По нему видно, как будет выглядеть вся игра и сколько стоит её производство.
Результат шага
5. Сделайте графику и звук
Сначала решите, 2D или 3D. В 2D проще начать: персонажа и фон можно нарисовать в одном редакторе. В 3D добавляются моделирование, текстуры, анимация и свет.
Насколько это разная работа, видно по смете стратегии в нашем калькуляторе. Одна 2D-модель занимает около 18 часов художника, 2D-локация около 23. Одна 3D-модель занимает около 45 часов моделлера, а 3D-локация около 73.
В студии мы работаем в Blender, Maya и 3ds Max, текстуры рисуем в Substance Painter, 2D в Photoshop и Illustrator, анимацию 2D-персонажей делаем в Spine. Для пиксельной графики популярен Aseprite.
Если рисовать некому, берут готовые ассеты из магазинов движков. Подборки есть в статьях «Ассеты для Unity» и «Ассеты для Unreal Engine». Перед покупкой проверьте лицензию: разрешено ли использовать ассет в коммерческой игре.
Звук часто оставляют на конец, и зря. Без шагов, ударов и музыки даже готовая игра кажется пустой. Звуки берут из библиотек с лицензией для коммерческого использования или заказывают композитору.
Результат шага
6. Производство: код, уровни, баланс
Самый долгий шаг. Здесь пишут игровую логику, собирают уровни, настраивают баланс и связывают всё в одну игру.
Почти любая игра крутится вокруг игрового цикла. Десятки раз в секунду, на каждом кадре, игра делает одно и то же:
пока игра запущена:прочитать ввод игрокаобновить мир: движение, физика, врагинарисовать кадр
Вот как этот цикл выглядит в настоящем коде: целая маленькая игра на Python с библиотекой Pygame, где есть окно, герой-кружок и управление стрелками. Внутри те же три части, что в схеме:
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 450))
clock = pygame.time.Clock()
hero = pygame.Vector2(400, 225) # где стоит герой, в пикселях
speed = 300 # пикселей в секунду
running = True
while running:
# секунды с прошлого кадра; tick(60) держит не больше 60 кадров
dt = clock.tick(60) / 1000
# 1. Ввод: закрыли ли окно и какие клавиши зажаты
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
# 2. Обновление мира: стрелки двигают героя
hero.x += (keys[pygame.K_RIGHT] - keys[pygame.K_LEFT]) * speed * dt
hero.y += (keys[pygame.K_DOWN] - keys[pygame.K_UP]) * speed * dt
# 3. Отрисовка: стереть прошлый кадр, нарисовать героя, показать
screen.fill("black")
pygame.draw.circle(screen, "orange", hero, 20)
pygame.display.flip()
pygame.quit()
Чтобы запустить пример, поставьте библиотеку командой pip install pygame. Скорость героя умножается на время с прошлого кадра, поэтому на быстром и на медленном компьютере он проходит одинаковое расстояние.
Ввод приходит с клавиатуры, мыши или геймпада. Движок прячет этот цикл и вызывает ваш код в нужный момент: в Unity это метод Update, в Godot _process, в Unreal Engine Tick. Программисту остаётся описать, что происходит с объектами за один кадр.
Сколько занимают сами механики, видно по смете стратегии. Боевая система занимает 375 часов программистов, строительство 225, ручное управление юнитами 163, менеджмент ресурсов 113. Это нормы опытной команды.
Баланс настраивают таблицами: урон, здоровье, цены, награды. Значения выносят в отдельные файлы, чтобы менять их без правки кода.
В Unity для этого есть ScriptableObject. Параметры врага описывают в коде один раз, а значения для каждого типа врагов лежат в своём файле проекта:
using UnityEngine;
// Параметры врага хранятся в отдельном файле, а не в коде
[CreateAssetMenu(fileName = "EnemyStats", menuName = "Game/Enemy Stats")]
public class EnemyStats : ScriptableObject
{
public int maxHealth = 100;
public int damage = 10;
public float moveSpeed = 3f;
}
using UnityEngine;
public class Enemy : MonoBehaviour
{
[SerializeField] EnemyStats stats; // файл с параметрами врага
int health;
void Start()
{
health = stats.maxHealth;
}
public void TakeDamage(int amount)
{
health -= amount;
if (health <= 0)
Destroy(gameObject);
}
}
Атрибут CreateAssetMenu добавляет в меню Assets → Create пункт Game → Enemy Stats. Геймдизайнер заводит по файлу на каждого врага и меняет здоровье и урон прямо в редакторе, не трогая код.
Результат шага
7. Протестируйте игру
Тестировать начинают с прототипа, а не перед релизом. Ошибку, найденную сразу, исправить проще: она ещё не обросла зависимостями.
Что проверяют:
- МеханикиКаждая работает по правилам из документа
- БалансИгру можно пройти, и при этом она не слишком лёгкая
- ПроизводительностьЧастота кадров держится на слабом компьютере
- СохраненияПрогресс не теряется после выхода и сбоя
- СовместимостьРазные видеокарты, разрешения экрана и геймпады
В смете казуальной игры на тестирование заложено около 40 часов тестировщика, у стратегии 212 часов и отдельно нагрузочный тест сервера. Как мы проверяем игры, рассказали в статьях «Game Over для багов: как мы тестируем игры» и «Полное руководство по тестированию игр: мобильные и настольные приложения».
Результат шага
8. Выпустите игру
Площадку выбирают ещё на шаге с движком: от неё зависит формат сборки. Браузерной игре нужен веб-экспорт, для Steam нужна сборка под Windows, а часто и под macOS и Linux. Где публиковать и на каких условиях, разобрали ниже в разделе «Где выпустить компьютерную игру».
В Steam страницу игры лучше открыть за несколько месяцев до релиза: игроки успеют добавить игру в список желаемого, и Steam сообщит им о выходе. Подробно про подготовку к Steam мы писали в статье «Как создать и разработать игру для Steam».
Результат шага
9. Поддерживайте игру после релиза
После выхода работа продолжается. В первые недели игроки находят ошибки, которые пропустило тестирование, и ждут исправлений. Дальше выходят обновления с новым контентом, а у коммерческих игр и дополнения (DLC).
В студийных проектах пострелизная поддержка и DLC у нас отдельный этап процесса: команда остаётся на проекте и после релиза.
Результат шага
Какой движок выбрать для создания игры
Движков десятки, но для компьютерных игр чаще всего выбирают из четырёх. Все они позволяют начать бесплатно, а различаются языком, удобством для 2D или 3D и условиями, когда игра начинает зарабатывать.
| Движок | Язык | Лучше всего для | Условия |
|---|---|---|---|
| Unity | C# | 2D и 3D, ПК, мобильные, VR | Бесплатно (Unity Personal), если доход и инвестиции за год не больше $200 000. В Unity 6 заставку «Made with Unity» можно отключить |
| Unreal Engine | C++, Blueprints | 3D с реалистичной графикой | Бесплатно, пока игра не заработала $1 млн. С выручки сверх этой суммы 5 % роялти, продажи в Epic Games Store не облагаются |
| Godot | GDScript, C# | 2D и небольшие 3D-игры | Бесплатно для любых игр, лицензия MIT, без роялти. В титрах указывают копирайт и лицензию движка |
| GameMaker | GML | 2D-игры | Бесплатно для некоммерческих игр. Для продажи нужна лицензия Professional, разовая покупка за $99,99 |
Новичку проще начать с Unity или Godot. По Unity больше всего уроков, в том числе на русском, а Godot лёгкий и быстро осваивается на 2D-проектах. Unreal Engine берут, когда нужна сложная 3D-графика. Мы сравнивали движки подробнее в статьях «Как создать игру на Unity с нуля: основы разработки для новичков», «Чем так хорош движок Unity?» и «Разработка на Unreal Engine: как создаются современные игры и проекты».
Какой язык программирования нужен
Язык почти всегда выбирается вместе с движком:
- C#Основной язык Unity, поддерживается и в Godot
- C++Язык Unreal Engine и большинства крупных игр
- BlueprintsВизуальные схемы в Unreal Engine: логику собирают из блоков без строк кода
- GDScriptСобственный язык Godot, похож на Python
- PythonПодходит для обучения: библиотека Pygame позволяет сделать простую 2D-игру
- JavaScriptЯзык браузерных игр, в том числе для Яндекс Игр
Если вы только учитесь программировать, берите C# и Unity или GDScript и Godot. Знания переносятся: игровой цикл, объекты, события и физика устроены похоже во всех движках.
Например, так в Godot выглядят бег и прыжок героя-платформера на GDScript. Метод _physics_process движок вызывает на каждом шаге физики, по умолчанию 60 раз в секунду:
extends CharacterBody2D
# Настройки видны в инспекторе: их можно менять без правки кода
@export var speed := 300.0
# Минус, потому что в 2D-сцене Godot ось Y смотрит вниз
@export var jump_velocity := -450.0
func _physics_process(delta: float) -> void:
# В воздухе героя тянет вниз гравитация из настроек проекта
if not is_on_floor():
velocity += get_gravity() * delta
# Прыжок только с земли: пробел или Enter
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = jump_velocity
# Стрелки влево и вправо: -1, 0 или 1
var direction := Input.get_axis("ui_left", "ui_right")
velocity.x = direction * speed
# Двигаем тело: пол и стены его останавливают
move_and_slide()
Скрипт вешают на узел CharacterBody2D с формой столкновения. Действия ui_left, ui_right и ui_accept есть в любом проекте Godot: это стрелки, пробел и Enter. В своей игре их обычно заменяют собственными в Project Settings → Input Map.
Можно ли создать игру без программирования
Можно, если игра 2D и механики стандартные. Конструкторы собирают логику из событий и условий вроде «если персонаж коснулся монеты, прибавить очко и убрать монету». Так работают GDevelop и Construct, а RPG Maker собран под ролевые игры. В больших движках есть визуальные скрипты: Blueprints в Unreal Engine и Visual Scripting в Unity.
Ограничение одно: чем сложнее механика, тем запутаннее схема событий. Если игра растёт, рано или поздно придётся писать код. Помочь на старте может и нейросеть, но проверять её работу всё равно нужно самому. Как мы используем ИИ в разработке, рассказали в статье «Как создать игру с помощью ИИ: реальный процесс, а не обещание».
Сколько времени и денег уходит на игру
Ниже цены по шаблонам игр из нашего калькулятора стоимости разработки. Шаблон включает документацию, дизайн интерфейса, графику, механики жанра, серверную часть и тестирование. Даже если вы делаете игру сами, цифры показывают масштаб работы.
| Жанр | Вся игра | Из них механики жанра | Из них 3D-графика |
|---|---|---|---|
| Казуальная игра | 1,9 млн ₽ | 0,5 млн ₽ | 0,4 млн ₽ |
| Раннер | 3,4 млн ₽ | 0,5 млн ₽ | 0,8 млн ₽ |
| Приключения | 5,2 млн ₽ | 1,2 млн ₽ | 1,3 млн ₽ |
| Ролевая игра (RPG) | 5,8 млн ₽ | 1,8 млн ₽ | 1,3 млн ₽ |
| Выживание | 7,4 млн ₽ | 1,8 млн ₽ | 1,2 млн ₽ |
| Шутер | 7,6 млн ₽ | 1,1 млн ₽ | 1,3 млн ₽ |
| Стратегия | 8 млн ₽ | 1,9 млн ₽ | 1,3 млн ₽ |
| MOBA | 9,9 млн ₽ | 1,4 млн ₽ | 2,7 млн ₽ |
Стратегия по шаблону калькулятора, 8 млн ₽
Из чего складывается смета игры
Механики жанра и сервер для онлайн-функций вместе занимают 44 % сметы. Поэтому сетевой режим и сложные механики первыми вычёркивают из первой игры.
Если делать игру одному
Маленькая казуальная игра в нашей смете набирает около 1 000 часов работы команды: документация, интерфейс, графика, механики, тестирование. Если заниматься игрой по 15 часов в неделю, такой объём займёт около 67 недель, то есть больше года. Поэтому одиночке стоит сокращать масштаб и брать готовые ассеты.
Когда игру делает студия, ориентиры такие:
Концепт, документ и оценка
1–4 недели
Дизайн-документ, план работ и точная смета.
Играбельный прототип
1–2 месяца
Простая ПК-игра
от 1,5 млн ₽
Средняя ПК-игра
от 4,5 млн ₽
Сложная 3D- или онлайн-игра
от 7,5 млн ₽
Для примера два наших проекта. Онлайн-стратегию «Казаки 4» для Steam команда делала 12 месяцев, бюджет 11 млн ₽. Браузерная стратегия «Битва Роботов» обошлась в 4 млн ₽ и около 3 000 часов работы.
Где выпустить компьютерную игру
Площадок много, у каждой свои требования к сборке и свои условия.
| Площадка | Что публикуют | Условия для разработчика |
|---|---|---|
| Steam | Игры для Windows, macOS и Linux | Взнос $100 за каждую игру. Steam компенсирует его в выплате, когда игра заработает $1 000 |
| VK Play | Игры для Windows и браузерные HTML5-игры | Заявка через кабинет разработчика на developers.vkplay.ru, проверка до двух рабочих дней. Разработчику до 85 % дохода |
| Яндекс Игры | Браузерные игры на HTML5, архив до 100 МБ | Публикация бесплатная, доход от рекламы и покупок в игре. Для Unity есть официальный плагин |
| itch.io | Инди-игры для ПК и браузера | Публикация бесплатная. Доля площадки по умолчанию 10 %, разработчик сам ставит от 0 до 100 % |
Студийные проекты мы выпускаем в Steam, Epic Games Store и GOG: готовим сборки, страницы игр и проходим проверку площадок.
Ошибки, из-за которых игры не доходят до релиза
- Шаг 1Слишком большая первая играОткрытый мир и сетевой режим растягивают разработку на годы, и проект бросают на середине.
- Шаг 4Графика раньше механикиКрасивые модели не спасут игру, в которую скучно играть. Сначала прототип на кубах.
- Шаг 4Нет плейтестовАвтор знает свою игру наизусть и не видит, где новичок застрянет.
- Шаг 6Новые идеи посреди производстваКаждая новая механика тянет за собой уровни, баланс и тесты. Идеи лучше копить для обновлений.
- Шаг 7Оптимизация в последний моментИгра тормозит на слабых компьютерах, а переделывать поздно.
- Шаг 8Страница в магазине в день релизаОб игре узнают в день выхода, и её некому ждать.
Чек-лист перед началом разработки
Отметьте, что уже готово. Если половина пунктов пустая, к производству переходить рано.
Все пункты отмечены, можно переходить к производству. Если делать игру со студией, начнём с концепта и оценки: на них уходит 1–4 недели, после них называем точную цену.
Обсудить игру со студиейГлавное
- Идея
- Документ
- Движок
- Прототип
- Графика и звук
- Производство
- Тесты
- Выпуск
- Поддержка
Чтобы создать компьютерную игру, не нужен большой бюджет на старте. Нужны маленькая идея, прототип, который проверили живые игроки, и честная оценка объёма по списку ассетов.
Движок и язык важны меньше, чем кажется: Unity, Unreal Engine и Godot бесплатны для старта, а навыки переносятся между ними. Чаще всего игры не доходят до релиза из-за размера замысла, а не из-за выбора технологий.
FAQ
Можно ли создать игру одному?
Можно, если игра небольшая: головоломка, платформер, визуальная новелла. Даже маленькая казуальная игра в нашей смете набирает около 1 000 часов работы команды, поэтому одиночке стоит сокращать масштаб и брать готовые ассеты.
Сколько времени занимает создание первой игры?
Прототип на серых кубах собирают за несколько недель. Законченная казуальная игра из нашей сметы при 15 часах работы в неделю займёт около 67 недель. В студии такая игра делается быстрее, потому что над ней параллельно работают несколько специалистов.
Какой движок выбрать новичку?
Для 2D и первых проектов Unity или Godot, для 3D с реалистичной графикой Unreal Engine. Условия использования сравнили выше, в разделе «Какой движок выбрать».
Можно ли сделать игру бесплатно?
Да. Unity, Unreal Engine и Godot можно скачать бесплатно, как и редактор 3D-графики Blender. Выложить игру на itch.io тоже ничего не стоит. Платить придётся при выходе в Steam: взнос $100 за игру Steam компенсирует в выплате, когда она заработает $1 000. Unity становится платным, когда доход превышает $200 000 в год, а Unreal Engine берёт 5 % с выручки игры сверх $1 млн.
Нужно ли уметь программировать?
Для простой 2D-игры нет: хватит конструктора или визуальных скриптов. Для 3D и сетевых игр без кода не обойтись.
Сколько стоит разработать игру в студии?
Простая ПК-игра у нас стоит от 1,5 млн ₽, средняя от 4,5 млн ₽, сложная 3D- или онлайн-игра от 7,5 млн ₽. Точную цену называем после концепта и оценки, на них уходит 1–4 недели.
Хотите сделать игру вместе со студией?
Расскажите об идее, и мы предложим, как довести её до релиза. Подробнее о том, как мы работаем, на странице разработки компьютерных игр под ключ.