picture showcasing the project

DynaWeek #7
Hackathon-Woche 2024

Jahr
2024
Projektart
Prototyping

Die DynaWeek

Jedes Jahr machen wir eine Woche lang interne Projekte zum Testen eigener Ideen und Erforschen neuer Technologien. Dabei steht der Spaß im Vordergrund und das wirtschaftliche muss dem Spieltrieb weichen. Fünf Tage lang machen wir einfach nur das was wir wollen. Hier ist eine kurze Zusammenstellung aus dem Jahr 2024.

Nodarium Store

Online-Repository für visuelle Nodes

Die ganze Story

Nodarium ist eine WebApp mit einem node-basierten Interface, das an Blender oder Houdini erinnert. Jede Node ist eine eigenständige WebAssembly-Datei, was das System extrem flexibel macht. Aktuell wird Nodarium hauptsächlich zur Erstellung prozeduraler 3D-Modelle von Pflanzen benutzt. Was dem Projekt bislang fehlte, war ein Online-Repository, in das Nutzer ihre eigenen Nodes hochladen können.


Im Rahmen der Dynaweek habe ich eine API entwickelt, mit der man Nodes speichern, laden und versionieren kann. Nutzer können ihre WASM-Dateien über die API hochladen, die diese in einer isolierten Umgebung ausführt. Dabei werden die Struktur, Inputs und Outputs der Nodes erfasst und gespeichert. Jede Node bekommt eine Versionierung basierend auf ihrem SHA256-Hash, was eine klare Nachverfolgung von Änderungen ermöglicht.


Für die Umsetzung in nur fünf Tagen habe ich auf Technologien gesetzt, die schnelles Arbeiten ermöglichen. Als Basis habe ich Deno gewählt, da es sehr guten Support für WebAssembly und Worker bietet. Für das Web-Framework fiel meine Wahl auf Hono wegen seiner Integration mit OpenAPI und Zod. Die Datenbankzugriffe habe ich mit Drizzle ORM umgesetzt und als Datenbank Postgres gewählt, da es robust und performant ist.


Rückblickend war es eine sehr gute Idee meine Requirements am Anfang zu definieren. Da ich so schneller und zielgerichteter Technologieentscheidungen treffen und Features priorisieren konnte.

Technologien

DENO
WEBASSEMBLY
OPENAPI
RUST
SVELTEKIT

Tätigkeiten

CODEN
DEVOPS

Spotimizer

Die spielerische Lösung für müheloses Spotify-Playlist-Management

Die ganze Story

Spotimizer ist eine Anwendung, die das Sortieren und Organisieren von Spotify-Playlists spielerisch gestaltet. Sie ist sofort einsatzbereit und bietet nahtlose Integration in die Spotify Web Oberfläche.


Trotz ihrer Einfachheit und guten Dokumentation hat die Spotify API einige Einschränkungen, wie die Synchronisation der Spotify Oberfläche mit den Daten der API. Woraus sehr viele Anfragen für kleinste Änderungen an die Spotify API resultieren. Technische Probleme mit WSL und unerwartete Unterbrechungen erschwerten ebenfalls die Arbeit.

Spotimizer bietet Funktionen wie die dynamische Anpassung von Rankings, durch Auswahl von zufälligen Songs für die Playlist-Sortierung.


Zukünftige Ziele sind die Verbesserung der Wiedergabe-Funktionalität und die Erweiterung um weitere Tools.

Technologien

SOLIDJS
SPOTIFY WEB-API

Tätigkeiten

CODEN

Kana

App-basiertes Kartenspiel zum Vermitteln der japanischen Mythen- und Kulturwelt

Die ganze Story

Kana ist ein Kartenspiel in App-Form, das Elemente aus den Genres Puzzle-Spiel, Card-Battler und Collectible Card Game (CCG) kombiniert.


Die Spielkarten selbst sind im Stil traditioneller japanischer Holzschnittkunst gestaltet. Jede Karte ist mit einer Audio-Datei verknüpft, die die korrekte Aussprache in der japanischen Sprache wiedergibt. Dieses Feature unterstützt die Spieler sowohl während der Kämpfe als auch beim Nachschlagen im Karten-Kompendium, wo alle freigeschalteten Karten gespeichert werden.

