Från labbet

Spelutveckling med PICO-8

Under årets första Prototypvecka tog fem team sig an uppgiften att utveckla spel med fantasy-konsolen och spelmotorn PICO-8.

Tech used

  • PICO-8
  • Lua

Prototypveckan – vårt sätt att ge utlopp för teknisk innovation

Varje år avsätter vi två veckor för vårt interna teambuilding- och hackaton-koncept; Prototypveckan. En i januari och en i september. Då samlas hela vårt team för att tillsammans bryta ny mark inom digital produktutveckling. Och för att ha väldigt kul på vägen.

Reglerna är enkla! Ett eller några tekniska tekniska teman väljs ut som våra medarbetare får läsa in sig på och utifrån detta tänka ut en idé eller ett koncept som de vill testa. Helt enkelt alltså skapa en prototyp eller Proof-of-Concept på. Veckan avslutas med en demo där varje team får visa vad de skapat och dela med sig av de lärdomar/utmaningar de tillförskaffat sig genom att utveckla med den valda tekniken.

Fantasy-konsolen och spelmotorn PICO-8

Under årets första Prototypvecka hade medgrundare och utvecklare Tobias Rundbom valt ut två teman och tekniska ramverk som medarbetarna fick välja mellan. Ett av dem var att utveckla spel med PICO-8.

PICO-8 är en fantasy-konsol och spelmotor för att skapa, dela och spela småspel. En fantasy-konsol är som en vanlig konsol utan hårdvara och kan liknas vid en retro-emulator – fast för en maskin som aldrig funnits. PICO kommer med en spelmotor och en utvecklingsmiljö för att skapa och redigera kod, musik, ljud, sprites, kartor direkt i konsolen. Man kan helt enkelt skapa ett helt spel utan att lämna utvecklingsmiljön.

Så här fungerar PICO-8


Fem team tog sig an spelmotorn PICO-8 och från det kom det lika många häftiga spelidéer!

Sushi Arrival

Under idégenereringsfasen började teamet bli hungriga och kom att tänka på sushi. Det var så Sushi Arrival föddes. Vissa bra idéer kommer på tom mage.

Team:
Johannes Karlsson, Fredrik Hasselgren, Sanna Frese, Villiam Poignant

Idéen

Teamet kom fram till några grundläggande saker de ville åstadkomma med spelet. De ville skapa söta sushi-sprites och ge spelaren särskilda sekvenser av sushi att samla på. Men framförallt var ett av målen att ha kul och upptäcka så mycket som möjligt av utvecklingsmiljön.

Resultatet

Med fem dagar och ingen erfarenhet av PICO-8 inom teamet gick den första tiden åt till att utforska utvecklingsmiljön. Rita sprites, flytta runt saker med controllern och helt enkelt få en känsla av vad som kan göras. Det gick ganska fort att göra framsteg inom plattformen och ganska tätt inpå startskottet så började teamet att testa musik, animationer och olika stadier (game states) för spelet, såsom; meny, nivåer och en skärm för game over.

Med ett väldigt stramt scope lyckades teamet ha uppe ett spel som fungerade i konsolen ganska fort. Och på demodagen kunde de visa upp ett minispel som kom att kallas Sushi Arrival. Spelet börjar med att du som spelare får memorera en sekvens av sushibitar som du ska samla på dig från ett löpande band.

Det går att märka i spelet att teamet menar allvar när det kommer till sushi. För vid minsta fel är det game over direkt!

Lärdomar/insikter

Överlag är teamets gemensamma åsikt att utvecklingsmiljön var trevlig att använda. Något de märkte gjorde saker och ting enklare var att använda ett bibliotek för “Transbinding javascript” till PICO-8.

Boss rush

Boss rush är ett spel byggt på konceptet av att David möter Goliat och framförallt inspirerat av (och en homage till) spelet Dark Souls som går att spela på de flesta av de senaste konsolerna.

Team:
Joakim Unge, Erik Lindgren

Idéen

Idéen, tillika planen, var grandios! De skulle skapa olika banor med olika, bra mycket större bossar, som spelaren skulle fightas mot med en liten karaktär. Trots att spelarens karaktär är mindre och har svagare slag skulle man kunna slå bossen genom att vara snabbare. Och använda sin superkraft; rush.

Resultatet

Snabbt började teamet inse att fem dagar är kort om tid för fullfölja idéen med ett team som helt saknade erfarenhet inom spelutveckling. De landade i att satsa allt på att utveckla en fight istället för flera.

Som spelare får du en liten karaktär som ska möta bossen Protodemon. Protodemon är stark och kan förinta din karaktär med ett enda slag – men är relativt långsam i jämförelse med spelarens karaktär. Spelarens karaktär får två mätare, en som visar livet och en som visar hur mycket kraft som finns kvar för att rusha. Något du kan göra för att undvika Protodemon och för att hitta ytor att slå demonen på utan att demonen hinner nå dig.

