Ich habe eine Website erstellt, auf der man klassische MAME-Spiele im Web spielen kann.
Es scheint viele Websites zu geben, auf denen man sie einfach im Web spielen kann, aber keine, die Netzwerkspiel im Web reibungslos unterstützt.
Deshalb habe ich sie mit Fokus auf Netzwerkspiel gebaut.
Zunächst lädt ein Nutzer eine MAME-ROM hoch. Im Admin-Bereich wird geprüft, ob es Probleme mit der ROM gibt; nach Freigabe wird sie den Nutzern angezeigt.
Wenn ein Spiel 1P und 2P unterstützt, habe ich es so umgesetzt, dass Netzwerkspiel unabhängig von der Art des Spiels möglich ist.
Backend: FastAPI, Radis, postgresql, wss, likvekit
Frontend: react + vite, tailwindCss
Anfangs habe ich beim Netzwerkspiel für jeden Teilnehmer einen eigenen Emulator im Web gestartet und nur die Tastatureingaben der Nutzer übertragen. Dabei traten jedoch gravierende Synchronisationsprobleme auf. Da nur die Tasteneingaben gegenseitig übertragen wurden, ließen sich Dinge wie Charakterauswahl oder Unterschiede bei den Ladezeiten der Emulatoren einfach nicht so synchronisieren, dass das Spiel sauber lief. Daher kam ich auf die Idee, beim Netzwerkspiel den gesamten Bildschirm an den Browser des Teilnehmers zu übertragen. Ich dachte an LiveKit und habe in diesem Zustand nur die Tastatureingaben per WebSocket untereinander austauschen lassen.
Erst dann war die Synchronisation vollständig gelöst, sodass Netzwerkspiele – egal ob Shooter oder Fighting Game – ohne Probleme möglich wurden.
Das Problem ist allerdings der Netzwerk-Traffic.
Damit man es unkompliziert ausprobieren kann, habe ich außer dem eigentlichen Spielen keine weiteren Funktionen eingebaut.
Ich würde mich freuen, wenn Sie es sich einmal ansehen und mir Verbesserungsvorschläge mitteilen.
Noch keine Kommentare.