diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..fe67f36 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,4 @@ +# Эти строки раскомментируй, если появятся ссылки на спонсорство +# github: [VovaManul] +# patreon: # username +# ko_fi: # username diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..cc45299 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,34 @@ +--- +name: Сообщить о баге +about: Что-то работает не так +title: '[BUG] ' +labels: bug +assignees: '' +--- + +## Описание + + + +## Воспроизведение + +1. Открыть `dist/index.html` (или `bun run dev`) +2. Выбрать уровень «…» +3. Перейти в комнату … +4. Использовать … +5. Видно, что … + +## Ожидаемое поведение + + + +## Скриншоты / видео + +## Среда + +- Браузер: Chrome/Firefox/Safari +- ОС: macOS/Windows/Linux + +## Дополнительно + + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..c0aa0e7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,29 @@ +--- +name: Предложить идею +about: Новая фича, улучшение или изменение +title: '[FEATURE] ' +labels: enhancement +assignees: '' +--- + +## Проблема + + + +## Решение + + + +## Альтернативы + + + +## Совместимость + +- [ ] Меняет архитектуру «ядро ↔ рендер» +- [ ] Добавляет новую зависимость +- [ ] Ломает обратную совместимость + +## Дополнительно + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..3f7d634 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,28 @@ +## Описание + + + +## Связанный issue + + + +## Чеклист + +- [ ] `bun run check` зелёный (typecheck + tests) +- [ ] Добавлены/обновлены тесты (если менялась логика) +- [ ] Проверено в браузере (если геймплей/рендер) +- [ ] Обновлена документация (если нужно) +- [ ] Нет `any` (кроме узких мест по согласованию) +- [ ] Нет `Math.random()` в `src/core/` + +## Тип изменений + +- [ ] Исправление бага +- [ ] Новая функциональность +- [ ] Рефакторинг +- [ ] Документация +- [ ] Другое + +## Дополнительно + + diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..628c56c --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,52 @@ +# Кодекс поведения + +## Наши обязательства + +Мы, как участники и лидеры этого проекта, обязуемся создать гостеприимную +и безопасную среду для всех, независимо от возраста, телосложения, +видимых или невидимых физических особенностей, этнической принадлежности, +половых признаков, уровня опыта, образования, социально-экономического +статуса, национальности, внешности, расы, религии или сексуальной +идентичности и ориентации. + +Мы обязуемся действовать и взаимодействовать так, чтобы способствовать +открытому, доброжелательному, инклюзивному и здоровому сообществу. + +## Приемлемое поведение + +Примеры поведения, способствующего созданию положительной среды: + +- Проявление доброты и эмпатии по отношению к другим участникам +- Уважение к разным точкам зрения и опыту +- Конструктивная обратная связь +- Признание своих ошибок и извлечение уроков + +## Неприемлемое поведение + +- Использование сексуализированного языка или образов +- Троллинг, оскорбительные/уничижительные комментарии +- Преследование в любой форме +- Публикация личной информации без явного разрешения +- Другое поведение, которое можно обоснованно считать неуместным + +## Ответственность + +Лидеры проекта отвечают за разъяснение стандартов поведения и будут +предпринимать соответствующие и справедливые меры в ответ на любое +неприемлемое поведение. + +## Сфера действия + +Этот Кодекс поведения применяется во всех сообществах проекта, а также +в публичных местах, когда человек представляет проект. + +## Enforcement + +О случаях неприемлемого поведения можно сообщать лидерам проекта. +Все жалобы будут рассмотрены и приведут к ответным мерам, которые +сочтут необходимыми и соответствующими обстоятельствам. + +## Атрибуция + +Этот Кодекс поведения адаптирован из [Contributor Covenant](https://www.contributor-covenant.org), +версия 2.1. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..0e48a27 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,49 @@ +# Как вносить изменения + +Спасибо, что хочешь улучшить проект! Это живая база рогалика, и любая помощь +пригодится. Пожалуйста, следуй правилам ниже — они сохраняют архитектуру. + +## Прежде чем писать код + +1. Прочитай [`CLAUDE.md`](./CLAUDE.md) — там золотые правила архитектуры. +2. Почитай [`docs/HOWTO.md`](./docs/HOWTO.md) — там рецепты для типовых задач. +3. Посмотри [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md) — пойми потоки данных. + +## Процесс + +1. Создай issue (баг или фича) — чтобы обсудить до начала работы. +2. Форкни репозиторий и создай ветку от `main`: + ```bash + git checkout -b feature/что-делаешь + ``` +3. Пиши код, следуя стилю проекта: + - TypeScript strict, без `any` + - Комментарии по-русски, объясняют «почему», а не «что» + - Маленькие чистые функции; классы — для сущностей/состояния +4. Убедись, что всё зелёное: + ```bash + 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.js** — `dispose()` геометрию/материалы при удалении. +7. **Перед коммитом — `bun run check`.** + +## Чего не делать + +- Не добавлять тяжёлые зависимости (физдвижки, фреймворки). +- Не переписывать архитектуру «ядро ↔ рендер». +- Не коммитить `dist/` и `node_modules/`. +- Не превращать игру в полноценное 3D без обсуждения. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0fdda11 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 VovaManul + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..e629c1f --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,24 @@ +# Политика безопасности + +## Поддерживаемые версии + +Активно разрабатывается только `main`-ветка. Стабильных релизов пока нет. + +| Версия | Поддержка | +|---|---| +| main (активная разработка) | ✅ | +| Другие ветки | ❌ | + +## Сообщить об уязвимости + +Это локальная однопользовательская игра на Canvas/WebGL. Уязвимости +безопасности маловероятны, но если найдёшь что-то серьёзное: + +- **Не создавай публичный issue.** +- Напиши в [issues](https://github.com/VovaManul/Binding-Fignyaac/issues) + с пометкой `[SECURITY]` в заголовке — репозиторий приватный/маленький, + это безопасно. + +По умолчанию: игра не принимает пользовательский ввод, кроме клавиатуры, +и не выполняет удалённый код. Риск сводится к XSS через `dist/index.html` +при сборке — убедись, что билд чистый (`bun run build` из свежего клона). diff --git a/bun.lock b/bun.lock index d37fc52..5c741a9 100644 --- a/bun.lock +++ b/bun.lock @@ -1,5 +1,6 @@ { "lockfileVersion": 1, + "configVersion": 0, "workspaces": { "": { "name": "dungeon-crawl",