212 симуляцій за рік: як зростала бібліотека

На початку 2025 року на сайті було 40 браузерних симуляцій. До березня 2026 їх стало 212 — усі готові, усі з українськими перекладами, усі з повними SEO-пакетами. Ось відвертий погляд на сесії розробки, рішення щодо рендерингу, категорії, які довелося заповнювати найдовше, і те, що я зробив би інакше.

212
Усього симуляцій
39
Сесій розробки
26
Активних категорій

Відправна точка

Проєкт почався у січні 2024 року з жменьки експериментів на Three.js — гідродинаміка SPH, тектонічні плити, рендерер галактики. До початку 2025 налічувалося приблизно 40 симуляцій з приблизною структурою категорій. Більшість були 3D на WebGL; більшість охоплювала класичну фізику. Прогалини були очевидні: жодної хімії, жодної біології, жодної економіки, жодної електроніки, жодної обробки сигналів.

Рік з березня 2025 до березня 2026 це змінив. Працюючи в сфокусованих сесіях розробки — кожна додавала 2–5 симуляцій за раз — бібліотека зросла з 40 до 212. Схема була усвідомленою: завершити категорію повністю, перш ніж переходити до наступної. Жодних постійних карток «скоро з'явиться». Або симуляція готова, або вона не з'являється в категорії.

Рішення про рендеринг

Найбільшим архітектурним зрушенням року стала відмова від типового використання Three.js для всього. Three.js потужний — але несе накладні витрати на налаштування і насправді необхідний лише для 3D геометрії.

Переломним моментом стала розробка симулятора епідемії (модель SEIR). Це була чиста Canvas 2D-симуляція 2D-агентів на плоскій площині. Версія на Three.js вимагала б 200 рядків шаблонного коду налаштування сцени без жодної візуальної переваги. Версія на Canvas 2D складала 40 рядків і працювала на 60 FPS із 500 агентами.

Після цього правило стало простим:

Приблизно 70% зі 212 симуляцій — Canvas 2D. Це дивує людей. Бібліотека виглядає як проєкт на WebGL, але більшість симуляцій намальовані за допомогою ctx.fillRect і ctx.arc.

Завершені категорії — за порядком

Ось кожна категорія, яка досягла статусу «нуль карток скоро з'явиться» протягом року, у порядку завершення:

🏛️ Математика11 сим.
🌤️ Погода7 сим.
⚙️ Побутова фізика10 сим.
🚀 Аерокосмос6 сим.
🌊 Гідродинаміка7 сим.
🔐 Криптографія4 сим.
⚛️ Квантові обчислення6 сим.
☢️ Ядерна фізика4 сим.
🤖 Робототехніка6 сим.
🏃 Спортивна наука6 сим.
🧬 Молекулярна біологія5 сим.
👁️ Сприйняття5 сим.
🧠 Машинне навчання5 сим.
🚗 Транспорт8 сим.
🔌 Електроніка8 сим.
📶 Сигнали12 сим.
💰 Економіка8 сим.
🌍 Суспільство15 сим.

Найскладніші категорії

Обробка сигналів (12 симуляцій)

Сигнали стали найбільшою окремою категорією. Цифрові фільтри, модуляція OFDM, фазові автопідстроювальні контури, аналізатори спектра на основі ШПФ, діаграми спрямованості антен — кожна вимагала розуміння справді складної інженерної математики. Сам лише конструктор цифрових фільтрів включав реалізацію проєктування фільтрів Баттерворта та Чебишева, діаграми Боде та карти нулів-полюсів у Z-площині. Правильна математика ЦОС забрала більше часу, ніж будь-яка інша категорія.

Криптографія (4 симуляції)

Криптографія поставила інший виклик: математика тут точна. Не можна наближено обчислити модульне піднесення до степеня. Симулятор обміну ключами RSA використовує BigInt JavaScript для всієї модульної арифметики — критично, бо прості числа RSA мають сотні бітів завдовжки, а звичайні числа з плаваючою комою катастрофічно втрачають точність.

// Безпечне модульне піднесення до степеня з BigInt
function modpow(base, exp, mod) {
  let result = 1n;
  base = base % mod;
  while (exp > 0n) {
    if (exp % 2n === 1n) result = (result * base) % mod;
    exp = exp >> 1n;
    base = (base * base) % mod;
  }
  return result;
}

Квантові обчислення (6 симуляцій)

Квантові обчислення мають незвичну властивість — вони одночасно концептуально глибокі й візуально абстрактні. Сфера Блоха (Three.js, справжнє 3D) виявилась найінтуїтивнішою — можна буквально спостерігати, як вектор стану кубіта обертається під час застосування вентилів. Алгоритм Гровера та квантова заплутаність були реалізовані на Canvas 2D, показуючи гістограми амплітуд та розподіли ймовірностей станів Белла відповідно.

Тест нерівності CHSH у симуляторі заплутаності був особливим приводом для гордості: він обчислює S = 2√2 ≈ 2,828 > 2, що демонструє, як квантова механіка порушує класичні межі прихованих змінних.

Рішення про український переклад

Кожна симуляція на цьому сайті має дві версії: англійську (/sim-name/) та українську (/uk/sim-name/). Це було свідоме рішення, прийняте рано і ніколи не скасоване, попри значні накладні витрати.

Українські версії — це не машинні переклади, а повні переписи підписів інтерфейсу, описів симуляцій, освітнього контенту та метаданих природною українською мовою. Посилання hreflang, теги og:locale та властивості inLanguage у JSON-LD коректні для обох версій. Для сольного проєкту це суттєве зобов'язання на кожну симуляцію.

Причина проста: в Україні велика частка технічно освічених людей, українськомовний освітній контент з інтерактивної фізики — справжня рідкість, а назва сайту вже mysimulator.uk — домен верхнього рівня є заявою про намір.

Що я зробив би інакше

1. Раніше почати з Canvas 2D

Перші 30 симуляцій за замовчуванням використовували Three.js навіть там, де було достатньо 2D. Рефакторинг деяких з них пізніше на Canvas 2D показав, наскільки простішим міг бути код. З чистого старту я б встановив правило «Three.js тільки для справжнього 3D» з першого дня.

2. Писати статті контенту паралельно

На сайті 502 статті контенту (251 EN + 251 UK), що пояснюють математику за кожною симуляцією. Більшість було згенеровано масово, а не написано разом із кожною симуляцією. Одночасний запис дав би глибші статті — інтелектуальний контекст найсвіжіший одразу після завершення реалізації.

3. Планувати категорії перед створенням симуляцій

Кілька ранніх симуляцій не належали до жодної категорії, і їх довелося ретроспективно призначати. Вісім симуляцій опинилися невидимо осиротілими — не пов'язаними з жодною сторінкою категорії — і були виявлені знову лише під час аудиту навігації місяцями пізніше. План категорій перед побудовою запобіг би цьому повністю.

Що далі

На позначці 212 бібліотека має гарне охоплення фізики, біології, комп'ютерних наук, економіки та інженерії. Очевидні прогалини:

Ціль на наступний рік — не обов'язково більше симуляцій, а кращі симуляції. Деякі з ранніх, побудовані, коли проєкт був молодим, заслуговують на другий погляд. Фізика вищої точності, багатші інтерфейси, більша освітня глибина.

Поточний стан (березень 2026): 212 симуляцій · 26 активних категорій · 502 статті контенту · версії EN + UK усюди · навігація без сиріт · повне SEO на кожній сторінці.