Files
yourpart3/backend/docs/falukant-character-appearance.md
Torsten Schulz (local) bc7a0cb67a
All checks were successful
Deploy to production / deploy (push) Successful in 2m24s
Speichere individuelle Haar- und Augenfarben je Charakter
2026-11-04 16:54:33 +01:00

2.1 KiB

Dauerhafte Charakterfarben

falukant_data.character enthält hair_color und eye_color als VARCHAR(7). Die Sequelize- und API-Felder heißen hairColor und eyeColor. Erlaubt sind sechsstellige Hex-Farben einschließlich #, z. B. #69432d.

Migration: 20261104000001-add-character-appearance.cjs. Im Backend-Verzeichnis mit npm run db:migrate ausführen, bevor der neue Backend-Code startet. Die Migration wird hier nur in einer isolierten Testdatenbank ausgeführt; die produktive Datenbank wird nicht verändert.

Die Migration vergibt für bestehende Charaktere einmalig Farben aus einer Palette mit sieben Haar- und sechs Augenfarben. Bereits vorhandene Werte bleiben erhalten, auch beim erneuten Ausführen der Migration. Ein separater DB-Trigger vergibt Farben für neue Charaktere, einschließlich roher INSERTs des Rust-Daemons für NPCs und Neugeborene. NULL-Werte bei Updates behalten die bisherige Farbe. Andere explizite, gültige Hex-Farben sind ebenfalls zulässig. Die Farben ändern sich beim Altern nicht automatisch. Vererbung und Ergrauen sind noch nicht implementiert; die aktuelle Palette ist eine Spielverteilung.

Familie (Partner, Kinder, Liebschaften), Taufliste, Direktoren sowie politische und kirchliche Amtsträger liefern die Farben an die vorhandene 3D-Anzeige. Die Spielerdaten und das Dashboard liefern sie ebenfalls. Die 3D-Komponenten verwenden die gespeicherten Farben nur in den markierten Haar-/Irisflächen. Unmarkierte Altersmodelle und die 2D-Porträts behalten ihre Originaltexturen. Der Modell-Editor bleibt eine Vorschau ohne Schreibzugriff auf Charakterdaten.

Prüfung mit einer ausdrücklich bereitgestellten, wegwerfbaren Datenbank:

TEST_DATABASE_URL='postgresql://…/yourpart_development_test' \
  node --test tools/characterAppearance.test.mjs

Der Integrationstest prüft Bestandsdaten, wiederholte und teilweise manuell vorbereitete Migrationen, beide DB-Trigger zusammen, rohe INSERTs, Sequelize-Erstellung/-Updates, Farbvalidierung und Rollback. Er verwirft das Schema falukant_data ausschließlich in yourpart_development_test.