После курса · Обновлено 4 ноября 2026 · 14 мин чтения
Персонаж в игре — это картинка, место на сцене и число, которое меняется при нажатии. Всё остальное — надстройки. Разбираем, что уже есть в курсе, чего пока нет, где заканчиваются интерфейсы и начинается геймдев, и что делать в первые тридцать дней.
Короткий ответ
Персонаж — это картинка, поставленная в точку на сцене, которой управляет число. Картинку рисуют отдельно, точку задают стилями, число меняют обработчиком нажатия. Всё остальное — физика, столкновения, камера, уровни — надстройки над этими тремя вещами.
| Слой | Что нужно | Чем делают |
|---|---|---|
| Картинка | спрайт: персонаж с прозрачным фоном | PNG или SVG, нарисованный в редакторе или сгенерированный |
| Сцена | место, где живёт герой: фон, земля, слои | HTML-блоки и CSS: position: relative у сцены, absolute у героя |
| Движение | покачивание, поворот, шаг в сторону | CSS: transform, transition, @keyframes |
| Управление | реакция на нажатие или клавишу | JavaScript: переменная-координата и обработчик |
| Правила | край сцены, столкновение, здоровье | условия if в JavaScript |
| Физика и мир | гравитация, отскоки, камера, уровни | canvas или игровой движок |
Обратите внимание: рисование стоит только в первой строке. Всё остальное — работа с картинкой, а не «умение рисовать в коде». Поэтому человек, который не умеет рисовать, вполне может собрать персонажа: он возьмёт готовый спрайт.
Этого достаточно, чтобы сделать меню игры, визуальную новеллу, сцену с диалогом, простую аркаду на кнопках и любую страницу, где что-то двигается. Именно так выглядят интерфейсы многих браузерных игр — и именно этого не хватало траектории до седьмого модуля.
Спрайт — картинка, подготовленная для игры: прозрачный фон, ровные края, небольшой размер. Прозрачность — не украшение, а рабочий инструмент: героя ставят поверх травы, камня или ночного неба, и фон сцены должен быть виден вокруг него.
JPG не подойдёт
В JPG прозрачности нет никогда. Если сохранить героя в JPG, вокруг него останется белый прямоугольник — и на любом фоне он будет выглядеть наклейкой. Для спрайтов берут PNG или SVG.
Когда персонаж должен идти, одного файла мало: нужны несколько кадров. Их складывают в один файл — спрайт-лист — и показывают по одному, сдвигая фон. Так устроены и старые игры, и многие современные: один файл, несколько кадров, переключение по номеру.
Размер кадра задают стилями: width и height у блока, а background-size растягивает спрайт-лист так, чтобы в окне помещался ровно один кадр. Для пиксельной графики добавляют image-rendering: pixelated — иначе браузер размывает её при увеличении.
Граница проходит не по «сложности кода», а по количеству правил. Один персонаж, который ходит по сцене, — это CSS и немного JavaScript. Двадцать врагов, пули, платформы и камера — это уже движок: иначе вы напишете свой, только хуже.
В игре герой всё время с чем-то сталкивается: монета, шип, дверь, враг. Кажется, что за этим стоит отдельная «физика», но в простом случае это проверка, пересеклись ли два прямоугольника. У каждого объекта есть левый край и ширина, и накладываются они, когда левый край одного левее правого края другого — и наоборот. Два условия, и правило готово: подобрать предмет, отнять здоровье, открыть дверь.
Хитбокс — не картинка
Прямоугольник, которым объект «касается» мира, называют хитбокс. Он не обязан совпадать с картинкой: у спрайта бывают прозрачные поля, у героя — шляпа или хвост. Обычно хитбокс делают чуть меньше картинки, чтобы касание ощущалось честным: игрок видит «ещё чуть-чуть» и не считает игру сломанной.
Второе, без чего правило ломается, — память о том, что событие уже случилось. Без флага здоровье тает на каждом шаге, пока герой стоит рядом с шипом, а монета засчитывается бесконечно. Флаг — обычная переменная, такая же, как координата. Обе вещи разобраны в уроке про столкновения.
Когда герой двигается, упирается в край, подбирает монету и теряет здоровье, на экране меняется картинка. Но меняется она потому, что меняются данные: координата, число монет, здоровье, флаг «монета уже взята». Понять это стоит до того, как браться за движок: любая игра — это данные плюс правила, которые их меняют.
| Что видно на экране | Что это в данных | Где разобрано |
|---|---|---|
| герой сдвинулся | переменная-число и присваивание | переменные |
| герой упёрся в край | сравнение: больше или меньше | сравнения и логика |
| герой столкнулся с монетой | условие «если … то …» | ветвления |
| монета засчиталась один раз | флаг и проверка «ещё не случилось» | столкновение |
| здоровье, монеты, координата | поля одной записи | таблица и запись, поля и ключ |
В учебной сцене это пять отдельных переменных — так проще увидеть каждую. В настоящей игре герой, монеты и враги хранятся одинаково: список записей, у каждой свои поля. Тогда добавить второго врага — это добавить запись, а не копировать код. Именно поэтому [базы данных](word:База данных) и таблицы нужны не «большим компаниям», а любой игре, где объектов больше одного.
Почему это важно на практике
Когда состояние разбросано по обработчикам, игра ломается непонятно: здоровье уменьшилось дважды, монета посчиталась три раза, после перезапуска осталось старое число. Когда состояние собрано в одном месте — переменная, объект или запись, — его можно показать, сохранить и проверить. Это же правило работает и в приложениях: подарок и колесо фортуны на платформе записывают результат в данные, а экран только показывает запись.
Правило, которое экономит вечер
Сохраняйте исходник персонажа (Figma-файл, .aseprite, слои). Через месяц понадобится поправить цвет шапки или добавить кадр — и без исходника придётся рисовать заново.
| Роль | Что делает | Что нужно сверх курса |
|---|---|---|
| Frontend-разработчик игровых интерфейсов | меню, магазин, профиль, экраны достижений в игре | HTML, CSS, JavaScript — то, что вы уже учите |
| Разработчик на движке | логика игры: персонажи, правила, уровни | движок (Unity, Godot) и язык движка |
| Геймдизайнер | придумывает правила, баланс и то, как игра ощущается | понимание игр, умение проверять идеи на людях |
| Technical artist | связывает художников и код: эффекты, оптимизация, инструменты | графика плюс программирование |
Честно про курс
Отдельного курса по геймдеву у нас нет и обещать его мы не будем. Платформа учит интерфейсам и основам программирования: она даёт первый слой — персонаж есть, он двигается, им можно управлять. Движок и физика — следующий шаг, и его придётся осваивать отдельно.
И это не тупик. Люди приходят в игры с разных сторон: кто-то из интерфейсов, кто-то из Python, кто-то из тестирования. Важна не первая профессия, а первая законченная работа, которую можно показать.
Практика — в модуле «Персонаж и движение» траектории «Интерфейсы и сайты с нуля»: восемь уроков от карточки героя до разбора сцены. Первый урок открыт без подписки — спрайт и карточка героя.
Вторая половина — в траектории «Программирование с нуля»: переменные, сравнения, ветвления и таблица как список одинаковых записей объясняют то же самое со стороны данных. Там же — поля, записи и ключ: как найти нужную строку, если объектов много.
Если вопрос шире — «куда расти после курса» — читайте «Куда расти дальше: уровни и треки» и «Как выбрать направление»: там профессии, навыки и первый шаг для каждого направления, включая интерфейсы.
Соседние статьи: что делать после курса и как выглядит работа программиста. А слова из этой статьи — в словаре программиста: спрайт, анимация, движок, коллизия и хитбокс.