NavMesh Sandbox

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

Sandbox

Free Sandbox

Открытая песочница: добавляй агентов и препятствия, двигай цель, смотри метрики.

Crowd

Narrow Gate

Почему узкий проход создаёт затор — и почему видимая ширина не равна проходимой.

Crowd

Effective Width

Ворота 1.6 м, Agent Radius 0.5 м — для центра агента остаётся 0.6 м. Один агент проходит, два мешают, двести — затор.

Crowd

Avoidance Priority

Одинаковый приоритет у всех vs случайный — как симметрия решений мешает толпе.

Crowd

Priority Standoff

Два агента, одни ворота, одинаковый приоритет — честный пат вместо толпы, пока не дашь кому-то приоритет выше.

Avoidance

Local Avoidance

Desired vs actual velocity выбранного агента: чем avoidance отличается от навигации.

Pathfinding

A* / Hierarchical A*

Обычный A* против иерархического: open/closed set, регионы, реальное время поиска.

NavMesh

Target Snapping

Клик мимо NavMesh и валидная, но недостижимая цель — два разных «застрял» и зачем SamplePosition на спавне.

Pathfinding

A* vs Flow Field

Одно общее поле направлений вместо 200 независимых поисков — честный бенчмарк.

NavMesh

Dynamic Obstacles

Перетащи препятствие и сравни цену постоянной перестройки NavMesh с перестройкой по отпусканию.

NavMesh

Link Cost Override

A* не видит, что проход уже переполнен — пока стоимость прохода не скажет ему об этом.

Performance

Path Request Budget

Бюджет запросов пути за кадр и repath jitter — как синхронный пик превращается в очередь.

Performance

A* Cost at Scale

Один запрос пути на карте с десятками тысяч ячеек честно трогает треть из них — а что если таких запросов 200.

Performance

Stale Path

Бюджет не фризит кадр — он просто заставляет агента идти в новую стену пару кадров, пока его repath ждёт очереди.

Lag Compensation

Примеры к статье про сетевые шутеры — почему «я же попал» на экране игрока может быть честным «мимо» на сервере, и как rewind hitbox'ов эту ложь исправляет (и где у неё есть цена).

Netcode

Naive Raycast

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

Netcode

Time Machine

Сервер хранит историю hitbox'ов и откатывается назад перед проверкой — почему честный выстрел снова попадает.

Netcode

Rewind Formula

rewindTime = RTT/2 + interpolation delay — два независимых слагаемых задержки клиента, живой расчёт.

Netcode

Max Rewind Window

Без лимита отката игрок с большим пингом попадает по тем, кто уже спрятался за укрытием — peek-and-hide.

Performance

Spatial Filter

Зачем перематывать всех 32 игроков на каждый выстрел — честно измеренная экономика broad-phase фильтра.

Netcode

Hitbox vs Animation Order

Без единого байта сети: порядок SaveHitboxSnapshot() и UpdateAnimation() сам по себе сдвигает hitbox от позы.

Security

Trust But Verify

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

Netcode

Already Dead

Игрок умер, пока летел пакет с выстрелом — сервер честно спрашивает «а был ли он жив, когда стрелял?».

Netcode

Rollback vs Lag Compensation

Одна и та же фраза «отмотать время назад» — либо откат одного hitbox'а, либо переигровка всего мира.

Coyote Time

Примеры к статье про coyote time и jump buffer — почему «физически корректная» проверка приземления ощущается как баг, и как игры намеренно врут игроку про время, чтобы управление казалось отзывчивым.

Platformer

Coyote Time

Беги к краю платформы и жми прыжок в разный момент — окно прощения превращает «поздно» в честный прыжок.

Platformer

Jump Buffer

Обратная проблема: нажал прыжок чуть раньше приземления — игра не должна терять это намерение.

Platformer

Forgiveness Tuning

Сотни попыток с реалистичным разбросом реакции — как выбор coyoteTime/jumpBuffer меняет долю прощённых нажатий.

Don't Make NPC Smarter

Примеры к статье про то, почему игровой AI держат намеренно «глупым» — FSM/Behavior Tree/Utility AI вместо RL/LLM, как наивная функция награды вырождается в отсиживание по углам или суицидальную агрессию, и почему предсказуемость и ошибки NPC — часть дизайна, а не баг.

Decision Making

Reward Hacking

Настоящий value iteration на 12 состояниях — крути веса награды и смотри, как policy целиком вырождается.

Design

Chase Timeout

FSM Patrol/Chase/Search с таймаутом поиска — выключи «никогда не сдаётся» и попробуй убежать от бесконечного преследования.

Design

FSM vs Black Box

Один и тот же автомат на одном скриптованном таймлайне: слева видна причина каждого перехода, справа — только действие.

Design

Deliberate Imperfection

Шанс промаха и задержка реакции NPC против win rate игрока — честного «правильного» числа тут не существует.

Dedicated Server & Anti-Cheat

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

Security

Client Authority Flaw

«Я нажал телепорт»: почему доверие позиции клиента ломает игру, и как валидация скорости и стен на сервере отбрасывает читера.

Anti-Cheat

Speedhack & Time Leaky Bucket

Ускорение времени на клиенте vs накопительный бюджет тиков на сервере — как Leaky Bucket отсекает пакетный спам.

Security

Wallhack vs Server Culling

Wallhack не может показать то, о чём клиент не знает: отсечение сущностей за стенами (PVS/Raycast) и защитный буфер задержки.

Economy

Gold From Thin Air

Сравнение RPC «Дай мне 500 золота» с валидируемым действием «Забрать награду квеста» — защита от подделки запросов.

Netcode

Lag Switch & Desync

Читер замораживает исходящие пакеты, выходит из-за угла, стреляет и отправляет пачку: почему ограничение rewind cap спасает честных игроков.

Database

Dupe Exploit & Race Condition

Параллельная передача одного предмета двум игрокам: наивная проверка vs транзакция базы данных (SELECT FOR UPDATE / Redis lock).

Honeypot

Hallucination Trap

Ловушка в стиле Activision Ricochet: фейковые цели за непробиваемыми стенами, на которые наводятся только читеры с ESP.

Machine Learning

Aimbot Detection (VACnet)

Статистический анализ прицеливания: реакция за 0 мс, отсутствие овершута и неестественная дисперсия выдают аимбот.