Skip to content

About

Кооперативная 2D RPG-рогалик на PHP/Laravel и Object Pascal/Lazarus. Классический стек, процедурные подземелья и интерфейс в духе Delphi-игр. Собственный мир и графика; ресурсы World of Warcraft и Dungeon Crawl не используются.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

⚔️ Grim Hollow

Бездонная глубина · кооперативный рогалик на Object Pascal и PHP

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

Verify Release License: MIT Free Pascal PHP Players

Глубина 7 Пылающей цитадели: стая врагов со свойствами, туман войны, панель умений

Скачать · Руководство игрока · Запуск сервера · Что нового


✨ Что внутри

🕳️ Бесконечная глубина

Этажи не кончаются. Каждые 3–5 этажей выход стережёт босс, после него враги соседних областей смешиваются, а боссы чередуются. Шесть областей: от затопленных шахт до пылающей цитадели.

🏘️ Живой город

Вне похода герой ходит по Пепельному пределу и видит других игроков: имена, уровни, сборки, сообщения чата над головой и жесты. 9 зданий, 17 жителей со службами и слухами, патрули, дети, кошка и голуби, манекены для проверки урона. Врагов в городе нет.

📈 Группа до восьми

Уровень врагов = средний уровень группы + глубина, а каждый участник делает их многочисленнее и крепче. 100 уровней героя, рекорды глубины и таблица лидеров.

👹 Химеры и знамения

36 видов существ и 8 боссов, химеры из любых двух видов (больше тысячи пар) × 20 свойств, до трёх на враге, × 5 видов групп × 9 знамений этажа: кровавая луна, тьма, нашествие, сокровищница…

⚒️ Ремесло сочетаний

Вещь = 36 основ × 9 металлов × 11 свойств × 10 рун × любой уровень, 8 слотов и комплекты по металлу. Реагенты с чудовищ кормят кузницу и алхимика: эликсир из любых двух реагентов с особыми реакциями.

🧬 448 сборок героя

8 классов × 7 происхождений × наставник другого класса с 10 уровня. Черты (ярость, удар в спину, жатва душ, ядовитое касание…) и школы магии складываются; 16 заклинаний, свои школы на четверть дешевле.

🤺 Дуэли

Арена один на один: бой до победы или ничьей через 3 минуты. Рейтинг Эло, счёт побед и таблица лучших дуэлянтов. Золото и вещи на арене не меняются.

Ещё: две новые области (Гнилая топь, Звёздная бездна), до восьми героев на аккаунт, поднятие павших союзников, сундуки, родники, алтари и ловушки, туман войны, доска контрактов, эссенция и перегонка, торговая доска с escrow, гильдии, друзья, три канала чата и модерация.

🖼️ Галерея

Городская площадь с игроками и жителями
Живой город. Игроки разных сборок, чат над головой, жесты, жители со службами.
Бой с Костяным королём и его свитой
Босс каждые 3–5 этажей. Костяной король призывает скелетов, метеор бьёт по площади.
Дуэль на арене
Арена. Дуэль один на один с рейтингом Эло.
Кузница с иконками предметов
Кузница. Любая основа любого уровня, улучшение и зачарование.
Бестиарий: 44 существа и 8 классов
Бестиарий. 36 видов врагов, 8 боссов и 8 классов героев.
Иконки предметов по уровням и иконки умений
Иконки снаряжения меняют цвет с уровнем (серый → зелёный → синий → фиолетовый → оранжевый → красный, золото — именные вещи) и 20 умений панели действий.

Все изображения рисует настоящий рендерер клиента по состояниям игрового ядра: tools/screenshots/make.ps1.

🚀 Играть

  1. Скачайте клиент для своей системы на странице Releases и распакуйте архив.
  2. Запустите GrimHollow.exe (Windows) или ./grim-hollow (Linux).
  3. Введите адрес сервера, который дал организатор, создайте аккаунт и героя.
  4. Погуляйте по городу (WASD, F — поговорить), затем Поход → область → «Подготовить» → передайте код друзьям (до 8 человек) → «Начать».

Windows-клиент обновляется сам: при запуске он проверяет релизы, предлагает установить новую версию и перезапускается. Архив проверяется по SHA-256 из релиза.

🎮 Управление

Клавиша Действие Клавиша Действие
WASD / стрелки шаг Space атака цели
щелчок / Tab выбрать цель правый щелчок ударить сразу
1 2 3 щитовой удар, защита, зелье 4–0 заклинания
Q Z C V G метеор, скачок, волна, вихрь, похищение жизни F сундук, родник, алтарь; в городе — разговор
B N M H ярость, корни, костяное копьё, святилище 1–5 в городе жесты
E спуститься глубже X вернуться с добычей
R поднять союзника T / F1 город / справочник

