- LICENSE (MIT) - CONTRIBUTING.md - CODE_OF_CONDUCT.md - SECURITY.md - .github/PULL_REQUEST_TEMPLATE.md - .github/ISSUE_TEMPLATE/bug_report.md - .github/ISSUE_TEMPLATE/feature_request.md - .github/FUNDING.yml
3.0 KiB
3.0 KiB
Как вносить изменения
Спасибо, что хочешь улучшить проект! Это живая база рогалика, и любая помощь пригодится. Пожалуйста, следуй правилам ниже — они сохраняют архитектуру.
Прежде чем писать код
- Прочитай
CLAUDE.md— там золотые правила архитектуры. - Почитай
docs/HOWTO.md— там рецепты для типовых задач. - Посмотри
docs/ARCHITECTURE.md— пойми потоки данных.
Процесс
- Создай issue (баг или фича) — чтобы обсудить до начала работы.
- Форкни репозиторий и создай ветку от
main:git checkout -b feature/что-делаешь - Пиши код, следуя стилю проекта:
- TypeScript strict, без
any - Комментарии по-русски, объясняют «почему», а не «что»
- Маленькие чистые функции; классы — для сущностей/состояния
- TypeScript strict, без
- Убедись, что всё зелёное:
bun run check # typecheck + tests - Если менял логику — добавь/обнови тест в
tests/. - Если менял геймплей/рендер — проверь в браузере (
bun run dev). - Обнови доки, если поменялось поведение или структура.
- Создай Pull Request с описанием изменений.
Золотые правила (нарушать = ломать)
- Ядро без рендера и DOM. В
src/core/нельзя импортироватьthree, обращаться кwindow/document/canvas. - Рендер ничего не меняет в игре.
src/render/только читает и рисует. - Случайность только через
Rng. НикакихMath.random()вcore/. - Время — в шагах (1/60 с). Не двигай ничего в rAF или рендере.
- Числа — не в коде. Константы — в
src/config.ts, параметры забега — вsrc/core/rules.ts. - Освобождай ресурсы three.js —
dispose()геометрию/материалы при удалении. - Перед коммитом —
bun run check.
Чего не делать
- Не добавлять тяжёлые зависимости (физдвижки, фреймворки).
- Не переписывать архитектуру «ядро ↔ рендер».
- Не коммитить
dist/иnode_modules/. - Не превращать игру в полноценное 3D без обсуждения.