Teknisk arkitektur

Ordvis är en Android-app byggd med modern arkitektur och följande komponenter:

  • Kotlin och Jetpack Compose: Appen är skriven i Kotlin och använder Jetpack Compose för gränssnittet.
  • Lagerbaserad design: Koden är strukturerad i ui, domain, data.firebase, data.model, llm och di för tydlig separation av ansvar.
  • Hilt: För dependency injection och hantering av grafstrukturer.
  • Firebase Realtime Database: För realtidssynkronisering av matchdata mellan spelare.
  • Lokal språkmodell: En Qwen-modell körs på enheten via LiteRT för att bedöma meningarna. Modellen laddas ned och valideras vid första starten, vilket kräver cirka 1,6 GB diskutrymme.

Funktioner

  • Tvåspelarläge: Spelare skapar meningar utifrån 199 givna ord, och en lokal språkmodell (kallad Enlil i gränssnittet) dömer meningarna till poäng och korta omdömen.
  • Realtidssynkronisering: Matchen synkas via Firebase Realtime Database, vilket möjliggör att spelare kan gå med via en länk eller matchkod.
  • Anonym inloggning: Spelare loggar in anonymt, och spelledaren skapar matchen medan den andra spelaren ansluter via en djuplänk (https://ordvis-6a954.web.app/join eller ordvis://join).
  • Demo-AI: Om den lokala språkmodellen inte startar, aktiveras en demo-AI för att säkerställa att appen förblir funktionell.
  • Spelregler som tillstånd: Appen hanterar faser, timer, vakthundar, lås av inlämning och poäng per spelare. Ord återanvänds inte inom samma match.

Felsäkerhet och användarupplevelse

  • Reservlösningar: Om Qwen-modellen inte startar, aktiveras en demo-AI för att säkerställa att appen förblir funktionell.
  • Felmeddelanden på svenska: Tydliga felmeddelanden visas för användaren vid problem, t.ex. saknad match, nätverksfel eller om modellen inte startar.
  • Offline-stöd: Firebase Realtime Database hanterar offline-läge och synkroniserar data automatiskt när anslutningen återupprättas.

Tekniska detaljer

  • Modelldistribution: Modellen laddas ned och valideras vid första starten, vilket kräver cirka 1,6 GB diskutrymme.
  • Mutex och synkronisering: Säker hantering av samtidiga anrop till språkmodellen för att undvika konflikter.
  • Strukturerad dom: Språkmodellens utdata omvandlas till användarvänliga format, t.ex. poäng och omdömen.