Technologien

GODOT
C#

Tätigkeiten

GAME DESIGN & DEVELOPMENT
ANIMATION (TWEENING)
SHADER & EFFEKTE
PROMPT ENGINEERING
BILDBEARBEITUNG
AUDIOBEARBEITUNG

2DRacer

2D Top-Down Racing Game und Streckeneditor

Die ganze Story

Das Projekt erforscht die Entwicklung eines dynamischen Rennspiels mit Flutter und der Flame-Engine, wobei grundlegende Gameplay-Mechaniken mit Konzepten der künstlichen Intelligenz kombiniert werden. Das Spiel ermöglicht es den Nutzern, Rennstrecken zu entwerfen, indem sie durch Klicken auf den Bildschirm Barrieren setzen, die den Streckenverlauf definieren. Sobald eine Strecke vollständig ist, kann ein vom Spieler gesteuertes Fahrzeug, das als Kreis dargestellt wird, die Strecke befahren.

Die Kollisionsabfrage zwischen dem Fahrzeug und den Streckenbarrieren ermöglicht Konsequenzen bei Fahrfehlern, die das Fahrzeugs zum Stillstand bringen. Zudem ist das Fahrzeug mit Sensoren ausgestattet, die die Entfernung zu den nächstgelegenen Hindernissen in verschiedenen Winkeln messen. Dies ermöglicht die Nutzung eines "Geistermodus", in dem das Fahrzeug die Strecke eigenständig befährt und versucht, basierend auf den Sensordaten eine zentrale Position zu halten.


Ein zentrales Ziel des Projekts ist es, Machine-Learning und neuronale Netze zu nutzen, um die Fahrfähigkeiten des Autos zu verbessern. Durch iteratives Training von KI-Modellen soll das System die Leistung des Fahrzeugs optimieren und mit jeder Generation schnellere Rundenzeiten erreichen. Dieser Ansatz ist vom Motorsport inspiriert und konzentriert sich darauf, wie Künstliche Intelligenz Rennlinien verfeinern und die Entscheidungsfindung in Hochgeschwindigkeitsszenarien verbessern kann.

Das Projekt verfolgt mehrere Zwecke. Es dient als praxisnahe Erkundung neuer Technologien und Programmiersprachen im Kontext der Spieleentwicklung. Darüber hinaus spiegelt es eine Faszination für Rennspiele und die Komplexität KI-gesteuerten Gameplays wider. Zudem knüpft das Projekt an ein allgemeines Interesse am Motorsport an, mit dem Ziel zu verstehen, wie KI-Modelle Rennstrategien und die Wettbewerbsleistung beeinflussen können.

Technologien

FLUTTER
DART
FLAME ENGINE

Tätigkeiten

GAME DESIGN
PHYSIKBERECHNUNGEN
NEURALE NETZWERKE
KI

Mythologischer Deckbuilding-Brawler

Ein taktisches Kartenspiel mit KI-freundlicher Effektbeschreibungssprache

Das Projekt

Eine formale Sprache ermöglicht KIs, Karteneffekte für ein Taktik-Kartenspiel zu beschreiben. Die Aufgabe 'Erstelle eine Zeus-Karte' führt zu Ausdrücken wie '@Awake[Enemy]{AreaEffect}(1)[area:All]' - ein passender Donnereffekt in maschinenlesbarer Form.


Ein Parser übersetzt diese Ausdrücke in spielbare Mechaniken. Die KI-Pipeline generiert neben den Effekten auch passende Illustrationen. So entstehen komplette Karten allein aus thematischen Vorgaben.


Das Gameplay verbindet Deckbuilding mit taktischer Positionierung. Die generierten Karten fügen sich nahtlos ins Spielgeschehen ein - vom zerstörerischen Blitz des Zeus bis zu den Verwandlungskünsten des Proteus.

Technologien

C#
UNITY
KI-ORIENTIERTE DSL
STABLE DIFFUSION
EIGENER AUSDRUCKSPARSER

Tätigkeiten

SPIELDESIGN
EFFEKTSPRACHEN-DESIGN
KI-PIPELINE-ENTWICKLUNG
PARSER-ENTWICKLUNG
KARTENBALANCING

