← Как я работаю
Прототип Личный проект · код в открытом доступе · 2026

Физический движок человеческого тела, сверенный с исследованиями травм

Я хотел сделать игрушку, в которой тело реагирует на удар по законам настоящей физики, а не с помощью заранее записанных анимаций. Я никогда раньше не делал игр, поэтому поручил создать движок кодинг-агентам на базе ИИ и направлял их работу. Кожа, мышцы и кости реагируют на каждый удар, а попробовать движок в браузере может любой.

Моя роль
Я ставил цели и оценивал результаты. Код писали кодинг-агенты в рамках моих правил и проверок. С октября 2026 года его пишет Claude Code.
Статус
Это прототип, в который уже можно играть. Версия для браузера доступна с октября 2026 года, а код выложен на GitHub в открытом доступе.
Стек
Единая кодовая база для Windows и браузера (WebAssembly), GitHub Pages, Claude Code
Масштаб
27 заранее заданных тестовых ударов, каждый из которых сверен с исследованиями травм

Задача

Игры обычно показывают травмы заранее записанными анимациями и ранами, нарисованными поверх тела. Я хотел, чтобы каждый синяк, порез и перелом следовал из физики самого удара.

Я начал работу в мае 2026 года, после того как увидел, насколько улучшились кодинг-агенты.

Как развивался проект

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

В конце июня агенты переписали весь движок. В октябре 2026 года у него появилась версия для браузера, а тело стало простым манекеном.

Затем я попросил, чтобы травмы соответствовали реальной жизни. Медленный нажим должен оставлять только синяк, а сильный удар — ломать кость примерно так же часто, как в опубликованных исследованиях.

Как проверяется изменение

  1. Я говорю, что не так Я играю и описываю проблему простыми словами, например: «от медленных ударов тело лопается».
  2. Учиться у других Прежде чем придумывать своё решение, агент смотрит, как эту проблему решают движки с открытым исходным кодом и научные статьи.
  3. Изменить движок Агент воссоздаёт идею в собственном коде движка и указывает источник в комментарии.
  4. Повторить тесты Каждый тестовый удар выполняется 45 раз, а точка попадания и прочность костей при этом слегка меняются.
  5. Сверить с исследованиями Каждая травма должна случаться примерно так же часто, как сказано в исследовании, на которое ссылается тест.
  6. Я оцениваю по картинкам Агент показывает мне скриншоты из настоящего приложения. После этого изменение публикуется.
  • Браузер и десктопБраузер должен давать в точности те же результаты, что и приложение для Windows
  • Реальные размерыФигура соответствует взрослому человеку ростом 1,75 м, а кувалда и бита весят как настоящие
  • ЗвукКаждый стук и треск рассчитывается по тому, что сделала физика, без записанных звуков
Путь одного изменения: от моей жалобы до публикации на сайте. Письменные правила для агентов требуют пройти каждую проверку.

Попробуйте сами

Игра работает прямо в браузере, в том числе на телефоне, и ничего не нужно устанавливать. Она показывает смоделированные травмы, включая кровь.

Смотреть 4-минутное видео об обновлении на YouTube Версия от октября 2026 года: кувалда оставляет на руке синяк, а затем ломает её.

Проектные решения

  • Тесты описывают реальные исходы. Я не врач и не физик, поэтому одно число мало что мне говорит. Каждый тест называет, что происходит с реальным человеком, и исследование, откуда это известно. Например, медленный нажим никогда не ломает кость, а нож никогда не ломает кости рук и ног.
  • Реальные удары не бывают одинаковыми. Каждый тестовый удар выполняется 45 раз: точка попадания немного смещается, а кости становятся слабее или прочнее. Травма, которая в жизни случается «иногда», должна случаться в части прогонов, а не во всех.
  • Картинки, а не числа. Приложение само умеет сохранять скриншоты и серии кадров. По ним я оцениваю каждое визуальное изменение, а проблема, которую пропустили тесты, становится новым тестом.
  • Браузер должен совпадать с десктопом. Скрипт проигрывает каждый тест в приложении для Windows и в браузере и сравнивает результаты. Однажды они разошлись на один синяк. Агенты нашли причину: математическая функция округляла по-разному на каждой платформе. Они заменили эту функцию.
  • Сначала учиться у других, потом измерять. Способ, которым раскрываются порезы от ножа, взят из Rapier — физического движка с открытым исходным кодом. Способ, которым кровь стекает по коже, взят из игры Overgrowth. Когда я попробовал перенести всю симуляцию на Rapier, она работала быстрее, но проходила меньше тестов. Поэтому я оставил собственный движок.

Статус

  • 27заранее заданных тестовых ударов, которые повторяются после каждого изменения
  • 45прогонов каждого удара с разной точкой попадания и прочностью костей
  • 60шагов расчёта физики в секунду, прямо на устройстве посетителя

На октябрь 2026 года почти каждая травма случается примерно так же часто, как говорят исследования. В отчёте о тестах перечислены проверки, которые движок пока не проходит. Например, удар битой сверху по плечу никогда не ломает ключицу, хотя в жизни такой удар обычно её ломает.

Код, тесты и исследования, на которых они основаны, выложены в открытом доступе на GitHub.

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