Как делать персонажей для игр — и что для этого нужно

После курса · Обновлено 4 ноября 2026 · 14 мин чтения

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

Короткий ответ

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

Из чего состоит персонаж

СлойЧто нужноЧем делают
Картинкаспрайт: персонаж с прозрачным фономPNG или SVG, нарисованный в редакторе или сгенерированный
Сценаместо, где живёт герой: фон, земля, слоиHTML-блоки и CSS: position: relative у сцены, absolute у героя
Движениепокачивание, поворот, шаг в сторонуCSS: transform, transition, @keyframes
Управлениереакция на нажатие или клавишуJavaScript: переменная-координата и обработчик
Правилакрай сцены, столкновение, здоровьеусловия if в JavaScript
Физика и миргравитация, отскоки, камера, уровниcanvas или игровой движок

Обратите внимание: рисование стоит только в первой строке. Всё остальное — работа с картинкой, а не «умение рисовать в коде». Поэтому человек, который не умеет рисовать, вполне может собрать персонажа: он возьмёт готовый спрайт.

Что вы уже умеете после модуля «Персонаж и движение»

  1. Вставить персонажа и не растянуть его на весь экран — спрайт и карточка героя: ширина, круглая рамка, описание alt.
  2. Поставить героя в нужную точку сцены — сцена и координаты: relative у сцены, absolute у героя, left и bottom, слои.
  3. Оживить его без JavaScript — transform и @keyframes: покачивание, плавность, «дыхание» тени.
  4. Научить его ходить — кнопки и координата: шаг, край сцены, число на экране.
  5. Собрать управляемого персонажа — проект модуля: ходит, поворачивается, не уезжает за край.
  6. Показать шаг кадрами — спрайт-лист: четыре кадра в одном файле, переключение фоном и пауза, когда герой стоит.
  7. Заметить столкновение — монета и шип: пересечение двух прямоугольников, хитбокс и флаг «уже случилось».
  8. Найти ошибку в сцене — разбор сцены: три слоя сцены, четыре частые поломки и поиск причины по цепочке «объявил → изменил → показал».

Этого достаточно, чтобы сделать меню игры, визуальную новеллу, сцену с диалогом, простую аркаду на кнопках и любую страницу, где что-то двигается. Именно так выглядят интерфейсы многих браузерных игр — и именно этого не хватало траектории до седьмого модуля.

Спрайт: главное про картинку

Спрайт — картинка, подготовленная для игры: прозрачный фон, ровные края, небольшой размер. Прозрачность — не украшение, а рабочий инструмент: героя ставят поверх травы, камня или ночного неба, и фон сцены должен быть виден вокруг него.

JPG не подойдёт

В JPG прозрачности нет никогда. Если сохранить героя в JPG, вокруг него останется белый прямоугольник — и на любом фоне он будет выглядеть наклейкой. Для спрайтов берут PNG или SVG.

Когда персонаж должен идти, одного файла мало: нужны несколько кадров. Их складывают в один файл — спрайт-лист — и показывают по одному, сдвигая фон. Так устроены и старые игры, и многие современные: один файл, несколько кадров, переключение по номеру.

Размер кадра задают стилями: width и height у блока, а background-size растягивает спрайт-лист так, чтобы в окне помещался ровно один кадр. Для пиксельной графики добавляют image-rendering: pixelated — иначе браузер размывает её при увеличении.

Движение: три уровня

  1. CSS. Анимация по сценарию @keyframes и плавность через transition. Работает без JavaScript, подходит для покачивания, пульса, появления, вращения. Этого хватает для «живой» сцены.
  2. JavaScript и координата. Число-состояние (x, y), обработчики нажатий или клавиш, перерисовка через style.left. Так персонаж начинает слушаться игрока. Для плавного движения каждый кадр вызывают requestAnimationFrame — это как «следующий кадр фильма», а не «подожди 16 миллисекунд».
  3. Canvas и движок. Когда объектов десятки, а нужны столкновения, гравитация и камера, DOM перестаёт быть удобным: каждый элемент — это узел страницы. Тогда рисуют на canvas или берут движок — Phaser и PixiJS для браузера, Unity, Unreal и Godot для больших игр.

