Skip to content
nitsuahPublic

About

3D browser combat game built with React 19, Three.js, and Socket.io. Solo combat is live; multiplayer and mobile gameplay are in active development.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

DARKMOON.DEV

🧭 darkmoon · Features · Roadmap · Tasks · Changelog · Metrics

CI Netlify Status

3D browser combat game built with React 19, Three Fiber, Socket.io, and Vite. Solo mode with full combat gameplay is live; multiplayer is planned.

Live Demo: darkmoon.dev

Documentation

  • ARCHITECTURE.md: App boundaries, deployment, and contracts
  • API.md: HTTP and WebSocket interface reference

✨ Features

  • [shipped] Combat Gameplay with AI Bots — Full deathmatch and CTF modes with bot LOS checks, weapon reload system (including timing-based precision snap mechanic), angular spread, bot jumping, tracer beams, hit direction indicators, score tension alerts, and ShotgunVFX cone particle effects.
  • [shipped] Shooting Gallery Mode — Standalone target-practice mode with crosshair and bot tracer improvements.
  • [shipped] Mouse-Aimed Firing & Player Reticle — Ground-plane raycast aiming with GPU-composited CSS crosshair overlay; velocity-based smooth movement with camera-relative A/D strafing.
  • [shipped] Pluggable Game Mode Architecture — GameModeHandler interface decouples mode logic; TagMode (with health/damage support), DeathmatchMode, and CTFMode ship as reference implementations.
  • [shipped] Modular UI Architecture — GameUI and Solo.tsx fully componentized: 15 HUD sub-components, 3 new hooks (useGameStart, useBotPositionHandlers, useDebugModes), and a dedicated useGameUIState.ts for all event-driven state.
  • [shipped] WebSocket Server Foundation — Socket.io and server validation are in place for future live modes.
  • [in-progress] Multiplayer 3D Gameplay — Multiplayer foundations exist, but the deployed experience is still solo-first.
  • [in-progress] Mobile Support — Responsive layout and touch controls exist, but device validation is still open.
  • [shipped] Modern Tooling — Vite, Vitest (659 tests), ESLint, Prettier, TypeScript, and CI are wired into the repo.

Quick Start

# Dev server (hot reload via Vite)
docker compose -f config/docker-compose.yml up solo

Visit http://localhost:4444. Solo mode is the only live experience; multiplayer is not yet available.

Development

All checks run via Docker — no local Node.js required.

# Run all tests (659 tests, Vitest)
docker compose -f config/docker-compose.yml --project-name darkmoon --profile test run --rm test

# Lint
npm run lint:docker

# Production build
docker build --target runner -t darkmoon-prod .
docker run --rm -p 4444:4444 darkmoon-prod

Git hooks are managed by husky and run Docker automatically:

  • pre-commit: runs lint-staged via Docker (lint changed files)
  • pre-push: runs full test suite in Docker

Install hooks after cloning:

npm install   # triggers husky install via `prepare` script

pre-commit (optional, adds basic file hygiene on top of husky):

pip install pre-commit && pre-commit install

Contributing

See CONTRIBUTING.md (org default) for code quality standards and deployment tips.

Docs Index

Every doc at the repo root (other than this README) and under docs/ (the files mirrored into the Obsidian vault), so none of them is orphaned.

docs/archive/

docs/projects/conkers/

docs/projects/multi/

📝 License

MIT © 2025 Nitsuah Labs


Inspiration: R3F.Multiplayer by @juniorxsound

Community Standards

Shared community policies are centralized in https://github.com/nitsuah/.github:

About

3D browser combat game built with React 19, Three.js, and Socket.io. Solo combat is live; multiplayer and mobile gameplay are in active development.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages