{"id":21433163,"url":"https://github.com/ivanoskov/shooter","last_synced_at":"2026-02-06T07:31:42.942Z","repository":{"id":195855488,"uuid":"693816535","full_name":"ivanoskov/shooter","owner":"ivanoskov","description":"Web-Based First Person Shooter Engine","archived":false,"fork":false,"pushed_at":"2024-11-07T10:46:26.000Z","size":34129,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-26T17:40:42.074Z","etag":null,"topics":["3d","3d-graphics","engine","game","gameengine","shooter","shooter-game","web"],"latest_commit_sha":null,"homepage":"https://ivanoskov.github.io/shooter/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ivanoskov.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-09-19T19:14:26.000Z","updated_at":"2024-11-07T10:46:30.000Z","dependencies_parsed_at":"2023-09-19T22:28:11.828Z","dependency_job_id":"c1c0632d-9235-4fa6-8548-3996aa4717d6","html_url":"https://github.com/ivanoskov/shooter","commit_stats":null,"previous_names":["ivanoskov/shooter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ivanoskov/shooter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanoskov%2Fshooter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanoskov%2Fshooter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanoskov%2Fshooter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanoskov%2Fshooter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ivanoskov","download_url":"https://codeload.github.com/ivanoskov/shooter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanoskov%2Fshooter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29154293,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T07:18:23.844Z","status":"ssl_error","status_checked_at":"2026-02-06T07:13:32.659Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","3d-graphics","engine","game","gameengine","shooter","shooter-game","web"],"created_at":"2024-11-22T23:25:36.804Z","updated_at":"2026-02-06T07:31:42.888Z","avatar_url":"https://github.com/ivanoskov.png","language":"TypeScript","readme":"# 🎮 Web-Based First Person Shooter Engine\n\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg)](https://www.typescriptlang.org/)\n[![Three.js](https://img.shields.io/badge/Three.js-158-green.svg)](https://threejs.org/)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\n## 📝 Описание\n\nЭкспериментальный движок для создания шутеров от первого лица, работающий в браузере. Построен на базе Three.js с использованием современных веб-технологий. Движок предоставляет базовую физику, систему коллизий на основе Octree и редактор уровней через JSON-конфигурацию.\n\n### 🔑 Ключевые особенности\n\n- **Производительная физика** благодаря оптимизированной системе коллизий Octree\n- **Динамическое освещение** с поддержкой теней\n- **Редактор карт** через JSON-конфигурацию\n- **Настраиваемые параметры игрока** через удобный GUI-интерфейс\n- **Поддержка моделей** в формате GLTF/GLB\n- **Строгая типизация** благодаря TypeScript\n\n## 🛠 Технологический стек\n\n- TypeScript\n- Three.js\n- Vite\n- WebGL\n\n## 📁 Структура проекта\n\n```\n├── docs/\n│   └── img/                # Скриншоты и изображения для документации\n├── public/\n│   └── models/             # 3D модели в формате GLTF/GLB\n├── src/\n│   ├── config/             # Конфигурационные файлы\n│   │   ├── map.ts          # Конфигурация игровых карт\n│   │   └── settings.ts     # Основные настройки игры\n│   ├── core/               # Ядро движка\n│   │   ├── browser/        # Логика браузера\n│   │   │   └── BrowserController.ts # Управление поведением браузера\n│   │   ├── events/           # Система событий\n│   │   │   └── EventEmitter.ts # Базовый класс для работы с событиями\n│   │   ├── input/            # Система ввода\n│   │   │   └── InputSystem.ts # Логика обработки ввода\n│   │   ├── Game.ts           # Основной класс игры\n│   │   ├── Player.ts         # Логика игрока\n│   │   └── Camera.ts       # Логика камеры и отображения\n│   ├── types/              # TypeScript интерфейсы и типы\n│   │   ├── stats.d.ts       # Определение типа для Stats\n│   │   └── index.ts        # Основные типы\n│   ├── types/              # TypeScript интерфейсы и типы\n│   │   ├── graphics.ts     # Настройки графики\n│   │   └── index.ts        # Основные типы\n│   └── main.ts             # Точка входа приложения\n├── index.html              # HTML шаблон\n├── tsconfig.json           # Конфигурация TypeScript\n├── package.json            # Зависимости и скрипты\n├── vite.config.ts          # Конфигурация Vite\n├── LICENSE                 # Лицензия MIT\n└── README.md               # Документация проекта\n```\n\n### 📂 Описание ключевых директорий\n\n- **src/core/**: Содержит основную логику движка\n- **src/config/**: Конфигурационные файлы для настройки игры и карт\n- **src/types/**: TypeScript интерфейсы и типы\n- **public/models/**: 3D модели и ресурсы\n- **docs/**: Документация и медиа файлы\n\n## 📋 Журнал изменений\n\n### v0.11.0 (Текущая версия)\n- 🗺️ Добавлена система карт:\n  - 🏗️ Реализовано переключение между картами через меню\n  - 🎯 Представлена базовая тестовая карта для отладки физики и коллизий\n  - 🦍 Добавлена масштабная карта \"Горилла\" с продвинутой геометрией\n  - 🔄 Автоматическая перезагрузка физики при смене карты\n  - 📍 Корректное позиционирование игрока при смене локации\n- 🎮 Улучшена система физики и коллизий:\n  - 🌲 Добавлено отдельное октодерево для динамических объектов\n  - 🎯 Реализована визуализация обоих октодеревьев с цветовой дифференциацией\n  - ⚙️ Добавлена возможность включения/отключения динамических объектов\n  - 🔄 Настраиваемое количество итераций обработки коллизий\n- 🎨 Расширен пользовательский интерфейс настроек:\n  - 📷 Добавлены расширенные настройки камеры (FOV, near/far planes)\n  - 🌓 Улучшены настройки теней и дистанции отрисовки\n  - 🎨 Внедрены настройки постобработки (тональная компрессия, сглаживание)\n  - ⚖️ Добавлены физические параметры (гравитация, шаги физики)\n  - 🔧 Реализованы отладочные инструменты (статистика, каркасный режим)\n- 🌍 Улучшена локализация:\n  - 🇷🇺 Все параметры имеют русские названия\n  - 📊 Настроены логичные диапазоны значений\n  - 📁 Меню организовано в логические группы\n\n### v0.10.0\n- 🎨 Улучшена система рендеринга:\n  - ✨ Добавлено физически корректное освещение\n  - 🌗 Улучшены тени с настраиваемым качеством\n  - 🎨 Внедрена корректная цветопередача через sRGB\n  - 🎬 Добавлено тональное отображение ACES Filmic\n  - 📷 Реализована настраиваемая экспозиция\n- ⚡ Оптимизации производительности:\n  - 🎮 Добавлены пресеты качества графики\n  - 🔧 Умное управление картами теней\n  - 📊 Оптимизация количества источников света\n  - 🖼️ Контроль анизотропной фильтрации\n- 🛡️ Улучшена обработка пользовательского ввода:\n  - 🔒 Централизованное управление поведением браузера\n  - ⌨️ Оптимизированная обработка комбинаций клавиш\n  - 🧹 Корректная очистка ресурсов\n\n### v0.9.0\n- ⚡ Значительные оптимизации производительности:\n  - 🔄 Внедрен пул векторов для уменьшения создания объектов\n  - 👁️ Улучшен алгоритм Frustum Culling\n  - 🎨 Оптимизированы материалы и геометрии\n  - 💾 Добавлено кэширование объектов THREE.js\n  - 🧮 Оптимизированы физические вычисления\n  - 🗑️ Внедрена система очистки ресурсов\n- 🎯 Улучшен алгоритм проверки видимости объектов:\n  - ✅ Добавлена проверка существования геометрии\n  - 🔄 Используется клонированная boundingSphere\n  - 🎭 Добавлен запас к радиусу сферы для плавности\n- 📊 Улучшена работа с матрицами:\n  - 🔄 Оптимизировано обновление матриц камеры\n  - 👁️ Добавлено умное обновление матриц видимых объектов\n- 📝 Усилена типизация компонентов\n\n### v0.8.0\n- 🎮 Добавлена система событий (EventEmitter) для улучшения архитектуры\n- ⌨️ Реализована абстракция системы ввода (InputSystem)\n- 🔄 Улучшена обработка пользовательского ввода\n- 🔒 Улучшена работа с Pointer Lock API\n- 📦 Уменьшена связанность компонентов\n\n### v0.7.0\n- 🎥 Выделен отдельный класс `PlayerCamera` для улучшения организации кода\n- ⚡ Добавлена оптимизация рендеринга через Frustum Culling\n- 🔧 Улучшено управление памятью через переиспользование векторов и матриц\n- 🛡️ Усилена инкапсуляция компонентов камеры\n- 📦 Реорганизована структура классов согласно SOLID принципам\n\n### v0.6.0\n- 🔄 Полная миграция кодовой базы на TypeScript\n- ✨ Добавлены строгие типы для всех компонентов\n- 📦 Реорганизована структура проекта\n- 🔧 Внедрены интерфейсы для конфигураций\n- 🛠 Улучшена система сборки с использованием Vite\n- 📚 Добавлена базовая документация типов\n\n### v0.5.0\n- ✨ Реализована базовая система редактирования карт через JSON-конфигурацию\n  ```typescript\n  interface MapConfig {\n    STATIC_OBJECTS: {\n      LOAD_OBJECTS: Array\u003c{position: Vector3, file: string}\u003e;\n      THREE_OBJECTS: Array\u003c{\n        type: string,\n        position: Vector3,\n        geometry: Vector3,\n        color: string\n      }\u003e;\n    }\n  }\n  ```\n  \n### v0.4.0\n- ✨ Разработан класс `Player` с полной игровой логикой\n- 🔧 Реализована система движения и прыжков\n- 🎮 Добавлено управление с клавиатуры и мыши\n- 📊 Внедрена система обработки коллизий\n\n### v0.3.0\n- 🌞 Добавлена система динамического освещения\n- 🎨 Реализованы динамические тени\n- ✨ Внедрен направленный свет для имитации солнечного освещения\n\n### v0.2.0\n- 🔧 Добавлена панель отладки\n- 📊 Реализована визуализация Octree\n- ⚙️ Добавлены настройки производительности\n\n### v0.1.0\n- 🎮 Создан базовый игровой движок\n- 📦 Настроена базовая Three.js сцена\n- 🎥 Реализована базовая камера от первого лица\n\n## 🖼 Скриншоты\n\n\u003cdetails\u003e\n\u003csummary\u003eРазвернуть галерею\u003c/summary\u003e\n\n#### Базовая сцена\n![Базовая сцена](docs/img/screenshot_1.png)\n\n#### Панель отладки\n![Панель отладки](docs/img/screenshot_2.png)\n\n#### Визуализация Octree\n![Octree помощник](docs/img/screenshot_3.png)\n\n#### Система освещения\n![Динамические тени](docs/img/screenshot_4.png)\n\n#### Редактор карт\n![Редактор карт](docs/img/screenshot_5.png)\n\n\u003c/details\u003e\n\n## 📚 Документация\n\nПодробная документация по API и примеры использования находятся в разработке. Типы и интерфейсы документированы в исходном коде.\n\n## 🤝 Участие в разработке\n\nПроект находится в активной разработке. Если вы хотите внести свой вклад, пожалуйста, ознакомьтесь с нашим руководством по участию в разработке.\n\n## 📄 Лицензия\n\nПроект распространяется под лицензией MIT. Подробности в файле [LICENSE](LICENSE).","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanoskov%2Fshooter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivanoskov%2Fshooter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanoskov%2Fshooter/lists"}