раздел 47
Геймдев: зал «Комета»
Курс для того, кто пишет на TypeScript, знает основы Rust и ни разу не делал игр. В Посаде закрыт зал игровых автоматов «Комета»: его основатель умер и оставил тетради с набросками игр и недописанную RPG. Внучка нанимает тебя оживить зал автомат за автоматом, пока напротив не открылся клуб с гача-автоматами. Игры собираешь на Bevy: игровой цикл и ECS, векторы и матрицы, физика, ощущение от игры, платформер и левел-дизайн, геймдизайн и баланс, теория игр, ИИ врагов, роглайк, процедурная генерация, сценарий и ветвящиеся диалоги, своя RPG на свободных ассетах, 3D и тренажёр. Код проверяется тестами без окна, а саму игру ты запускаешь у себя.
Не получилось изменить список. Попробуй ещё раз.
Без входа у каждого урока видно начало. Войди, чтобы читать целиком, отмечать пройденное и решать задачи. войти
Уроки раздела в премиуме: 1 200 ₽ в месяц или 10 000 ₽ в год. Оплата пока не подключена, доступ открывается промокодом. ввести промокод
Мастерская: Ракетка
Мастерская: Кирпичник
Мастерская: Нашествие
Мастерская: Метеор
Уроки раздела
Зал закрыт: что такое игра
Первый автомат: цикл и ECS
Изделие «Ракетка», крейт raketka
Векторы: геометрия для игры
Изделие «Кирпичник», крейт kirpichnik
Сок: отклик и полировка
Изделие «Нашествие», крейт nashestvie
Инерция: физика на тяжёлом джойстике
Изделие «Метеор», крейт meteor
Понятия курса
Понятия разобраны внутри уроков. Нажми на понятие, чтобы открыть урок, где оно объясняется.
Зал закрыт: что такое игра
- Зал закрытЧто делает автомат игрой: правила, цель, обратная связь, добровольность и магический круг. Почему игру делают и числами, и руками, и как устроен курс.урок 1 · Зал закрытопираются: урок 2
- Первое окноBevy у себя: шаблон komet-template, cargo run, окно, камера и белый квадрат. App, DefaultPlugins и MinimalPlugins, система и расписание; почему первая сборка долгая.урок 3 · Первое окноопираются: урок 4
- Стенд без окнаКак курс проверяет игру без окна: MinimalPlugins, app.update(), время вручную через TimeUpdateStrategy и запрос в тесте. Что проверяет раннер, а что ты смотришь у себя.урок 4 · Стенд без окнаопираются: урок 5
- MDA и основной циклМеханика, динамика и эстетика на одном автомате; основной цикл «действие, отклик, решение» и восемь видов удовольствия.урок 2 · MDA и основной циклопираются: урок 3
Первый автомат: цикл и ECS
- ВводНажато против удерживается, действия вместо клавиш, привязки как данные; два игрока на одной клавиатуре и ввод в тесте.урок 12 · Вводопираются: урок 13
- Время кадраПочему x += 5 бегает по-разному на 30 и 144 Гц; скорость в единицах в секунду и Time::delta_secs.урок 6 · Время кадраопираются: урок 7
- Данные вместо объектовДерево наследования GameObject против композиции компонентов; архетипы и таблицы, почему ECS дружит с кэшем.урок 8 · Данные вместо объектовопираются: урок 9
- Игровой циклВвод, обновление, отрисовка; кадр и FPS; расписания Bevy от First до Last. Первый этап «Ракетки»: поле и ракетки как сущности.урок 5 · Игровой циклопираются: урок 6
- Компоненты и запросыКомпоненты и маркеры, Query, фильтры With, Without, Changed и Single; мяч отскакивает от ракетки и не застревает.урок 9 · Компоненты и запросыопираются: урок 10
- Плагины и тест матчаПлагины как модули игры, игра отдельно от отрисовки; случайность с сидом и детерминированный тест «матч до трёх».урок 15 · Плагины и тест матчаопираются: урок 16
- Порядок системchain, before и after, наборы систем; гонка «сначала двинули, потом проверили» и тест, который её ловит.урок 13 · Порядок системопираются: урок 14
- Ресурсы и командыРесурс как одно значение на мир, Commands и отложенное применение: счёт, удаление мяча и новая подача.урок 10 · Ресурсы и командыопираются: урок 11
- Сообщения и наблюдателиБуфер сообщений на кадр против немедленной реакции наблюдателя; гол как событие, которое читают счёт и подача.урок 11 · Сообщения и наблюдателиопираются: урок 12
- Состояния игрыМеню, игра, пауза, конец: States, OnEnter и OnExit, run_if(in_state(..)) и уборка поля при выходе.урок 14 · Состояния игрыопираются: урок 15
- Фиксированный шагНакопитель, FixedUpdate и Time<Fixed>, спираль смерти и интерполяция отрисовки; мяч в шаге физики.урок 7 · Фиксированный шагопираются: урок 8
- Босс: дуэль ракетокДуэль целиком: угол отскока по месту удара, ускорение мяча, счёт до пяти и пауза; плейтест Тёмы и Гоши.урок 16 · Босс: дуэль ракетокопираются: урок 17
Векторы: геометрия для игры
- Длина и нормализацияДлина, расстояние и нормализация; почему по диагонали быстрее; length_squared для сравнения.урок 18 · Длина и нормализацияопираются: урок 19
- КругиКруг против круга и круг против прямоугольника через ближайшую точку; мяч больше не задевает воздух у угла.урок 27 · Кругиопираются: урок 28
- Отклик на столкновениеВытолкнуть, отразить, не залипнуть: все касания шага сразу и почему мяч дрожит в стыке.урок 28 · Отклик на столкновениеопираются: урок 29
- ОтражениеОтражение v - 2(v·n)n, нормаль поверхности и отскок с потерей; мяч перестаёт ползти по стене.урок 24 · Отражениеопираются: урок 25
- ПоворотПоворот как матрица 2×2, Mat2 и Rot2, композиция поворотов и поворот вокруг точки; орбита.урок 23 · Поворотопираются: урок 24
- ПроекцияПроекция на ось, часть вдоль нормали и часть вдоль стены; стена гасит часть скорости в себя.урок 20 · Проекцияопираются: урок 21
- Прямоугольники AABBПересечение прямоугольников со сторонами вдоль осей, глубина проникновения и ось наименьшего проникновения.урок 26 · Прямоугольники AABBопираются: урок 27
- Скалярное произведениеУгол между векторами, знак скалярного произведения и конус зрения: смотрит ли сторож на тебя.урок 19 · Скалярное произведениеопираются: урок 20
- Слева или справаПсевдоскалярное произведение: слева или справа, ориентация обхода, площадь треугольника и точка в треугольнике.урок 21 · Слева или справаопираются: урок 22
- Точки и векторыТочка против вектора, оси Bevy с y вверх, Vec2, сложение и умножение на число; смещение и скорость как векторы.урок 17 · Точки и векторыопираются: урок 18
- Углы и atan2Радианы, atan2 и полярные координаты, стык при ±π; угол отскока по месту удара о ракетку.урок 22 · Углы и atan2опираются: урок 23
- Уровни из данныхУровень как ASCII-сетка, include_str! и разбор с понятной ошибкой; бонусы и рекорд.урок 29 · Уровни из данныхопираются: урок 30
- Lerp и remapЛинейная интерполяция, обратная, remap и clamp; цвет кирпича по прочности.урок 25 · Lerp и remapопираются: урок 26
- Босс: кирпичикиКирпичики целиком: три уровня, ускорение мяча, жизни и рекорд; плейтест Лизы.урок 30 · Босс: кирпичикиопираются: урок 31
Сок: отклик и полировка
- Автомат анимацииСостояния анимации пушки: покой, движение, выстрел, обломки; приоритеты переходов и клип, который доигрывается.урок 38 · Автомат анимацииопираются: урок 39
- Анимация кадрамиСпрайт-лист и атлас, клип как данные, номер кадра по времени по кругу и до последнего кадра.урок 37 · Анимация кадрамиопираются: урок 38
- ЗвукЗвук как сообщение: что сыграть, как высоко и как громко; разброс высоты против пулемётной трели и громкость по расстоянию.урок 40 · Звукопираются: урок 41
- Кривые плавностиEase-in, ease-out, кубическая, back и elastic: доля времени становится долей пути; почему линейное движение выглядит мёртвым.урок 32 · Кривые плавностиопираются: урок 33
- Ощущение от игрыОтклик в реальном времени, симулированное пространство и полировка по Свинку; тот же тир сухим и живым. Первый этап «Нашествия»: пушка и строй.урок 31 · Ощущение от игрыопираются: урок 32
- Пул и волныПул объектов против создания и удаления, волны врагов из таблицы и строй, который с каждой волной быстрее.урок 41 · Пул и волныопираются: урок 42
- Сглаживание без привязки к FPSПочему lerp(a, b, 0.1) каждый кадр зависит от частоты кадров и как доля 1 - exp(-k·dt) это чинит; камера за пушкой.урок 34 · Сглаживание без привязки к FPSопираются: урок 35
- ТвиныТвин как данные на сущности: начало, конец, длительность, кривая, задержка и цепочки; одна система играет все твины.урок 33 · Твиныопираются: урок 34
- Тряска экранаТравма вместо силы удара, смещение как квадрат травмы, шум вместо случайных чисел и таяние по настоящим часам.урок 35 · Тряска экранаопираются: урок 36
- Хитстоп и вспышкаЗамирание игры на долю секунды после удара: пауза игрового времени, отсчёт по настоящему, вспышка на месте попадания.урок 36 · Хитстоп и вспышкаопираются: урок 37
- ЧастицыЭмиттер, разброс угла и скорости с сидом, время жизни и цвет, который остывает к прозрачному.урок 39 · Частицыопираются: урок 40
- Босс: нашествиеТир целиком с соком: бомбы, тарелка, жизни и конец игры; один выключатель сока и плейтест без сока и с соком.урок 42 · Босс: нашествиеопираются: урок 43
Инерция: физика на тяжёлом джойстике
- ГравитацияОбратные квадраты, смягчение у центра и круговая орбита вокруг звезды.урок 55 · Гравитацияопираются: урок 56
- Заворот экранаТор: сшитые края, кратчайшее расстояние через край и копии тела у границы.урок 49 · Заворот экранаопираются: урок 50
- ИмпульсыСохранение импульса, упругий и неупругий удар, коэффициент восстановления: столкновение камней без слипания.урок 50 · Импульсыопираются: урок 51
- Интегрирование ВерлеПозиции без скорости, связи между точками и верёвка, которая не растягивается.урок 45 · Интегрирование Верлеопираются: урок 46
- КинематикаПозиция, скорость и ускорение; уравнения движения при постоянном ускорении. Первый этап «Метеора»: корабль с тягой, который летит, пока его не остановишь.урок 43 · Кинематикаопираются: урок 44
- Поворот и тягаУгол, угловая скорость и момент инерции; тяга идёт по носу, а полёт остаётся прежним.урок 48 · Поворот и тяга по носуопираются: урок 49
- РасколКак разделить камень на два, не потеряв импульс, и почему случайность идёт от сида.урок 54 · Расколопираются: урок 55
- Силы и массаВторой закон Ньютона и сумма сил как накопитель: законы складывают силы, масса решает, что из этого выйдет.урок 46 · Силы и массаопираются: урок 47
- СопротивлениеПредельная скорость и затухание, которое не зависит от частоты кадров: почему экспонента, а не 1 - k·dt.урок 47 · Сопротивлениеопираются: урок 48
- Теорема о разделяющей осиСтолкновение выпуклых многоугольников: оси рёбер, тени на осях и вектор выталкивания.урок 51 · Разделяющая осьопираются: урок 52
- ТуннелированиеБыстрая пуля пролетает сквозь камень между кадрами: момент касания движущегося круга и подшаги.урок 53 · Туннелированиеопираются: урок 54
- Хеш-сеткаШирокая фаза: почему перебор пар не тянет 500 камней, как сетка их отсеивает и когда лучше квадродерево.урок 52 · Хеш-сеткаопираются: урок 53
- Явный и полунеявный ЭйлерКак шагать по времени: почему у явного Эйлера растёт энергия и расползается орбита и почему перестановка двух строк это чинит.урок 44 · Явный и полунеявный Эйлеропираются: урок 45
- Босс: метеорШутер целиком: волны камней, раскол, звезда, тарелка, жизни и меню; плейтест Гоши.урок 56 · Босс: метеор