Files
neural-hunt/V4.4_NEURAL_PLACE.md
jbergner 1a56dec079
All checks were successful
release-tag / release-image (push) Successful in 3m57s
RC-16
2026-08-14 14:19:16 +02:00

4.4 KiB
Raw Permalink Blame History

V4.4 — Neural Place

Hinweis: Ab V4.5 wird die Place-Ökonomie zusätzlich durch Draw-, Aktivzeit- und Admin-Rewards erweitert. Siehe V4.5_PLACE_REWARD_ECONOMY.md.

Neural Place ergänzt den Hunt um eine gemeinsame, globale Pixel-Leinwand nach dem Grundprinzip von r/place. Anders als bei einem zeitbasierten Cooldown werden Placements ausschließlich durch echten Fortschritt im Hunt finanziert.

Spielökonomie

  • Solange Neural Place aktiviert ist, erzeugt jeder dauerhaft gespeicherte Highscore-Fortschritt eines Spielers Place-Punkte.
  • Standard: +1,00 Score-Prozentpunkte = 100 Place-Punkte.
  • Standard: 1 Placement = 100 Place-Punkte.
  • Kleine Score-Verbesserungen werden intern in Milli-Punkten gesammelt und gehen daher nicht durch Rundung verloren.
  • Auch das Übermalen eines bereits belegten Pixels ist ein Placement und kostet Punkte.
  • Es gibt keinen Zeit-Cooldown. Die knappe Ressource ist Hunt-Fortschritt.
  • Vor dem Upgrade bereits vorhandene Scores werden absichtlich nicht rückwirkend vergütet. Punkte entstehen ab V4.4 bei neuen Verbesserungen.

Die Werte sind unter Admin → RUNTIME bzw. per Defaults konfigurierbar. Die Canvas darf erweitert werden; eine Verkleinerung wird abgewiesen, sobald dadurch bestehende Pixel außerhalb der neuen Grenzen lägen. Nach einer Größenänderung sollten offene /place-Seiten neu geladen werden:

DEFAULT_PLACE_ENABLED=1
DEFAULT_PLACE_WIDTH=256
DEFAULT_PLACE_HEIGHT=256
DEFAULT_PLACE_POINTS_PER_SCORE=100
DEFAULT_PLACE_PIXEL_COST=100

Hosted Worker / Account-Zuordnung

Neural Place verwendet die bestehende identity_delegations-Zuordnung. Erzielt ein mit einem Konto verknüpfter Hosted Worker eine echte Score-Steigerung, werden die Place-Punkte atomar dem Owner-Wallet gutgeschrieben. Der Worker bleibt im Fortschritts-Audit als Quelle sichtbar.

Damit können eigene Browser-/CLI-Fortschritte und Fortschritte mehrerer verknüpfter Worker dasselbe Place-Wallet finanzieren, ohne Worker-Identitäten zusammenzulegen.

Konsistenz und Missbrauchsschutz

Die Punktevergabe läuft in derselben SQLite-Transaktion wie die persistierte Score-Verbesserung. Dadurch gilt:

  • kein Reward für verlorene / nicht verbessernde Tipps,
  • kein Reward für Lotterie-Tipps, die nicht ausgewertet wurden,
  • kein doppelter Reward bei Retry oder parallelem Request,
  • Score und Place-Punkte können nicht auseinanderlaufen,
  • Worker-Owner-Auflösung erfolgt zum Zeitpunkt der erfolgreichen Verbesserung.

Die globale Leinwand verwendet eine monotone revision. Jedes Placement schreibt den aktuellen Pixelzustand und zusätzlich einen unveränderlichen Event-Eintrag. Das ermöglicht Live-Synchronisierung und Audit-Historie.

Webinterface

/place ist die neue responsive Place-Oberfläche mit:

  • zoombarer und verschiebbarer globaler Canvas,
  • 32-Farben-Palette,
  • Pixel-Auswahl mit aktuellem Besitzer und Revision,
  • Wallet für Balance, erhaltene/ausgegebene Punkte und verfügbare Pixel,
  • Anzeige der verknüpften Worker,
  • Liste der letzten Hunt→Place-Vergütungen,
  • Live-Placement-Feed,
  • eigenem Place-WebSocket plus HTTP-Fallback-Synchronisierung,
  • Desktop-, Tablet- und Mobile-Layout.

Die Canvas kann öffentlich gelesen werden. Für das Setzen eines Pixels ist die normale kryptografische Neural-Hunt-Identität/JWT-Sitzung erforderlich.

Persistenz

Neue SQLite-Tabellen:

  • place_wallets Saldo, Lifetime-Einnahmen/-Ausgaben, Placement-Zähler,
  • place_state globale Canvas-Revision,
  • place_pixels aktueller Zustand jedes belegten Pixels,
  • place_pixel_events unveränderliche Placement-Historie,
  • place_progress_events Audit der Hunt→Place-Punktevergabe.

Die bestehende Admin-Profilbereinigung schützt ab V4.4 zusätzlich Identitäten mit verdientem Place-Wert oder Placements, damit ein Inaktivitäts-Cleanup keine erspielte Place-Ökonomie löscht.

Neue HTTP-/WebSocket-Endpunkte

GET  /api/public/place
GET  /api/public/place/changes?after=<revision>
GET  /api/place/ws
GET  /api/place/me            (User-JWT)
POST /api/place/pixel         (User-JWT)

Placement-Body:

{"x": 12, "y": 34, "color_index": 15}

Betrieb

Für große öffentliche Installationen kann die maximale Zahl der Place-WebSockets separat begrenzt werden:

WS_MAX_PLACE_CONNECTIONS=1500

Die Place-Leinwand bleibt vollständig in SQLite persistent; ein Server-Neustart verliert weder Wallets noch Canvas noch History.