PyCity: метавселенная, где Python строит город⁠⁠

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

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

Главный экран

Главный экран

Задача

Обучение программированию упирается в отсутствие физической обратной связи. Ученик пишет код, получает Hello, World! или Traceback, и на этом цикл заканчивается. Код не имеет веса, не рушится, не строится. Через две недели мотивация падает.

PyCity — попытка сделать так, чтобы каждая корректная строка на Python 3.11 материализовалась в 3D-городе. Написал функцию — надстроил этаж. Исправил ошибку — потушил пожар. Решил задачу — получил новый модуль для квартала. Это не геймификация ради геймификации, а способ дать коду визуальную плотность и мгновенную обратную связь.

Архитектурно город разбит на сектора 5×5, в каждом — ученик. Код исполняется в браузере через WebAssembly (CPython 3.11), результат передаётся в Three.js и отображается как геометрия.


Что реализовано

300 уроков, разбитых на уровни. Программа покрывает:

  • синтаксис, типы, условия, циклы, функции;

  • ООП, comprehensions, работу с файлами, исключения;

  • алгоритмы, Big-O, SQLite, паттерны проектирования;

  • асинхронность, сокеты, хэширование, JWT;

  • нейросети: от перцептрона до внимания QKV, LoRA и RAG;

  • распределённые системы: Raft/Paxos, фильтр Блума, LRU-кэш, WebSocket.

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

Внутри урока открывается не просто редактор, а оконный менеджер: IDE с подсветкой, инспектор памяти, диспетчер процессов, имитация pip. Код исполняется локально в WASM, поэтому нет задержки на сервер. Есть ExecutionGuard, который прерывает бесконечные циклы, чтобы вкладка не зависала.

ИИ-ассистент объясняет ошибки компилятора человеческим языком: не «замените строку 4», а «ты забыл закрыть скобку в 4-й строке, поэтому интерпретатор ждёт продолжения».


Практические режимы

Код-дуэли 1 на 1. Два ученика получают одну задачу, ставят XP в эскроу. Кто первый отправляет корректное решение — забирает банк.

Код-дуэли

Код-дуэли

Охота на баги. Даётся реальный сломанный код: зависший светофор, утечка памяти из-за def add(item, q=[]), KeyError на сервере. Нужно найти и исправить.

Охота на баги

Охота на баги

SQL-майнфрейм. SQLite через WebAssembly, 4 связанные таблицы, 50 контрактов от SELECT до рекурсивных CTE и оконных функций.

SQL-майнфрейм

SQL-майнфрейм

Нейро-Колизей.
Режим, где ученик программирует ИИ боевого робота-меха. Пишет функцию make_decision(me, enemies, arena), которая на каждом такте возвращает действие. Дальше мех сражается сам — без ручного управления.

Нейро-Колизей

Нейро-Колизей


Инструменты преподавателя

У учителя есть 3D-стол с живыми статусами 25 учеников, электронный журнал, автоматическая посещаемость по «правилу 15 минут» и управление аномалиями. Последнее звучит необычно, но решает конкретную задачу: если ученик отвлёкся, учитель может наслать на его квартал кислотный дождь или поджечь здание. Пожар тушится решением текущей задачи. Это не наказание, а механизм возврата внимания.


3D-мегаполис

Вид от первого лица

Вид от первого лица

Город — не декорация, а основная система мотивации. Он разбит на сектора 5×5, каждый сектор занимает площадку 350×350 метров. Внутри сектора ученик строит свой квартал: этажность зданий, дороги, инфраструктура — всё это напрямую зависит от прогресса в уроках и потраченного XP.

Есть два режима взаимодействия:

  • Walk Mode (FPS). Ученик переключается в вид от первого лица, ходит по улицам, заглядывает в окна небоскрёбов, гуляет по кварталам одноклассников. Это не просто прогулка: так видно, кто продвинулся дальше, а кто застрял на стартовой вышке.

  • Режим проектора (кино-тур). Для школьного проектора или открытого урока. Камера взмывает в небо и запускает один из четырёх сценариев: тур по кадетам (7 секунд на квартал), бреющий полёт между небоскрёбами, круговую панораму всего мегаполиса или волнообразный дрейф над облаками.

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

