Artikel

Fred der neue NPC


Grundüberlegung:
• Bei Brett u. Kartenspielen fehlt oft noch eine kleine nette Idee wie man die Zeit im Auge behält.
• Bei PnP-Runden fehlt oft noch ein Hilfsmittel zur Unterstützung des Meisters, zum einzugreifen ohne den Spielfluss zu stören.
Marktanalyse:
• Eine Soundmaschiene vorzubereiten dauert zu lange und braucht zu viel Hardware.
• Viele kleine Geräte, (Eieruhr, stimmige Ablenkung) brauchten zu viel Platz.
Fazit:
Gebraucht wird ein Eigenständiges Gerät mit Anzeige für derzeitige Spieldauer, einstellbaren Timer, Würfel Funktion, Zufallsauswahl für JA/NEIN. Also selber machen ist die Lösung...



"Appetit kommt beim essen"

So auch dieser Anfangsgedanke des Projektes. Es ist Halloween, überall Deckozeugs und Naschkram in bunten Verpackungen. Ein Fest für den Zahnarzt und dem Geldbeutel. ;-) Da sah ich eine Süßzeug -Verpackung in einem transparenten Schädel. Hm gab es da nicht ein Kinofilm mit einem Kristallschädel der so leuchten konnte? Nachdem ich den Schädel von seinem Inhalt befreit hatte und den nun schön leeren Freiraum begutachten konnte ging es los...

Wer es nicht witzig wenn "er" Augen hätte. So 2 LEDs ach nein, die können ja nicht richtig "Zwinkern". Also LCDs. ;-) Mit Lichtschranke oder Bewegungsmelder? Ne zu eingeschränkt, lieber mit einer Fernbedienung. Dann noch ein wenig Audio Unterstützung für die Emersion. Ein wenig Grundbeleuchtung wer auch noch gut. Jetzt lassen wir mal die Augen zufällig Animieren und hin und wieder ein paar Audiofiles abspielen. Fertig ist der Deckoschädel 2.0.

Ohh... jetzt fehlen nur noch ein paar Einzelheiten und wir haben hier ein NPC für den nächsten Pen & Paper Spieleabend.
Gesagt, getan...


Die Grundprogrammierung...

...wird als nächstes um Zufallsereignisse (Sprüche, Animationen, Lichtblinken) und Funktionen so wie: Würfeln (W6/W20/W100), Spielzeitanzeige, Timer, Magische 8 und Abruf von Sprüchen die per Fernbedienung ausgelöst werden können erweitert. Nun noch eine wichtige "du musst was Trinken" und "mach mal eine Pause" Erinnerung alle 15 Minuten bzw. 1 Stunde und der NPC ist geboren. Jetzt nur noch die Kinderkrankheiten: für eine bessere Haptik, Menüführung für den Timer und die jeweiligen Spruchauswahlen.
Am Display (Oled LCD LED Module 128X64) merk man schnell wo die Grenzen liegen. Vor allem wenn man mit "Animation" (schnellen Bildwechsel) was machen will. Entweder flackern, ruckeln oder eine aufwendige partielle Löschung. Ich hab mich für eine Mischung aus ersterem und letztem Endschieden.
Und dann immer dieses leidige Thema mit dem Platz. Der Arduino Nano hat halt nur 30 kilobyte Flashspeicher. Für Treiber von Display, dem DFPlayer (Mini MP3-Player), und den IO´s für Beleuchtung/Fernbedienung, bleibt da nicht mehr viel übrig. Immer wieder muss hier und da was gekürzt oder ganz gestrichen werden, damit der Betrieb reibungslos läuft. Denn Platz Probleme sieht man erst bei Laufzeit ;-). Da passieren dann komische Dinge wenn die Bits nicht richtig neu gesetzt werden können. Aber das wird jetzt zu Technisch. Nun wird es Zeit die Audiodateien zu erstellen und diese in einem dynamischen System auslesen zu lassen. Also ein paar Basistexte erstellen, einsprechen, bearbeiten, umwandeln und ab in den Schädel.
Zack da ist er nun der sprechende, zwinkernde Kristallschädel namens Fred ( [F]recher [r]est [e]ines [D]ickschädels).
Wenn mir oder dem Leser ;-) (bitte in den Discord: Für Fred: .... wenn er... macht) noch mehr Sprüche/Geräusche für die einzelnen Sprachereignisse einfallen, brauch ich diese nur in die vordefinierten Ordner legen und der Sprachschatz von Fred wird ohne irgendwelche neu Programmierung erweitert.

