Initial commit: Mobil_Tag project setup
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
# Mobile Tag
|
||||
|
||||
GPS-basiertes Outdoor-Lasertag für jedes Smartphone als Progressive Web App (PWA).
|
||||
|
||||
## Was ist das?
|
||||
|
||||
Ein Spiel, das überall im Freien gespielt werden kann. Jeder Spieler nutzt sein eigenes Smartphone:
|
||||
|
||||
- **GPS** für Position und Spielgebiet
|
||||
- **Kamera** mit Fadenkreuz als Visier
|
||||
- **TensorFlow.js MoveNet** erkennt Körperteile (Kopf, Brust, Arm, Bein)
|
||||
- **Kompass** für die Blickrichtung
|
||||
- **Node.js + Socket.io** als Multiplayer-Server
|
||||
|
||||
## Projektstruktur
|
||||
|
||||
```
|
||||
Mobil_Tag/
|
||||
├── client/ # React + Vite + TypeScript PWA
|
||||
├── server/ # Node.js + Socket.io Game Server
|
||||
└── PLAN.md # Ausführlicher Projektplan
|
||||
```
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- [Node.js](https://nodejs.org/) ≥ 18
|
||||
- npm (wird mit Node.js installiert)
|
||||
|
||||
## Schnellstart
|
||||
|
||||
```bash
|
||||
# 1. Abhängigkeiten installieren
|
||||
npm run install:all
|
||||
|
||||
# 2. Server und Client gleichzeitig starten
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Danach ist die App unter `http://localhost:5173` erreichbar und der Server unter `http://localhost:3001`.
|
||||
|
||||
## Entwicklung einzeln starten
|
||||
|
||||
```bash
|
||||
# Nur Server
|
||||
cd server
|
||||
npm run dev
|
||||
|
||||
# Nur Client (in einem neuen Terminal)
|
||||
cd client
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Wichtige Hinweise für das Testen
|
||||
|
||||
- **HTTPS erforderlich:** Kamera, GPS und Orientierung erfordern in vielen Browsern HTTPS. Für lokale Tests (`localhost`) machen die Browser meist eine Ausnahme.
|
||||
- **Mobilgerät empfohlen:** Die App ist für Smartphones ausgelegt. Auf dem Desktop funktioniert sie eingeschränkt (keine GPS/Orientierungs-Sensoren).
|
||||
- **Kompass kalibrieren:** Vor Spielbeginn das Handy in einer 8-förmigen Bewegung bewegen, damit der Kompass korrekt arbeitet.
|
||||
- **Power-Saving:** Der Bildschirm dimmt sich nach 10 Sekunden Inaktivität und geht nach 30 Sekunden in den Tiefschlaf. Ein Tippen reaktiviert sofort.
|
||||
|
||||
## Schadensmodell
|
||||
|
||||
| Körperteil | Schaden |
|
||||
|---|---|
|
||||
| Kopf | 100 (Instant-Kill) |
|
||||
| Brust | 40 |
|
||||
| Bein | 25 |
|
||||
| Arm | 15 |
|
||||
|
||||
## Treffer-Benachrichtigungen
|
||||
|
||||
Alle Spieler sehen sofort, wenn jemand getroffen wird („Spieler A traf Spieler B · KOPF · 100“). Bei eigenen Treffern oder Treffern gegen sich selbst vibriert das Handy kurz.
|
||||
|
||||
## Backend-Hosting
|
||||
|
||||
Das Backend benötigt **Node.js**, da PHP keine Echtzeit-WebSocket-Verbindungen für Multiplayer-Spiele halten kann.
|
||||
|
||||
Falls du bereits einen PHP-Webserver hast, hast du zwei Möglichkeiten:
|
||||
|
||||
1. **Node.js neben PHP installieren** – siehe [`UBUNTU_SETUP.md`](./UBUNTU_SETUP.md) für die Schritt-für-Schritt-Anleitung.
|
||||
2. **Backend in der Cloud hosten** – empfohlen für den einfachsten Start. Kostenlose Optionen: Render, Railway, Fly.io.
|
||||
|
||||
## Deployment
|
||||
|
||||
### Frontend (PWA)
|
||||
|
||||
Auf [Vercel](https://vercel.com/) oder [Netlify](https://www.netlify.com/) deployen. Die PWA-Dateien werden mit `npm run build:client` erzeugt.
|
||||
|
||||
### Backend
|
||||
|
||||
Auf [Render](https://render.com/), [Railway](https://railway.app/) oder [Fly.io](https://fly.io/) deployen. Der Server startet mit `npm run build:server && npm start`.
|
||||
|
||||
### Umgebungsvariablen
|
||||
|
||||
Im Client kann die Server-URL über `.env` angepasst werden:
|
||||
|
||||
```bash
|
||||
# client/.env
|
||||
VITE_SERVER_URL=http://localhost:3001
|
||||
```
|
||||
|
||||
## Nächste Schritte / MVP-Status
|
||||
|
||||
- [x] Projektplan
|
||||
- [x] Scaffolding (Client + Server)
|
||||
- [ ] Geo-/Orientierungs-Module testen
|
||||
- [x] Kamera + MoveNet-Performance optimieren (Power-Saving)
|
||||
- [ ] Spielgebiet-Konfiguration in der Lobby
|
||||
- [ ] Radar/Minimap integrieren
|
||||
- [ ] PWA-Icons und Install-Prompt
|
||||
- [x] Akku-/Performance-Optimierung (Power-Saving)
|
||||
|
||||
## Lizenz
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user