Об этом проекте

Violencetown — это минималистичная, но насыщенная системами 2D action-RPG, в которую можно играть прямо в браузере без зависимостей или этапов сборки. Построенная полностью на vanilla JavaScript с использованием HTML5 Canvas, она делает упор на архитектурную ясность и детерминированный дизайн. Игра работает по единым мировым часам: каждый ввод игрока продвигает игру на один ход, синхронизируя бой, поведение NPC и циклы дня и ночи. Радиальное колесо действий использует чистую модель состояний, где одна функция определяет затронутые плитки, обеспечивая согласованность между визуальным откликом, подтверждением дружественного огня и расчетом урона. NPC управляются единым скаляром «расположения» (disposition), который влияет на диалоги, взятки, альянсы и цены торговцев, объединяя социальные и экономические системы. Весь рандом основан на seed-значениях для воспроизводимости, а сохранения хранятся через localStorage. Мир создан вручную и состоит из направленных зон (Street, Sewer, Factory, Carnival, Graveyard, Wilderness), соединенных физическими переходами. Боевая система плоская и детерминированная — без бросков кубиков — с типизированными всплывающими индикаторами попаданий для мгновенной обратной связи. Система преследования позволяет врагам следовать за игроками между зонами; двери можно заблокировать трубами для временной безопасности. Управление модальное и ориентировано на клавиатуру, с поддержкой сенсора и мыши для навигации и интерфейса. Проект включает полную настройку PWA (manifest + service worker), сервер разработки для live reload и комплексный набор тестов, запускаемый в Node.js. Дизайнерские решения задокументированы в директории 'plans/', включая краткие описания функций и матрицы рисков. Сторонние ресурсы включают спрайты Kenney CC0 и шрифт VT323 в соответствии с их лицензиями. Кодовая база структурирована вокруг основных модулей, таких как combat, pathing, inventory и AI, которые спроектированы для модульного тестирования и удобства поддержки. Разработка следует четырехэтапному конвейеру, изложенному в GAME_STUDIO_PLAN.md. Аккаунты или бэкенд не требуются — всё работает на стороне клиента.