// 6-MONTH LEARNING PLAN
PYTHON
GAME DEV
от нуля до собственной [Link]
// 2–3 часа / день // ~6 месяцев // с нуля
// без готовых движков
МЕСЯЦ 1 · НЕДЕЛИ 1–4
~ 50 –8 0 ч
01 Основы Python
Цель — освоить язык достаточно, чтобы уверенно
писать и читать код. Не торопись: фундамент
определяет всё дальнейшее. В конце месяца ты должен
писать программы в несколько сотен строк без
подсказок по синтаксису.
Н Е Д Е Л И 1 – 2 · С И Н ТА К С И С
▸ Установка Python 3.x и VS Code / PyCharm
▸ Переменные, типы данных (int, float, str, bool)
▸ Ввод / вывод: input(), print(), f-строки
▸ Условия: if / elif / else, операторы сравнения
▸ Циклы: for, while, break, continue, range()
▸ Функции: def, return, аргументы, scope
НЕДЕЛИ 3–4 · СТРУКТУРЫ ДАННЫХ
▸ Списки (list): индексы, срезы, методы
▸ Словари (dict) и множества (set)
▸ Кортежи (tuple) и когда их использовать
▸ List comprehensions и генераторы
▸ Работа со строками: методы, форматирование
▸ Файлы: open(), read/write, with-блок
▸ Исключения: try / except / finally
// М И Н И - П Р О Е К Т М Е С Я Ц А
Текстовая RPG в терминале. Игрок перемещается по
локациям, сражается с врагами, собирает предметы.
Используй словари для хранения состояния, функции
для логики боя, циклы для игрового цикла. Это
тренирует всё из месяца 1 сразу.
Рекомендуемый ресурс: [Link] официальный туториал +
Automate the Boring Stuff (бесплатно онлайн)
МЕСЯЦ 2 · НЕДЕЛИ 5–8
~ 50 –8 0 ч
02 ООП + Алгоритмы
Объектно-ориентированное программирование — сердце
любой игры. Каждый игрок, пуля, враг, предмет — это
объект. Параллельно учим базовые алгоритмы и
математику, которые напрямую нужны для геймплея.
НЕДЕЛИ 5–6 · ООП
▸ Классы и объекты: __init__, self
▸ Атрибуты и методы, инкапсуляция
▸ Наследование и переопределение методов
▸ __str__, __repr__, __eq__ и другие dunder-методы
▸ Полиморфизм: разные объекты, один интерфейс
▸ Модули и пакеты: import, __init__.py
Н Е Д Е Л И 7 – 8 · М АТ Е М . / А Л Г О
▸ Векторы 2D: сложение, нормализация, длина
▸ Тригонометрия: sin/cos для движения под углом
▸ Обнаружение столкновений: AABB, круг-круг
▸ Базовые алгоритмы: сортировка, бинарный поиск
▸ Пространственное разбиение: квад-дерево (теория)
▸ Случайность: random, seed, нормальное распределение
// М И Н И - П Р О Е К Т М Е С Я Ц А
Физический симулятор частиц. Создай классы
Particle, Vector2D, World. Частицы летят,
сталкиваются, отскакивают от стен. Без графики —
только логика и print() или matplotlib для
визуализации. Это прямая тренировка физики для
будущей игры.
Ресурс: «Python ООП» на Real Python + «3Blue1Brown —
Essence of Linear Algebra» (YouTube, бесплатно)
МЕСЯЦ 3 · НЕДЕЛИ 9–12
~ 50 –8 0 ч
03 Графика с нуля · Pygame
Pygame — это тонкая обёртка над SDL, почти «с нуля».
Ты сам пишешь игровой цикл, рендеринг, ввод. Это
именно то, что нужно: не готовый движок, а
инструмент рисования и событий. Здесь складывается
понимание, как работает любая 2D-игра изнутри.
Н Е Д Е Л И 9 –1 0 · PYG A M E C O R E
▸ Установка Pygame, структура проекта
▸ Главный цикл: while running + [Link]()
▸ Surface, Rect, blit() — как работает рендер
▸ Обработка событий: клавиши, мышь, quit
▸ Рисование примитивов: круги, прямоугольники, линии
▸ Delta time: движение не зависит от FPS
Н Е Д Е Л И 1 1 – 1 2 · С П РА Й Т Ы И К А Р ТА
▸ Sprite и Group: управление объектами
▸ Загрузка изображений, alpha-канал
▸ Анимация: spritesheet, смена кадров по таймеру
▸ Tile-based карта: загрузка из 2D-массива
▸ Камера: смещение мира вместо движения игрока
▸ Звук: [Link], фоновая музыка и SFX
// М И Н И - П Р О Е К Т М Е С Я Ц А
Top-down шутер прототип. Игрок двигается по карте
(WASD), целится мышью, стреляет (ЛКМ). Пули летят в
направлении курсора. Враги движутся к игроку, при
попадании умирают. Камера следит за игроком. Это
прямой предок финальной игры.
Ресурс: [Link]/docs + «KidsCanCode» YouTube + «Clear
Code» Pygame плейлист
МЕСЯЦ 4 · НЕДЕЛИ 13–16
~ 50 –8 0 ч
04 Архитектура игры · Сеть
[Link] — многопользовательская игра. Это самая
сложная часть. Месяц посвящён двум вещам: правильной
архитектуре кода (чтобы не переписывать всё заново)
и сетевому программированию через WebSockets.
Н Е Д Е Л И 1 3 –1 4 · А РХ И Т Е К Т У РА
▸ Entity-Component System (ECS): теория и практика
▸ Game State Machine: меню, игра, пауза, game over
▸ Event system: публикация и подписка на события
▸ Разделение логики и рендера (Model-View)
▸ Менеджер ресурсов: загрузка и кэш ассетов
▸ Профилирование: cProfile, поиск узких мест
НЕДЕЛИ 15–16 · СЕТЬ
▸ Сокеты в Python: socket модуль, TCP vs UDP
▸ asyncio: event loop, async/await, задачи
▸ WebSockets: библиотека websockets или aiohttp
▸ Сериализация данных: JSON, MessagePack
▸ Клиент-серверная модель: авторитетный сервер
▸ Prediction и reconciliation: как работает lag
compensation
// М И Н И - П Р О Е К Т М Е С Я Ц А
Многопользовательский чат + синхронизация объектов.
Сервер на asyncio + websockets. Два клиента
(pygame) подключаются, видят позицию друг друга в
реальном времени. Игрок двигается — другой видит
движение. Это фундамент multiplayer-игры.
Ресурс: [Link]/asyncio + Gabriel Gambetta «Fast-
Paced Multiplayer» (бесплатно онлайн, обязательно!)
МЕСЯЦ 5 · НЕДЕЛИ 17–20
~ 50 –8 0 ч
05 Ba!le Royale механики
Время собирать всё вместе. Этот месяц — разработка
конкретных механик [Link]-подобной игры. Каждая
неделя — один крупный игровой элемент, добавляемый
поверх сетевого прототипа.
Н Е Д Е Л Я 1 7 · К А Р ТА И З О Н А
▸ Процедурная генерация карты: шум Перлина
▸ Укрытия и препятствия с коллизиями
▸ «Зона» (blue zone): сжимающийся круг
▸ Урон от зоны, таймер фаз
Н Е Д Е Л Я 1 8 · Л У Т И И Н В Е Н ТА Р Ь
▸ Система лута: спавн предметов на карте
▸ Подбор и инвентарь: оружие, аптечки, броня
▸ HUD: здоровье, броня, патроны, инвентарь
▸ Синхронизация инвентаря с сервером
НЕДЕЛЯ 19 · БОЁВКА
▸ Несколько видов оружия: пистолет, дробовик, снайпер
▸ Разброс, перезарядка, различные характеристики
▸ Raycast для хитскана (мгновенное попадание)
▸ Анимация выстрела, звуки, частицы крови
НЕДЕЛЯ 20 · СЕРВЕР И БАЛАНСИРОВКА
▸ Игровые комнаты: несколько матчей параллельно
▸ Оптимизация: отправка только видимых объектов
▸ Lobby: ожидание игроков, старт матча
▸ Kill feed, счётчик выживших, победный экран
// Р Е З УЛ ЬТАТ М Е С Я Ц А
Играбельный альфа-прототип. 4–8 игроков могут войти
в один матч, двигаться по карте, подбирать оружие,
стрелять друг в друга, получать урон от зоны.
Последний выживший — победитель. Выглядит просто,
но все механики работают.
Ресурс: исходники [Link] (есть на GitHub) — читай как
документацию, не как туториал
МЕСЯЦ 6 · НЕДЕЛИ 21–24
~ 50 –8 0 ч
06 Полировка · Деплой
80% времени в разработке игр уходит на последние 20%
работы. Этот месяц — превращение прототипа в нечто,
во что не стыдно позвать друзей поиграть.
Оптимизация, визуал, деплой.
Н Е Д Е Л И 2 1 – 2 2 · В И З УА Л И U X
▸ Частицы: кровь, вспышки выстрелов, взрывы
▸ Screen shake при взрывах и попаданиях
▸ Анимации плавные: lerp, easing-функции
▸ Главное меню, экраны загрузки, UI шрифты
▸ Минимапа с позициями игроков и зоной
▸ Мобильный / адаптивный клиент (опционально)
НЕДЕЛИ 23–24 · ОПТИМИЗАЦИЯ И ДЕПЛОЙ
▸ Профилирование: bottleneck на сервере и клиенте
▸ Spatial hashing для быстрых коллизий
▸ Бинарный протокол: struct вместо JSON
▸ Docker для сервера, деплой на VPS (DigitalOcean /
Hetzner)
▸ Nginx как reverse proxy, SSL
▸ Логирование, мониторинг, перезапуск при падении
// Ф И Н А Л Ь Н Ы Й Р Е З УЛ ЬТАТ
Рабочая онлайн-игра по публичному URL. Ты можешь
отправить ссылку другу и сыграть вместе. Написано
на Python с нуля, без готовых движков. В резюме:
«Разработал многопользовательский 2D battle royale
шутер с нуля на Python + asyncio + WebSockets».
Ресурс: «High Performance Python» (O'Reilly) · Docker
docs · Let's Encrypt для HTTPS
Технологический стек
Python 3.12 Pygame
Основной язык Клиент: рендер и ввод
asyncio websockets
Асинхронный сервер Сетевой протокол
Docker Nginx
Контейнер для деплоя Proxy + SSL
Принципы обучения
Проект важнее теории Git с первого дня
Читай минимум, делай максимум. Создай репозиторий в день 1.
Каждый новый инструмент сразу Коммить каждый день. Через 6
применяй в мини-проекте. Знание месяцев увидишь свой прогресс —
без практики испаряется за это лучшая мотивация.
неделю.
Не застревай Читай чужой код
30 минут на проблему — если не Исходники open-source игр на
решил, иди дальше или упрости Python — учебник. Pygame-CE
задачу. Перфекционизм убивает examples, исходник [Link] на
проекты. Сначала работает, GitHub. Читай как книгу — по 20
потом красиво. минут в день.
Записывай вопросы Играй в то, что делаешь
Веди файл [Link]. Не После каждой сессии запускай
знаешь — запиши и двигайся. игру и играй 5 минут. Ты
Вернёшься вечером. Это лучше, разработчик и игрок
чем часами залипать в Stack одновременно. Это покажет, что
Overflow. реально нужно улучшить.
// START → python --version → 6 months → your game is live