Tekniker och metoder

ALKdevs realtidssystem bygger på:

  • WebSockets: För direkt kommunikation mellan klienter och server, med stöd för snabba uppdateringar och låg overhead.
  • Firebase Realtime Database: För synkronisering av data mellan flera användare i realtid, med inbyggt stöd för offline-läge och automatisk synkronisering vid återanslutning.
  • Egenutvecklade relay-protokoll: För att hantera multiplayer-interaktioner, som i GrammarStrike där spelare synkas via en relay på ws://152.42.141.196:8080.
  • Anonym inloggning och djuplänkar: För att förenkla användarflöden, t.ex. i Ordvis där spelare bjuds in via länkar eller matchkoder.

Exempel på lösningar

Multiplayer-spel

  • GrammarStrike: Ett flerspelarspel där spelare tävlar i meningsbyggnad. Spelet använder en WebSocket-relay för att synkronisera spelarnas svar och en lokal språkmodell (MediaPipe) för att bedöma meningarna. Relay-adressen är inbakad i appen, och trafiken skickas i klartext för enkelhet i prototypfasen.
  • Ordvis: Ett tvåspelarspel där spelare skapar meningar utifrån givna ord. En lokal språkmodell (Qwen) dömer meningarna, medan Firebase Realtime Database hanterar realtidssynkronisering mellan spelare. Appen stöder anonym inloggning och djuplänkar för att bjuda in motspelare.

Synkronisering och offline-stöd

  • Firebase Realtime Database: Används för att synkronisera matchdata mellan spelare i Ordvis. Databasen hanterar automatiskt offline-läge och synkroniserar data när anslutningen återupprättas.
  • WebSocket-relay: I GrammarStrike används en egenutvecklad relay för att hantera kommunikation mellan spelare. Relayn stöder kommandon som create, join, answer, deck, start och verdict för att hantera spelstatus.

Felsäkerhet och robusthet

  • Tysta fel: System designas för att undvika gissningar vid osäker indata eller frånkoppling. Exempelvis undviker prototypen att ge rekommendationer om bild- eller textdata är ofullständig.
  • Reservlösningar: Om en lokal språkmodell inte startar (t.ex. Qwen i Ordvis), aktiveras en demo-AI för att säkerställa att appen förblir funktionell.
  • Timer och vakthundar: För att hantera tidsgränser och automatiska inlämningar, som i GrammarStrike där en timer i HTML-gränssnittet säkerställer att spelarna inte fastnar.

Säkerhet och infrastruktur

  • Brandväggshantering: Stängda portar som standard på VPS-miljöer, med undantag för nödvändig trafik (t.ex. SSH på port 22 och Filebrowser på port 8080).
  • Hemlighetshantering: Nycklar och tokens lagras i Bitwarden för att undvika hårdkodade värden i källkod.