Från labbet

Large Language Adventure

Går det att skapa ett enkelt peka-och-klicka-spel som med hjälp av generativ AI kan ändra utseende och story varje gång det spelas? Under Prototypveckan 2024 ville ett team undersöka just detta.

Tech used

  • React
  • Vite
  • JavaScript
  • OpenAI API
  • Flux Schnell
  • Grounded SAM
  • ElevenLabs

Press to view video

Bakgrund

Från rollspelsfebern på 1980-talet blev rent textbaserade äventyrsspel vanliga när datorerna flyttade in i hemmen. Under 1990-talet utvecklades dessa till grafiska så kallade peka-och-klicka-spel, med spelhuset Sierra som den stora marknadsledaren.

Prototypteamet ville utforska möjligheten att använda stora språkmodeller (LLM) och bildgenerering för att skapa unika äventyr i den här genren. Målet var att utveckla helt genererade upplevelser som skulle vara särskiljande och annorlunda varje gång en spelare tryckte på play, med så lite mänskligt inslag som möjligt i berättelsen och pusslen.

Processen och Utmaningar

Med ett stort team på sju personer blev det tydligt att arbetet behövde delas upp på ett smart sätt för att bli så effektivt som möjligt. Halva teamet fokuserade på att generera manus, medan den andra halvan arbetade med att skapa spel utifrån dessa.

Utgångspunkten var att ha flera scener som spelaren kunde ta sig igenom för att klara spelet. Baserat på detta koncept valdes en enkel JSON-struktur (JavaScript Object Notation) med en lista av scener, där varje scen innehåller olika objekt och uppgifter.

Manusgenereringen handlade främst om att utveckla prompttekniken för olika AI-modeller. Målsättningen var att generera speldata i rätt format utifrån en enda mening som input, till exempel:

”Ett äventyrsspel med en piratbesättning som letar efter skatt.”

Utifrån det kunde teamet skapa spelets struktur och de pussel som spelaren behövde lösa.

För att skapa grafik byggdes en pipeline som tog ett spelmanus med dess scener och objekt som indata. Med hjälp av bildgenerering och bildsegmenteringsmodeller skapades bilder som innehöll de korrekta objekten och deras positioner. Dessa kunde därefter sparas i speldata-strukturen.

För att göra upplevelsen ännu mer fördjupande lades ett sista steg till i genereringsprocessen: att skapa ljud för beskrivningar och texter så att spelet fick en berättarröst.

Till slut fanns en fungerande webbapplikation på plats, där allt innehåll, grafik och ljud helt genererats av AI.

Den största utmaningen under projektet var att få AI-modellerna att bygga sammanhängande berättelser och lösningar för alla pussel. Teamet testade flera tillvägagångssätt för detta. Snabbt insåg de att det var svårt att jobba med stora, komplexa prompter. Därför byggde de processen mer som en pipeline med flera steg där varje specifik del av spelets innehåll byggdes som en pusselbit.

Denna metod löste problemet med att få rätt format, men gjorde det svårare att garantera att alla delar passade ihop till en sammanhängande spelupplevelse i slutändan.

Slutresultat & lärdomar

På kort tid lyckades teamet realisera sin ursprungliga idé – spelet fungerar och ger nästan alltid spelaren ett leende på läpparna efter att ha klarat den korta utmaningen.

Den viktigaste lärdomen var dock att även om generativ AI möjliggör snabb utveckling, är resultaten inte alltid förutsägbara och kan ofta bli osammanhängande eller udda. För ett spel som detta är det en del av charmen, men i många andra tillämpningar kan denna oförutsägbarhet vara förödande och svår att hantera.

Framtida Åtgärder

Berättelsen slutar med en inköpslista för de komponenter som krävs för att bygga en hårdvaruprodukt. Där kommer ytterligare en CTF att gömmas, vilket är tänkt att utgöra grunden för nästa kapitel i spelets utveckling. Sagan fortsätter.

Testa spelet här: https://lla.prototyp.se/