Технически город собран на Three.js и React Three Fiber. Геометрия процедурная: здание не хранится как отдельная модель, а собирается из параметров (этажность, тип, материалы). Поэтому 25 кварталов по 350 метров не превращаются в гигабайты ассетов.


Кибер-Хаб


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

Примеры объектов:

  • Салют Системы (5 000 XP) — неоновый фейерверк над крышами.

  • Неоновое Имя Архитектора (10 000 XP) — голограмма позывного в стратосфере.

  • Зенитные Прожекторы (12 000 XP) — четыре луча по углам квартала.

  • Золотые Магистрали (15 000 XP) — сияющий контур дорог вокруг сектора.

  • Монумент Python (20 000 XP) — обелиск с золотым обвивающим питоном.

  • Плазменный Купол (25 000 XP) — силовой купол над районом.

  • Башня Тесла (35 000 XP) — генератор плазменных дуг.

  • Зиккурат Данных (45 000 XP) — чёрная пирамида серверов.

  • Орбитальный Космо-Лифт (90 000 XP) — 2.6-километровый луч с движущейся кабиной.

  • Сфера Дайсона (250 000 XP) — рукотворная звезда в магнитных кольцах.

  • Квантовая Сингулярность (500 000 XP) — вращающаяся чёрная дыра над сектором.

  • Цитадель Гранд-Оверлорда (1 000 000 XP) — 200-метровый золотой шпиль.

Помимо мегаструктур есть апгрейды: спутниковый линк, оверклокинг виртуального процессора, золотые рамки аватара, эксклюзивные титулы для Зала Славы.

Смысл не в том, чтобы «купить красоту», а в том, чтобы дать XP материальный вес. Опыт не просто цифра в профиле — он меняет облик города, который видят все.


Алгоритмы и справочник Big-O

Три вида

Три вида

Визуализатор сортировок. Пошаговая демонстрация BubbleSort, InsertionSort, MergeSort и QuickSort. Сравниваемые элементы подсвечиваются красным, опорный элемент (pivot) — жёлтым, отсортированные позиции — зелёным. Ученик видит не результат, а процесс: как массив перестраивается на каждом шаге.

Интерактивное бинарное дерево поиска. Ученик вводит числа, наблюдает ветвление узлов, запускает поиск ключа за O(log N) с подсветкой пути. Отдельно можно вызвать балансировку по стандарту AVL и увидеть, как дерево перестраивается.

Справочник асимптотической сложности. Цветовая шкала от O(1) до O(2^N) с примерами из реальной разработки. Не абстрактные формулы, а конкретные операции: почему доступ к элементу списка — O(1), а поиск в неотсортированном массиве — O(N), и где в реальном коде это превращается в проблему.


Центр сертификации

Квалификация и сертификация

Квалификация и сертификация

Трёхуровневая система квалификации, привязанная к количеству пройденных уроков:

  • Уровень I — Junior Python Developer (150 уроков). Синтаксис, функции, ООП, базовые базы данных, основы математики перцептрона.

  • Уровень II — Middle Systems Architect (200 уроков). Алгоритмы на графах (BFS/DFS), асинхронные сокеты TCP/IP, упаковка байтов через struct, очереди, семафоры, паттерны GoF.

  • Уровень III — Senior AI & AGI Engineer (300 уроков). Трансформеры, механизм внимания QKV, квантование весов INT8, микросервисные саги, консенсус Raft, ядро AGI.

После сдачи теста ученик получает именной диплом с криптографическим идентификатором и возможностью экспорта в PDF. Это не «сертификат за прохождение курса», а привязка к конкретному объёму материала.


Итог

PyCity — работающий проект, а не концепт. Он решает конкретную проблему: даёт коду визуальную обратную связь и удерживает внимание за счёт игровых механик. Технически это связка Next.js, Three.js, WASM и Socket.IO, которая выдерживает одновременную работу группы.

Ссылка: pycity.ru. Если вы преподаёте Python или работаете с браузерным 3D — проект открыт для обсуждения архитектурных решений =)

Лига программистов

2.4K поста12K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

0
Автор поста оценил этот комментарий
Да, а ведь без нейросетки ты и 20 строк не напишешь))
раскрыть ветку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества