Files
Binding-Fignyaac/CONTRIBUTING.md
Volodia f4316431e0 add community health files
- 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
2026-06-18 14:33:47 +03:00

3.0 KiB
Raw Permalink Blame History

Как вносить изменения

Спасибо, что хочешь улучшить проект! Это живая база рогалика, и любая помощь пригодится. Пожалуйста, следуй правилам ниже — они сохраняют архитектуру.

Прежде чем писать код

  1. Прочитай CLAUDE.md — там золотые правила архитектуры.
  2. Почитай docs/HOWTO.md — там рецепты для типовых задач.
  3. Посмотри docs/ARCHITECTURE.md — пойми потоки данных.

Процесс

  1. Создай issue (баг или фича) — чтобы обсудить до начала работы.
  2. Форкни репозиторий и создай ветку от main:
    git checkout -b feature/что-делаешь
    
  3. Пиши код, следуя стилю проекта:
    • TypeScript strict, без any
    • Комментарии по-русски, объясняют «почему», а не «что»
    • Маленькие чистые функции; классы — для сущностей/состояния
  4. Убедись, что всё зелёное:
    bun run check   # typecheck + tests
    
  5. Если менял логику — добавь/обнови тест в tests/.
  6. Если менял геймплей/рендер — проверь в браузере (bun run dev).
  7. Обнови доки, если поменялось поведение или структура.
  8. Создай Pull Request с описанием изменений.

Золотые правила (нарушать = ломать)

  1. Ядро без рендера и DOM. В src/core/ нельзя импортировать three, обращаться к window/document/canvas.
  2. Рендер ничего не меняет в игре. src/render/ только читает и рисует.
  3. Случайность только через Rng. Никаких Math.random() в core/.
  4. Время — в шагах (1/60 с). Не двигай ничего в rAF или рендере.
  5. Числа — не в коде. Константы — в src/config.ts, параметры забега — в src/core/rules.ts.
  6. Освобождай ресурсы three.jsdispose() геометрию/материалы при удалении.
  7. Перед коммитом — bun run check.

Чего не делать

  • Не добавлять тяжёлые зависимости (физдвижки, фреймворки).
  • Не переписывать архитектуру «ядро ↔ рендер».
  • Не коммитить dist/ и node_modules/.
  • Не превращать игру в полноценное 3D без обсуждения.