Zusammengefasst haben wir jetzt einen Pen & Paper NPC der:
- zufällig Sprüche kloppt [derzeit: 14]
- Geräusche (husten, niesen...) macht [derzeit: 24]
- zufällig die Augen Animiert. [derzeit: 12]

Und Funktionen bietet wie:
- Würfeln (W6/W20/W100) + Würfelgeräusch
- Anzeige der letzten 5 Würfe
- Anzeige der gesamten Spielzeit
- Schnell ein Timer per Menü erstellen + Zufallskommentar [derzeit: 8]
- Laut/leiste per Menü
- Ihn sprechen lassen per Fernbedienung + Zk. [derzeit: 82]
(Ja/Nein Erfolg/Misserf. Nett/Böse Beleidigungen)
- Eine du must was Trinken Erinnerung alle 15 Minuten + Zk. [derzeit: 7]
- Eine Pausen Erinnerung nach 1 Stunde + Zk. [derzeit: 8]
- UND ein Intro...

Kommen wir zum Schuss noch zum zeitlichem Aufwand.
[25.10.22 - 31.10.22] Die Basis-Programmierung ging schnell.
[01.11.22 - 14.11.22] Die Basis-Animation von Menü-Übergang und Augenbewegung ging auch gut voran.
[15.11.22 - 28.11.22] Die "Kinderkrankheiten" haben dann so ziemlich die meiste Zeit verbraucht.
[05.12.22 - 09.12.22] Zuletzt noch die Audiobearbeitung und dieser Artikel.
Alles in einem ist Fred ein Projekt, das gut einen Monat beansprucht hat, bei ca. 4-6 Stunden am Tag.

Preislich war es auch noch im Rahmen.
Das Gehäuse war mit knapp 5€ recht günstig. Der Arduino Nano 7€, der DFPlayer 4€, die Fernbedienung 3€ und eine mini-SD-Karte 7€. Die Displays haben mit ca. 15€ am meisten gekostet. Sowas wie Lautsprecher, Dioden, Kabel... hatte ich noch da. Alles zusammen war somit noch unter 45€. Für die Stromversorgung wird nur noch eine USB-Powerbank und ein USB-C Kabel benötigt.

Die Funktionen der Fernbedienung:
_______________________________________________________
1: Würfelwurf W6
2: Würfelwurf W20
3: Würfelwurf W100
4: Menü -> Lautstärke (Bedienung mit ^-Hoch v-Runter)
5: Spezial Anzeige der Credits
6: Anzeige -> Die letzten 5 Würfelergebnisse
7: Menü -> Timer *I (Bedienung mit ^-Hoch v-Runter)
8: Wechsel Aggro-Modus ON/OFF
9: Anzeige -> Aktuelle Spielzeit (Abbruch des Intros)
10: Menü -> Erfolg? (Bedienung mit ^-Hoch v-Runter)
12: Menü -> Freundlich? (Bedienung mit ^-Hoch v-Runter)
13: Menü -> Ja? (Bedienung mit ^-Hoch v-Runter)
14: Zufällige Binsenweisheit | Aggro-Modus Beleidigung
15: Bedienung mit ^-Hoch
16: Zufälliges ja/nein | Aggro-Modus 70% Nein
17: Spezial Augen links
18: Bedienung mit v-Runter
19: Spezial Augen rechts


*I In der Timerfunktion: Bedienung: ^-Hoch=Pause | v-Runter= Weiter | 4: Timer Stop

Meeple-Blau 09. December 2022 341 Gelesen Drucken