ChekUrDefence: Multiplayer

Multiplayer-Update für ChekUrDefence

Das Projekt

Das Ziel war es, das in der DynaWeek 2023 entwickelte Tower-Defense-Spiel "ChekUrDefence" auf die neueste Version von Godot und .NET zu migrieren und eine Multiplayer-Funktion hinzuzufügen.


Für die P2P-Kommunikation zwischen 2 Spielern wurden verschiedene Möglichkeiten evaluiert und schlussendlich der Entschluss für "NAT Hole-Punching" getroffen. Dadurch muss beim Host des Spiels weder UPNP aktiv sein, noch muss manuell ein Port auf dem Router freigeschaltet und zum Computer des Spielers weitergeleitet werden.


NAT-Traversal mit Hole-Punching basiert darauf, dass Verbindungen aus einem Netzwerk hinter einem NAT-Router für eingehende Kommunikation einen meist dynamischen, temporären Port zugewiesen bekommen.
Um sich dies für eine direkte P2P-Kommunikation zwischen zwei Spielern zunutze zu machen wurde ein Signaling-Server in C# entwickelt, der öffentlich im Internet erreichbar ist und bei dem sich das Spiel nach dem Start mit einem zufälligen "Join Code" registriert, so dass der Signaling-Server die externe IP und den Rückkanal-Port zum Code speichern kann.
Der Code wird dem Spieler auf dem Startbildschirm angezeigt und kann so leicht weitergegeben werden. Ein zweiter Spieler kann mit Hilfe dieses Codes über das "Join"-Menü ebenfalls eine Verbindung zum Signaling-Server aufbauen, so dass dieser die IPs und dynamischen Ports beider Spieler mit demselben Code kennt und an beide laufenden Spiele kommunizieren kann. Danach können beide Spiele direkt über IP und Port miteinander kommunizieren.


Leider reichte die Zeit am Ende nicht mehr um die eigentliche Multiplayer-Funktionalität im Spiel umzusetzen.

Technologien

C#
GODOT 4.3
TCP / IP
NAT

Tätigkeiten

C# ENTWICKLUNG
PROZEDURALE 2D-ANIMATION
P2P MULTIPLAYER UMSETZUNG

Android Notizen App mit integriertem Editor

Eine benutzerfreundliche App zum Kombinieren von Text und Checklisten

Das Projekt

Unser Ziel war die Entwicklung einer Android Notizen App, die besonderen Wert auf Usability legt. Die App ermöglicht, Text und Checklisten innerhalb derselben Notiz mit einem intuitiven WYSIWYG-Editor zu kombinieren. Notizen werden im Hintergrund als Markdown gespeichert, was eine einfache Synchronisation und Bearbeitung auf verschiedenen Geräten erlaubt.


Viele bestehende Notizen-Apps bieten keine Möglichkeit, Text und Checklisten flexibel in einer Notiz zu kombinieren. Nutzer müssen sich oft zwischen reinen Textnotizen und Checklisten entscheiden. Unsere App schließt genau diese Lücke.


Zur Umsetzung haben wir Kotlin und Jetpack Compose genutzt, um eine spezialisierte, performante Android-App zu entwickeln. Dabei zeigte sich, dass das Kombinieren mehrerer Widgets innerhalb einer scrollbaren Activity herausfordernd ist. Zudem konnten wir feststellen, dass der Text-Cursor derzeit nicht reibungslos zwischen verschiedenen Elementen bewegt werden kann.

Technologien

KOTLIN
JETPACK COMPOSE
MARKDOWN-SPEICHERUNG

Tätigkeiten

APP-ENTWICKLUNG
USABILITY-DESIGN
IMPLEMENTIERUNG WYSIWYG-EDITOR
WIDGET-INTEGRATION

SPRICH MIT UNS
ÜBER DEINE IDEE

Lass uns reden, wie wir helfen können
Norman Wenk
Geschäftsführer
Durch das Absenden dieses Formulars stimme ich der Verarbeitung der von mir bereitgestellten personenbezogenen Daten durch die dynabase GmbH gemäß der Datenschutzerklärung zu.

SPRICH MIT UNS
ÜBER DEINE IDEE