Och efter demon konkluderade både team och publik att spelet är till för de som vill ha en rejäl utmaning. Med andra ord, likt den gamla skolans spel, så var det väldigt svårt att övervinna Protodemon. 😄

Protodemon Bilden ovan: Fighten går ut på att vinna över karaktären Protodemon, den första och enda bossen i Boss rush.

Prova att spela! Styr med piltangenterna och genom att använda "X" och "Z".



Lärdomar/insikter

Trots att programmeringsspråket Lua ver helt nytt för teamet gick utvecklingen väldigt smidigt. Och sammanfattningsvis är konsensus bland teamet att PICO-8 kommer med mer eller mindre allt du behöver för att utveckla ditt egna spel. Särskilt nöjda var de med de inbyggda redigerarna för ljud/musik och grafik som fungerade utmärkt och enbart krävde någon enstaka timme av tutorial och dokumentation för att komma igång.

Den inbyggda kodhanteraren däremot ansågs bristfällig och istället valde teamet att använda sig av de kodredigerare de själva föredrar.

Att skapa ett fightingspel som Boss rush krävde också mycket animationer – och att rita alla dessa sprites var väldigt tidskonsumerande. Kodmässigt är det inte alls ett komplicerat spel men att få till kollisionsdetektering och timingen på animationerna krävde sin tankeverksamhet.

Top down adventure

Teamet bakom Top down adventure har bägge spelutveckling i bagaget från universitetstiden – så för dem var spelutveckling det självklara valet på Prototypveckan. Top down adventure är ett äventyrsspel med olika nivåer där spelaren måste lösa ett pussel eller övervinna ett särskilt hinder för att ta sig vidare till nästa nivå. En “ripoff” av det legendariska spelet Zelda som de själva beskriver det.

Team:
Ismael Haddad, Omar Garcia

Idéen

Grundidéen för spelet var att skapa ett sorts äventyrsspel baserat på principer från Zelda och Pokémon. Tanken var att skapa ett spel där huvudkaraktären finner sig själv utanför ingången till en grotta och när spelaren väl sätter sin fot innanför grottan påbörjas ett äventyr med olika nivåer.

Resultatet

På kort tid kom Ismael och Omar väldigt långt. Kanske har de sin utveckling inom spelerfarenhet att tacka för det. De lyckades skapa 7 olika rum/nivåer – i en oändlig loop.

Startskärmen: Spelet börjar med att du som spelare presenteras för spelet och får välja vilken musik som ska ackompanjera ditt äventyr. Startskärm

Rum 1: Det första rummet är när spelaren befinner sig utanför ingången till grottan. Och redan där möts av ett första hinder i form av ett spöke som jagar karaktären. En sekvens som skapades genom att använda den kända algoritmen BFS.

För spelaren etableras också att den har tre liv att luta sig på. Om spöket rör karaktären mister man ett hjärta och rummet börjar om igen. När alla tre liv är förlorade är det game over.

Utöver Zelda och Pokémon kan man även se att teamet har hittat lite inspiration i ett annat klassiskt spel. 😄 Pico-8-Rum-1

Rum 2: I det första rummet inuti grottan möts spelaren av eld som rör sig runt på spelarens yta. För att komma till nästa nivå behöver man ta sig förbi all eld utan att röra den och in genom nästa ingång. Pico-8-Rum-2

Rum 3: I det här rummet ska spelaren ta sig förbi skjutande pilar, trycka på en knapp, och ta sig tillbaka (förbi de skjutande pilarna igen) för att gå igenom den dörr som knappen öppnade. Utan tvekan, och enligt teamet, den svåraste nivån i hela spelet. Pico-8-Rum-3

Rum 4: Den här nivån är baserad på ett känt pussel från spelet Pokémon Esmeralda. Du behöver ta dig till nästa ingång genom att ta dig fram över den glatta isen. Eftersom du halkar varje gång du rör dig behöver du tänka igenom varje steg. Pico-8-Rum-4

Rum 5: Den här nivån påminner mycket om den föregående nivån. Skillnaden är bara att du nu igen möts av pilar som vill ta dina liv ifrån dig. Och är alltså ännu svårare. Pico-8-Rum-5

Rum 6: I det här rummet möts du av totalt mörker och behöver hitta den osynliga vägen till nästa rum. Utan att så klart bli träffad av elden som roterar mitt i rummet. Pico-8-Rum-6

Rum 7: I sista rummet behöver du trycka på en knapp som aktiverar ett stort rullande klot. Det klotet kommer sedan att jaga dig samtidigt som du ska ta dig igenom en serpentinväg (“Indiana Jones-style”). Nivån går ut på att tänka ett steg längre och låta klotet passera dig och skapa ett hål i väggen – och en ny ingång för spelaren.

Den ingången leder sedan spelaren tillbaka ut till första nivån där spöket än en gång väntar på att ta dig.

Den oändliga loopen är skapad och äventyret är fulländat.

Pico-8-Rum-7-1 Pico-8-Rum-7-2 Pico-8-Rum-7-3

