{"id":49291199,"url":"https://github.com/freddysae0/threejs-aim-trainer","last_synced_at":"2026-04-26T00:04:48.007Z","repository":{"id":307333179,"uuid":"1029174632","full_name":"freddysae0/threejs-aim-trainer","owner":"freddysae0","description":"Aim trainer, made in three js","archived":false,"fork":false,"pushed_at":"2025-08-23T06:29:45.000Z","size":18603,"stargazers_count":2,"open_issues_count":2,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-24T09:33:17.011Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://aim.freddyjs.es","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/freddysae0.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-30T16:24:03.000Z","updated_at":"2025-08-23T06:29:49.000Z","dependencies_parsed_at":"2025-08-15T19:17:20.995Z","dependency_job_id":"526037f4-cec8-4150-a04d-c8bd5a0b1bdc","html_url":"https://github.com/freddysae0/threejs-aim-trainer","commit_stats":null,"previous_names":["freddysae0/threejs-aim-trainer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/freddysae0/threejs-aim-trainer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freddysae0%2Fthreejs-aim-trainer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freddysae0%2Fthreejs-aim-trainer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freddysae0%2Fthreejs-aim-trainer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freddysae0%2Fthreejs-aim-trainer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/freddysae0","download_url":"https://codeload.github.com/freddysae0/threejs-aim-trainer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freddysae0%2Fthreejs-aim-trainer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32280982,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"last_error":"SSL_read: 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":[],"created_at":"2026-04-26T00:04:47.948Z","updated_at":"2026-04-26T00:04:47.998Z","avatar_url":"https://github.com/freddysae0.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Aim trainer for shooters, (in ThreeJS)\n\u003ch3 align=\"center\"\u003e🎮 Game Preview\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"preview.gif\" alt=\"Preview\" width=\"800\"\u003e\n\u003c/p\u003e\n\n## How to install\n\n```bash\nnpm install\n```\n\n## How to run\n\n```bash\nnpm run dev\n```\n\n## How to build\n\n```bash\nnpm run build\n```\n\n## How to preview\n\n```bash\nnpm run preview\n```\n\n---\n\n## 🎮 Gameplay \u0026 Controls\n\n| Action | Key/Mouse |\n|--------|-----------|\n| Move Forward / Back | `W` / `S` |\n| Strafe Left / Right | `A` / `D` |\n| Shoot                | `Left Click` |\n| Crouch               | `C` (hold) |\n| Jump                 | `Space` |\n| Lock Pointer         | `Click` inside canvas |\n| Start Round          | `Space` |\n\nUse the **sensitivity slider** in the start screen to fine-tune mouse sensitivity. The value is stored in `localStorage` so your preference persists across sessions.\n\n## ✨ Features\n\n* Three target presets (3, 8, 50) for quick warm-ups.\n* Procedurally generated colored cubes that become shootable one at a time.\n* Animated target absorption effect when hit.\n* Die-cut cell-shaded pistol model that follows camera rotation.\n* FPS-style WASD movement with adjustable sensitivity and inertia.\n* Built-in timer that stops automatically when the last target disappears.\n* Post-processing pipeline (`EffectComposer`, FXAA pass) ready for expansion.\n* Fully written in **TypeScript** + **Three.js** and bundled with **Vite**.\n\n## 🗂️ Project Structure\n\n```text\nthree-shooter/\n├── public/               # Static assets (models, textures, icons…)\n├── src/\n│   ├── core/             # Engine wrappers (Camera, Renderer, Loop, App)\n│   ├── objects/          # 3D objects \u0026 generators (Cube, Pistol …)\n│   ├── scenes/           # Three.js scenes (MainScene)\n│   ├── systems/          # Behaviour modules (ControlsWithMovement)\n│   ├── ui/               # DOM-based UI overlays (StartScreen)\n│   └── main.ts           # Vite entry point\n├── index.html            # Game container \u0026 UI markup\n├── package.json          # NPM scripts \u0026 deps\n└── tsconfig.json         # TypeScript configuration\n```\n\n## 🛠️ Tech Stack\n\n* **Three.js** – WebGL abstraction layer for 3D rendering.\n* **TypeScript** – Static typing for safer code.\n* **Vite** – Lightning-fast dev server \u0026 bundler.\n* **Post-processing Addons** – `EffectComposer`, `RenderPass`, `FXAAShader`.\n\n## 🔧 Configuration\n\n| Option | Location | Description |\n|--------|----------|-------------|\n| Mouse sensitivity | `localStorage` key `mouseSensitivity` | Set via slider on start screen. Multiplies base rotation speed. |\n| Renderer quality  | `src/core/Renderer.ts` | Change antialias, pixel ratio, post FX. |\n| Target counts     | `src/scenes/MainScene.ts` | `level1/2/3()` generate different numbers of cubes. |\n\n## 📜 Available NPM Scripts\n\n| Script | Purpose |\n|--------|---------|\n| `npm run dev`      | Local dev server on `localhost:5173`. |\n| `npm run build`    | Production build to `dist/`. |\n| `npm run preview`  | Preview the production build locally. |\n\n## 📦 Assets\n\n* `public/models/pistol.glb` – Low-poly pistol model.\n* `preview.gif` – Gameplay preview used in this README.\n* `controls.png` – Legend for keyboard controls shown in HUD.\n\n## 🚀 Deployment\n\nThe final build is static and can be deployed to any static host (Netlify, GitHub Pages, Vercel…).\n\n```bash\nnpm run build\n# copy dist/ to your preferred host\n```\n\n## 👤 Author\n\n*Freddy Sae*\n\nFeel free to open issues or PRs!\n\n## 📝 License\n\nThis project is released under the **MIT License** – see [`LICENSE`](LICENSE) for details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreddysae0%2Fthreejs-aim-trainer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffreddysae0%2Fthreejs-aim-trainer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreddysae0%2Fthreejs-aim-trainer/lists"}