Hypersomnia — Когда чистый C++ мощнее игровых движков

03 May, 2026

Hypersomnia gameplay

Знакомо чувство, когда хочется заглянуть «под капот» игрового движка? Команда Hypersomnia пошла дальше — они создали полноценный мультиплеерный шутер вообще без движка, на чистом C++. И результат впечатляет.

Что это за зверь?

Hypersomnia — это:

  • 2D-шутер с видом сверху
  • Полноценный мультиплеер с детерминированной синхронизацией
  • Встроенный редактор карт
  • Поддержка браузерной версии (WebAssembly)
  • Всего 29 МБ в размере!

Проект развивается с 2013 года и уже собрал 1.2k звезд на GitHub. При этом он остается полностью открытым под лицензией AGPL v3.

Почему это технически впечатляет?

1. Детерминированная синхронизация

Разработчики реализовали хитрую систему, где:

  • Только ввод игроков передается по сети
  • Весь игровой мир симулируется локально на каждой машине
  • Физика (Box2D) полностью детерминирована, включая контакты тел

Это позволило достичь:

  • Минимального трафика (~40 кбит/с при 60 fps)
  • Синхронизации даже браузерных и нативных клиентов
  • Плавного геймплея даже при лагах

2. Гибкая архитектура

В проекте используется:

  • Кастомная реализация Entity-Component-System
  • Пул объектов с линейным расположением в памяти
  • Умная система «перевывода» (cache reinference) состояний
// Пример из кода: обработка движения рыб с групповым поведением
void movement_path_system::advance_creatures(const logic_step step) {
    auto& cosm = step.get_cosmos();
    
    cosm.for_each_having<components::movement_path>([&](const auto& it) {
        // AI логика здесь
    });
}

Кому это будет полезно?

  1. Разработчикам игр — как пример нетривиальных решений в игровом сеттинге
  2. Студентам — для изучения современных подходов в C++
  3. Энтузиастам — чтобы поиграть в необычный шутер с друзьями

Как попробовать?

Вариантов много:

  1. Браузерная версия
  2. Нативный клиент для Windows/Linux/macOS
  3. Через Steam
  4. Собрать из исходников (требуется Clang)

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

Фишки для разработчиков

  • Встроенный автоапдейтер с проверкой подписи
  • Уведомления в Discord/Telegram о событиях сервера
  • JSON-формат для карт (легко модифицировать)
  • Поддержка пользовательских ресурсов (просто кидаете PNG/WAV в папку)

Hypersomnia — это редкий пример, когда open-source проект:

  • Реально полезен как игровой продукт
  • Представляет ценность для изучения
  • Доказывает, что «движок» — это не всегда необходимость

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