No description
Find a file
Janik Dietz 25fc6fb345
feat: add fullscreen mode and extract shared game engine
- Add new fullscreen game mode playable in a dedicated browser tab
- Extract shared game logic into `engine.js` to be used by both popup and fullscreen modes
- Implement self-protection to prevent closing the game tab or popup tab
- Update documentation and bump version to 1.1.0
2026-08-04 08:02:53 +02:00
icons feat: initialize Tab Shooter Chrome extension game 2026-08-04 07:13:45 +02:00
.gitignore feat: initialize Tab Shooter Chrome extension game 2026-08-04 07:13:45 +02:00
background.js feat: initialize Tab Shooter Chrome extension game 2026-08-04 07:13:45 +02:00
engine.js feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
game.css feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
game.html feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
game.js feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
generate_icons.py feat: initialize Tab Shooter Chrome extension game 2026-08-04 07:13:45 +02:00
manifest.json feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
popup.css feat: initialize Tab Shooter Chrome extension game 2026-08-04 07:13:45 +02:00
popup.html feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
popup.js feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
README.md feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00

🚀 Tab Shooter

A small Chrome browser game that turns your open tabs into targets. Pilot a spaceship, blast the tabs you no longer need, and they really get closed.

Für alle, die zu viele Tabs offen haben. Schieß sie ab — und sie verschwinden wirklich.


📦 Installation (in Chrome laden)

  1. Chrome öffnen → chrome://extensions aufrufen.
  2. Oben rechts den Entwicklermodus (Developer mode) einschalten.
  3. Auf „Entpackt laden“ (Load unpacked) klicken.
  4. Den Ordner tab-shooter auswählen.
  5. Das Tab-Shooter-Icon 🚀 erscheint in der Toolbar. Anklicken → Spiel startet.

Nach Code-Änderungen in popup.js/manifest.json die Extension auf chrome://extensions einfach neu laden (🔄-Button).


🎮 Spielen

Zwei Spielmodi

Modus Wie
Popup (kompakt, 420×600) Toolbar-Icon klicken → SPIEL STARTEN
Vollbild (eigener Tab, bis 900×680) Toolbar-Icon klicken → 🖥️ Im Vollbild spielen

Im Vollbild-Modus öffnet sich das Spiel in einem eigenen Tab. Dieser Tab ist geschützt er taucht nie als Ziel auf und lässt sich nicht abschießen. Perfekt, wenn du mehr Platz und eine bessere Übersicht willst.

Ablauf

  1. Modus wählen & Scope wählen: Aktuelles Fenster oder Alle Fenster.
  2. SPIEL STARTEN drücken.
  3. Deine echten Tabs erscheinen als gegnerische Raumschiffe (mit echtem Favicon + Titel).
  4. Schießen — jeder Tab, den du triffst, wird in Chrome wirklich geschlossen.

🛡️ Selbstschutz: Folgende Tabs sind nie Ziele:

  • der Tab, der das Popup trägt (sonst würde sich das Spiel selbst beenden)
  • der Game-Tab im Vollbild-Modus
  • alle internen Chrome-Seiten (chrome://, devtools://, …)
  • alle Seiten dieser Extension selbst

Steuerung

Aktion Tastatur Maus
Bewegen oder A D Maus bewegen
Schießen Leertaste Klick (halten)

Features

  • Echte Tabs als Gegner Favicon & Titel, verknüpft via Tab-ID.
  • Bewegte Gegner manche sind „feindlich" und schießen zurück.
  • Power-Ups (zufälliger Drop):
    • 🔫 Triple Shot drei Schüße gleichzeitig (6 s)
    • Rapid Fire schnellere Schussfolge (6 s)
    • 🛡️ Shield absorbiert einen Treffer
  • Score & Highscore gespeichert via chrome.storage.local.
  • 3 Leben, danach Game Over mit Statistik.

🗂 Projektstruktur

tab-shooter/
├── manifest.json        # MV3-Manifest, Berechtigungen
├── engine.js            # Geteilte Game-Engine (Klasse TabShooterGame)
├── popup.html           # Popup-UI (kompakt)
├── popup.css            # Shared Space-Theme Styling
├── popup.js             # Popup-Controller (nutzt engine.js)
├── game.html            # Vollbild-UI (eigener Tab)
├── game.css             # Vollbild-Overrides
├── game.js              # Vollbild-Controller (nutzt engine.js)
├── background.js        # Service Worker (MV3)
├── generate_icons.py    # Icon-Generator (pure stdlib, keine Abhängigkeiten)
├── README.md
└── icons/
    ├── icon16.png
    ├── icon48.png
    └── icon128.png

🔐 Berechtigungen & Privatsphäre

Permission Zweck
tabs Offene Tabs lesen (Titel, Favicon, ID) und getroffene Tabs schließen.
favicon Favicons über die _favicon-API laden.
storage Highscore lokal speichern.

Es werden keine Inhaltsdaten (Page content) von Tabs gelesen — nur Titel und Favicon-URL. Tabs werden ausschließlich dann geschlossen, wenn sie im Spiel getroffen wurden. Der aktive Popup-Tab und interne chrome://-Seiten sind nie Ziele.


🛠 Icons neu generieren

Falls du die Icons anpassen willst (Farben, Form in generate_icons.py):

python generate_icons.py

Das Skript nutzt nur die Python-Standardbibliothek (zlib + struct) — keine PIL nötig.


Viel Spaß beim Aufräumen! 🛸💥