Медицинское обучение через игру: симулятор лечения сифилиса и ВИЧ
- четверг, 11 июня 2026 г. в 00:00:10
В мире — миллионы заражений сифилисом и ВИЧ, и цифра растёт. Но мой пост не об этом.
Я решил техническую задачу: как сделать медицинский образовательный инструмент, который работает офлайн, не требует бэкенда и не собирает данные пользователей, используя веб‑технологии JS. Ведь в медицине приватность — это требование.
Код открыт, лендинг и игры доступны по ссылке.
При разработке я ориентировался на:
1. Анонимность — без сервера, без регистрации и сбора данных.
2. Мультиязычность. Без перезагрузки страницы.
3. Оптимизация. Возможность выбирать 30/60fps при двойном клике на старт (сбалансированный/производительный режимы)
index.html (лендинг)
├── /syph/index.html
└── /hiv/index.html
└── /…/..
Ускорение в 2880 раз нужно, чтобы игрок за 5 минут ощутил неделю терапии. В реальной жизни, вирусная нагрузка растёт медленно, и последствия пропуска таблетки видны не сразу. В игре — уже через 30 секунд. Это и есть педагогическая цель: показать, как быстро всё идёт к критической точке при нерегулярном приёме либо его отсутствии. Иммунитет со временем восстанавливается, но медленно.

Для удобства, сделал одну кнопку, запускающую прием лекарства. В реальности, схемы могут быть более индивидуальными и сложными.
2³⁰ — миллиард. Примерно столько в организме, через месяц после заражения. Сколько отрисовывать на экране? В симуляторе, одна трепонема символизирует целую популяцию,а старт начинается с 3–5 объектов. Почти сразу можно заметить, что чем раньше начинается лечение, тем выше вероятность успеха.

Для MVP — решил оставить как есть. Это — поведение браузера.
Добавить уровни сложности. В сложном режиме:
Запуск не с 3–5 единиц, а со 100 единиц
Вероятность перехода в спящую форму: 50%
Время в спящем режиме: 100–300 s.
const CONFIG = { gameday_s: 60, division_period_real_s: 30, divisionAnim_s: 1.2, startCount: 1, startCountMin: 3, // минимальное количество бактерий при запуске startCountMax: 5, // максимальное количество бактерий при запуске maxSpirals: 1500, killMaxCharges: 2, killCooldownBetweenUses_s: 30, sleepProbabilityOnKill: 0.3, // вероятность перехода в защитную L-форму sleepDurationRange_s: [60,180], // время нахождения в спящей L-форме lodThreshold: 150, maxDetailedTubularSegments: 200, minRenderIntervalMs: 1000/30, highPerfRenderIntervalMs: 1000/60, dynamicRenderScale: 0.75, lowRenderScale: 0.5, perfSamplingMs: 2000, autoThrottleFPSDropThreshold: 40, instancedBatchSize: 500 };
Как вам идея? Будет ли она полезна в 2026 году, пока не изобрели вакцину?