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:8080hanterar 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
usesCleartextTrafficoch 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.