Граница проходит не по «сложности кода», а по количеству правил. Один персонаж, который ходит по сцене, — это CSS и немного JavaScript. Двадцать врагов, пули, платформы и камера — это уже движок: иначе вы напишете свой, только хуже.

Столкновение: одно правило, а не физика

В игре герой всё время с чем-то сталкивается: монета, шип, дверь, враг. Кажется, что за этим стоит отдельная «физика», но в простом случае это проверка, пересеклись ли два прямоугольника. У каждого объекта есть левый край и ширина, и накладываются они, когда левый край одного левее правого края другого — и наоборот. Два условия, и правило готово: подобрать предмет, отнять здоровье, открыть дверь.

Хитбокс — не картинка

Прямоугольник, которым объект «касается» мира, называют хитбокс. Он не обязан совпадать с картинкой: у спрайта бывают прозрачные поля, у героя — шляпа или хвост. Обычно хитбокс делают чуть меньше картинки, чтобы касание ощущалось честным: игрок видит «ещё чуть-чуть» и не считает игру сломанной.

Второе, без чего правило ломается, — память о том, что событие уже случилось. Без флага здоровье тает на каждом шаге, пока герой стоит рядом с шипом, а монета засчитывается бесконечно. Флаг — обычная переменная, такая же, как координата. Обе вещи разобраны в уроке про столкновения.

Персонаж — это данные

Когда герой двигается, упирается в край, подбирает монету и теряет здоровье, на экране меняется картинка. Но меняется она потому, что меняются данные: координата, число монет, здоровье, флаг «монета уже взята». Понять это стоит до того, как браться за движок: любая игра — это данные плюс правила, которые их меняют.

Что видно на экранеЧто это в данныхГде разобрано
герой сдвинулсяпеременная-число и присваиваниепеременные
герой упёрся в крайсравнение: больше или меньшесравнения и логика
герой столкнулся с монетойусловие «если … то …»ветвления
монета засчиталась один разфлаг и проверка «ещё не случилось»столкновение
здоровье, монеты, координатаполя одной записитаблица и запись, поля и ключ

В учебной сцене это пять отдельных переменных — так проще увидеть каждую. В настоящей игре герой, монеты и враги хранятся одинаково: список записей, у каждой свои поля. Тогда добавить второго врага — это добавить запись, а не копировать код. Именно поэтому [базы данных](word:База данных) и таблицы нужны не «большим компаниям», а любой игре, где объектов больше одного.

Почему это важно на практике

Когда состояние разбросано по обработчикам, игра ломается непонятно: здоровье уменьшилось дважды, монета посчиталась три раза, после перезапуска осталось старое число. Когда состояние собрано в одном месте — переменная, объект или запись, — его можно показать, сохранить и проверить. Это же правило работает и в приложениях: подарок и колесо фортуны на платформе записывают результат в данные, а экран только показывает запись.

Где брать картинку персонажа

Правило, которое экономит вечер

Сохраняйте исходник персонажа (Figma-файл, .aseprite, слои). Через месяц понадобится поправить цвет шапки или добавить кадр — и без исходника придётся рисовать заново.

Что не нужно делать на старте

План на 30 дней

  1. Неделя 1. Соберите сцену с одним персонажем: фон, земля, герой, подпись. Пока без движения — важно, чтобы он стоял там, где нужно, и на телефоне тоже.
  2. Неделя 2. Добавьте движение кнопками и границы сцены. Добейтесь, чтобы персонаж никогда не уезжал за край и не «дёргался».
  3. Неделя 3. Сделайте спрайт-лист из 4 кадров и переключайте кадры, пока герой идёт — это уже разобрано в уроке про спрайт-лист. Здесь появляется настоящая анимация, а не только покачивание.
  4. Неделя 4. Добавьте второе правило: столкновение с предметом (подобрал монету) или с врагом (потерял здоровье). Одно правило, но работающее — это уже разобрано в уроке про столкновения.
  5. В конце. Выложите сцену и покажите её: другу, в сообществе, в портфолио. Законченная маленькая работа учит больше, чем большая незаконченная.