💻 Платформы

Платформа Статус Примечание
Windows 10/11 x64 ✅ основная HTTPS + WebSocket (WinHTTP), системная проверка сертификатов
Windows 7 / Vista x64 ✅ поддерживается тот же клиент: без WinHTTP WebSocket работает через HTTPS-опрос. На Win7 нужен TLS 1.2 (обновление KB3140245)
Windows XP / Vista / 7 x86 🧪 экспериментально отдельная 32-битная сборка (Lazarus 2.2.6). XP не поддерживает современный TLS, поэтому играет с локальным сервером или сервером в домашней сети по HTTP
Linux x64 (GTK2) ✅ локальный HTTP-сервер
Android 🗺️ планируется нативный клиент на Free Pascal, см. дорожную карту

Клиент по HTTP подключается только к локальному серверу (127.0.0.1) или к серверу в частной сети (10.x, 172.16–31.x, 192.168.x). Ко всем остальным адресам — только HTTPS.

🛠️ Сборка из исходников

Нужны Docker Desktop (Linux containers) или Docker Engine + Compose v2, а для клиента — Lazarus 2.2.6+ с FPC 3.2.2.

./tools/setup.ps1          # сервер: MySQL, API, мир — http://127.0.0.1:8080
./tools/build-client.ps1   # клиент Windows → dist/windows/GrimHollow.exe
./tools/play.ps1           # запустить игру (или двойной щелчок по Play.cmd)

Linux: sh tools/setup.sh, клиент — проект apps/client/GrimHollow.lpi или infra/docker/client/Dockerfile.

Проверки
./tools/test-mysql.ps1                 # 59 тестов PHP на MySQL
./tools/test-client.ps1                # GUI smoke Windows-клиента
node tests/e2e/smoke.mjs               # HTTP/WebSocket, два аккаунта
node tests/e2e/gameplay.mjs            # бот проходит этаж и эвакуируется
python tools/release.py check
python -m unittest discover -s tests/packaging

При каждом push GitHub Actions проверяет сервер, собирает клиенты Windows и Linux и прогоняет GUI- и сетевые сценарии. Тег vX.Y.Z публикует релиз и образ ghcr.io/villetacore/grim-hollow.

🧱 Архитектура

flowchart LR
    subgraph Client["Клиент · Object Pascal / Lazarus"]
        UI[LCL-окна и город] --> R[Canvas-рендерер]
        N[WinHTTP HTTPS + WSS]
    end
    subgraph Server["Сервер · PHP 8.4"]
        API[Laravel HTTP API] --> Core
        W[Workerman world · 10 Гц] --> Core[game-core · детерминированные правила]
        API --> DB[(MySQL 8.4)]
        W --> DB
    end
    N -- REST: аккаунт, город, крафт --> API
    N -- WebSocket: команды и снимки --> W
Loading

Сервер авторитетен: клиент только отправляет намерения и рисует снимки. Мир продвигает все походы одной транзакцией за такт, держит состояние в памяти и отправляет снимок только при изменении вида. Ранние команды буферизуются, а клиент предсказывает свой шаг, поэтому управление отзывчиво даже с пингом. Экономика транзакционна, каждый поход можно воспроизвести по журналу событий (php artisan game:verify-replay).

Каталог Содержание
apps/client клиент: Object Pascal, Lazarus, LCL Canvas
apps/server Laravel 13 HTTP API, Workerman world, тесты
packages/game-core детерминированные правила, генерация, каталог контента
infra Docker, MySQL, Nginx, Caddy, Compose
tools запуск, сборка, упаковка релизов, скриншоты
tests сетевые сценарии, игровой бот, упаковка
docs руководства, архитектура, дизайн, статус

📚 Документация

Руководство игрока · Статус реализации · Сборка и запуск · Распространение и свой сервер · Архитектура · Дорожная карта

🤝 Участие

Issues и pull requests приветствуются. Прочитайте CONTRIBUTING.md, об уязвимостях сообщайте по SECURITY.md.

📄 Лицензия

Код распространяется под лицензией MIT. Графика собственная и рисуется кодом; ресурсы сторонних игр не используются. Сторонние компоненты сохраняют свои лицензии.

About

Кооперативная 2D RPG-рогалик на PHP/Laravel и Object Pascal/Lazarus. Классический стек, процедурные подземелья и интерфейс в духе Delphi-игр. Собственный мир и графика; ресурсы World of Warcraft и Dungeon Crawl не используются.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages