Teknisk arkitektur

GrammarStrike är en hybridapp som består av följande komponenter:

  • WebView-gränssnitt: Spelgränssnittet är byggt i HTML och laddas i en WebView. HTML-filen är en nedladdad WordWise-fil som har anpassats för att fungera som appens UI.
  • Lokal språkmodell: En Gemma 3 1B int4-modell körs på enheten via MediaPipe för att bedöma meningsbyggnad. Modellen paketeras i APK:n och laddas vid första starten, vilket säkerställer offline-funktionalitet.
  • WebSocket-relay: En egenutvecklad relay på ws://152.42.141.196:8080 hanterar synkronisering mellan spelare. Relay-adressen är inbakad i appen, och trafiken skickas i klartext för enkelhet i prototypfasen.
  • Javascript-gränssnitt: HTML-gränssnittet kommunicerar med Android-appen via ett namngivet Javascript-gränssnitt (Android.submitAnswer) för att skicka spelarnas svar.

Funktioner

  • Multiplayer: Spelare kan tävla mot varandra i realtid, med stöd för spelledare och gästroller.
  • Timer och auto-submit: En timer i HTML-gränssnittet säkerställer att spelarna inte fastnar, och svar skickas automatiskt när tiden är ute.
  • Lokal bedömning: Meningarna bedöms direkt på enheten av språkmodellen, vilket minimerar latens och säkerställer snabb feedback.
  • Komplett UI: Appen har ett eget färgsystem, telefonram, lobby och resultatvy. HTML-filen är ett komplett skal på cirka 580 KB, inte en tom WebView.

Felsäkerhet och robusthet

  • Tyst läge vid modellfel: Om språkmodellen inte startar, aktiveras ett tyst läge för att säkerställa att appen förblir funktionell.
  • Debug-disciplin: Det aktuella bygget är en debug-version med usesCleartextTraffic och relay på port 8080 utan TLS. Detta är en medveten avgränsning för prototypfasen.

Tekniska detaljer

  • Modellpaketering: Modellen på 555 MB inkluderas i APK:n, med stöd för fyra ABI:er och min SDK 26. Detta säkerställer att appen fungerar direkt efter installation, utan nedladdning.
  • Meningsbank: Appen använder en meningsbank med 50 engelska meningar för att generera uppgifter.