Куда это ведёт

РольЧто делаетЧто нужно сверх курса
Frontend-разработчик игровых интерфейсовменю, магазин, профиль, экраны достижений в игреHTML, CSS, JavaScript — то, что вы уже учите
Разработчик на движкелогика игры: персонажи, правила, уровнидвижок (Unity, Godot) и язык движка
Геймдизайнерпридумывает правила, баланс и то, как игра ощущаетсяпонимание игр, умение проверять идеи на людях
Technical artistсвязывает художников и код: эффекты, оптимизация, инструментыграфика плюс программирование

Честно про курс

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

И это не тупик. Люди приходят в игры с разных сторон: кто-то из интерфейсов, кто-то из Python, кто-то из тестирования. Важна не первая профессия, а первая законченная работа, которую можно показать.

Что дальше

Практика — в модуле «Персонаж и движение» траектории «Интерфейсы и сайты с нуля»: восемь уроков от карточки героя до разбора сцены. Первый урок открыт без подписки — спрайт и карточка героя.

Вторая половина — в траектории «Программирование с нуля»: переменные, сравнения, ветвления и таблица как список одинаковых записей объясняют то же самое со стороны данных. Там же — поля, записи и ключ: как найти нужную строку, если объектов много.

Если вопрос шире — «куда расти после курса» — читайте «Куда расти дальше: уровни и треки» и «Как выбрать направление»: там профессии, навыки и первый шаг для каждого направления, включая интерфейсы.

Соседние статьи: что делать после курса и как выглядит работа программиста. А слова из этой статьи — в словаре программиста: спрайт, анимация, движок, коллизия и хитбокс.

Другие статьи раздела

Что ещё есть на сайте

Учиться

  • Уроки — Все уроки трёх траекторий: список, поиск и ваш прогресс.
  • Программирование с нуля — Python с первой команды до своего проекта: 12 модулей.
  • Интерфейсы и сайты с нуля — Кнопки, страницы и мини-игры: результат виден сразу в браузере.
  • Компьютер без страха — Файлы, браузер, пароли, мошенники, документы и деньги в интернете простыми словами. Бесплатно и без оплаты.
  • Если уже случилось — Деньги ушли с карты, пропала симка, взломали аккаунт, потерялись документы — порядок действий по шагам и куда звонить.
  • Какой компьютер нужен — Чек-лист по уровням: для учёбы ничего покупать не нужно, для своего проекта — 16 ГБ и SSD, для работы — 32 ГБ. Плюс нейросети и устаревание железа.
  • Без кода: ставить задачу — Как объяснить задачу программисту и принять работу. Кода нет ни строчки.
  • Конструктор описания задачи — Собрать описание по полям и получить готовый текст для исполнителя.

С чего начать

Потренироваться

  • Практикум: задачи из жизни — Та же команда урока — на работе, дома и в документах. 63 задачи с проверкой вывода и без регистрации.
  • Игры-тренажёры — Найти ошибку в чужом коде, прочитать, что делает программа, и увидеть, что случится, если нажать клавишу.
  • Симулятор: от задания до сдачи — Пройти путь целиком: папка, терминал, файл, сохранение, запуск, проверка по критерию приёмки. Два сценария и две системы.
  • Мастерская экрана — Проверить цвета и раскладку страницы: контраст, шаблоны, конструктор.
  • Колесо фортуны — Одна прокрутка в день: скидка на подписку или дни доступа.

Словари и юмор

Сайт, оплата и помощь

  • Родителям — Возраст, время на уроки, безопасность в сообществе, деньги и результат — что важно знать до оплаты.
  • Инструкция пользователя — Как всё устроено: уроки, кабинет, уведомления, подписка, ярлык.
  • Сообщество — Вопросы и ответы: читать можно всем, писать — после входа.
  • Подписка — Тарифы, что входит, возврат 14 дней, история платежей.
  • Помощь и поддержка — Частые вопросы и форма обращения — ответ в течение дня.
  • Отзывы учеников — Что пишут те, кто уже учится: без звёзд, с проверкой каждого текста.
  • Профиль и пароль — Имя, пароль для входа без кода, уведомления, свои данные.