Гуляйте по живому городу, собирайте группу до восьми героев и спускайтесь в бесконечные подземелья,
сплетайте сборки из классов, происхождений и наставников, куйте вещи из металлов, рун и реагентов.
|
Этажи не кончаются. Каждые 3–5 этажей выход стережёт босс, после него враги соседних областей смешиваются, а боссы чередуются. Шесть областей: от затопленных шахт до пылающей цитадели. Вне похода герой ходит по Пепельному пределу и видит других игроков: имена, уровни, сборки, сообщения чата над головой и жесты. 9 зданий, 17 жителей со службами и слухами, патрули, дети, кошка и голуби, манекены для проверки урона. Врагов в городе нет. Уровень врагов = средний уровень группы + глубина, а каждый участник делает их многочисленнее и крепче. 100 уровней героя, рекорды глубины и таблица лидеров. 36 видов существ и 8 боссов, химеры из любых двух видов (больше тысячи пар) × 20 свойств, до трёх на враге, × 5 видов групп × 9 знамений этажа: кровавая луна, тьма, нашествие, сокровищница… |
Вещь = 36 основ × 9 металлов × 11 свойств × 10 рун × любой уровень, 8 слотов и комплекты по металлу. Реагенты с чудовищ кормят кузницу и алхимика: эликсир из любых двух реагентов с особыми реакциями. 8 классов × 7 происхождений × наставник другого класса с 10 уровня. Черты (ярость, удар в спину, жатва душ, ядовитое касание…) и школы магии складываются; 16 заклинаний, свои школы на четверть дешевле. Арена один на один: бой до победы или ничьей через 3 минуты. Рейтинг Эло, счёт побед и таблица лучших дуэлянтов. Золото и вещи на арене не меняются. |
Ещё: две новые области (Гнилая топь, Звёздная бездна), до восьми героев на аккаунт, поднятие павших союзников, сундуки, родники, алтари и ловушки, туман войны, доска контрактов, эссенция и перегонка, торговая доска с escrow, гильдии, друзья, три канала чата и модерация.
Иконки снаряжения меняют цвет с уровнем (серый → зелёный → синий → фиолетовый → оранжевый → красный, золото — именные вещи) и 20 умений панели действий.
Все изображения рисует настоящий рендерер клиента по состояниям игрового ядра:
tools/screenshots/make.ps1.
- Скачайте клиент для своей системы на странице Releases и распакуйте архив.
- Запустите
GrimHollow.exe(Windows) или./grim-hollow(Linux). - Введите адрес сервера, который дал организатор, создайте аккаунт и героя.
- Погуляйте по городу (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
Сервер авторитетен: клиент только отправляет намерения и рисует снимки. Мир продвигает все походы одной транзакцией за такт, держит состояние в памяти и отправляет снимок только при изменении вида. Ранние команды буферизуются, а клиент предсказывает свой шаг, поэтому управление отзывчиво даже с пингом. Экономика транзакционна, каждый поход можно воспроизвести по журналу событий (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. Графика собственная и рисуется кодом; ресурсы сторонних игр не используются. Сторонние компоненты сохраняют свои лицензии.