Lärdomar/insikter

Teamet använde sig av PICO-8s utvecklingskit till att göra mer eller mindre allt i spelet utom att skriva koden. De upplevde att det var väldigt intuitivt och enkelt att använda och de kunde snabbt utveckla alla sina sprites, musik och kartor.

Något som enligt teamet i vissa fall lyste med sin frånvaro var dokumentation för utvecklingen. Något de anser att den officiella webbplatsen skulle behöva mer av.

Beat space invaders

Space invaders kombinerat med Guitar hero och du har Beat Space Invaders. Men för den som har kanske ytterligare insikt i spelvärlden kom faktiskt den första inspirationen till Beat Space Invaders från spelet Crypt of the NecroDancer.

Team:
Axel Ekwall, Simon Lindholm, Björn Helgeson, Adrian Berger

Idéen

Som nämnt i ingressen kom inspirationen främst från Crypt of the NecroDancer. Ett Top-down äventyrsspel där man genom att röra sig och attackera fiender i takt till en rytm får olika fördelar i spelet. Teamet såg potential i att koppla på twisten med rytmen på en klassisk spelidé – och då framförallt ett spel som skulle vara möjligt att färdigställa på en vecka och fungera fint i formatet 8-bitar. De valde Space Invaders.

Resultatet

Det tog ungefär en halv dags arbete att läsa på om PICO-8-konsolen och utvecklingsmiljön. Och eftersom teamet bestod av fyra utvecklare som skulle arbeta i projektet såg de direkt en utmaning i att arbeta i parallella tracks samtidigt.

Efter en vecka stod spelet klart! Det blev ett mini-spel med tre olika nivåer och sista boss – alla tre med olika musik. Spelaren får ett rymdskepp som denne kan styra från vänster till höger och som kan skjuta laser (precis som i Space Invaders). Om spelaren skjuter samtidigt som musikens rytm blir kraften i lasern allt starkare. Varje gång spelaren skjuter en invader (fiendeskepp) så laddas spelarens megakanon och vid en full mätare kan man avfyra en missil som går igenom alla invaders olika skydd.

Startskärmen: Beat-Space-Invaders-Start

Nivå 1: Beat-Space-Invaders-Level-1

Nivå 2: Beat-Space-Invaders-Level-2

Nivå 3: Beat-Space-Invaders-Level-3

Sista bossen: Beat-Space-Invaders-Final-Boss

Klicka HÄR för att testa spelet på GitLab!

Lärdomar/Insikter

Alla i teamet gillade de inneboende begränsningarna med plattformen – och att det skapade en intressant utmaning i att få utlopp för deras kreativitet. De anser att PICO-8 ger hyfsat bra utrymme för att kunna skapa olika typer av sprites, ljud och spelfunktioner i koden. Och framförallt att det var lätt att komma igång med det. På så sätt ett teknikval som passar perfekt för en Prototypvecka.

Den stora svårigheten med att, som team, samutveckla ett spel via PICO-8 är att utvecklarmiljön upplevs vara byggd för att endast en person ska kunna utveckla åt gången. Och med det skapas svårigheter med versionshanteringen. Teamet upplevde också två särskilda svårigheter i själva spelmekaniken. Dels algoritmerna för träffdetektering men också att skapa en rullande bakgrundskarta. De flesta funktioner är i grunden baserade i att göra något i varje frame av spelet – så att sätta upp en funktion likt att “repetera något varje 10:e sekund” kommer med en överraskande komplexitet.

Flappy market

Ett flappy bird-spel som tar dig genom en oregelbunden börsmarknad. Och med oregelbunden menar vi riktigt oregelbunden. Kanske det svåraste av de alla fem spelen som presenterades under Prototypveckan.

Team:
Jacob Broms, Stefan Larsson, Christopher Laursen

Idéen

Flappy bird som koncept kom tidigt på tal. Men spelet behövde en miljö - och gärna något som man skulle kunna referera till vara en miljö där det gäller att hålla tungan rätt i mun. Och då föll valet på aktiemarknaden. Och specifikt Nasdaq.

Resultatet

Väl på demodagen visade Jacob upp spelet och förklarade dels svårigheten i att utveckla en konstant förändrande miljö såväl som att spela det. Han lyckades dock med sitt personbästa just på demodagen! 👏

Lärdomar/insikter

Precis som teamet från Beat Space Invaders så insåg även detta team att det var svårt att skapa en föränderlig miljö. Det skapade en oregelbundenhet som påverkade spelupplevelsen i slutändan.

De insåg att det finns förbättringsåtgärder när det gäller att konvertera till 60 fps. Något som plattformen idag saknar (tillräckligt) stöd för.

Kom igång och utveckla dina egna spel med PICO-8

Om du tycker att PICO-8 är spännande och vill veta mer rekommenderar vi dig att ta en titt på följande länkar:

--

Nyfiken på mer? Det andra gänget under denna Prototypvecka provade på Arduinos Oplà IoT-kit --> Läs storyn här