För två veckor sedan släppte jag en video som handlade om att jag hade utvecklat ett clicker-spel. Spelet jobbade jag på i ett gäng månader, men videon visade sig ta till och med ännu längre tid än så. Vilket betydde att när videon väl var klar, så hade jag inte ens orkat titta åt spelet på nästan ett halvår, trots att jag i videon sa att jag fortfarande höll på att utveckla det. Jag skulle inte kalla det en lögn, det var sant när jag skrev orden och någorlunda sant när jag spelade in dem, bara något mindre sant när videon väl var klar.

Men videon blev klar, och plötsligt fick jag ett nytt sug efter att utveckla, så jag satte mig ner och började svänga ihop de idéer jag hade haft liggande sedan sist. Vad som hette version 1.1 och 1.2 i beta blev till slut en uppgradering stor nog att kalla version 1.5 (en sak jag lärt mig under utveckligen av spelet är att versionsnummer är fullständigt arbiträra).

Så, för att roa åtminstone mig själv, kommer här ett inlägg om vad som är nytt i Beer Clicker version 1.5!

Tråkiga tekniska grejer!

Vi börjar med det tråkiga. Som jag nämnde i min video om spelet är det inte direkt väloptimerat. En del av det löste jag dock redan innan videon gick ut genom att byta filformat på de animerade bakgrunderna. En liten ändring som gjorde enorm skillnad. Och nu i version 1.5 har jag tagit ännu några steg för att göra koden mindre tungrodd.

Det första jag gjorde var att ladda hem alla ramverksfiler lokalt, istället för att ladda in dem externt. Det gäller allt från bootstrap till jQuery. Hur stor skillnad det faktiskt gjorde är väl något oklart, men det känns definitivt som en mer stabil lösning.

Vad som gjorde desto mer skillnad var att jag ändrade hur ofta sidan räknar om alla olika variabler.

På sidan finns det en massa siffror som behöver uppdateras i takt med att du drar in mer öl, köper nya funktioner, investerar i aktiemarknaden och så vidare, och tidigare har jag bara slängt in allt det i en lång funktion som uppdaterar allt, och kallat den vid varje förändring. Problemet med det är dock att räknaren högst upp på sidan uppdateras tio gånger i sekunden, vilket är betydligt snabbare än vad som behövs på de flesta andra ställen på sidan. Så, jag kapade upp funktionen i mindre delar, och uppdaterar nu bara de delar som behöver uppdateras, vilket gjorde en märkbar skillnad, speciellt efter att jag lagt till många fler rörliga delar i uppdateringen. Vilket för oss till

Rörliga delar!

Hökögda läsare kanske noterade att jag skrev “jQuery” tidigare i texten, och tänkte “det nämnde du minsann ingenting om i din video!”. Och det stämmer! När jag utvecklade spelet hade jag nämligen undvikit allt vad jQuery hette eftersom det såg svårt och rörigt ut. Sedan dess har jag dock vågat mig på att testa det lite, och upptäckt att det faktiskt är enormt smidigt och lättarbetat.

jQuery är ett JavaScript-bibliotek, vilket enkelt förklarat betyder att det är en samling JavaScript-funktioner som redan är färdigskrivna och redo att användas. Specifikt handlar det i det här fallet främst om funktioner för att manipulera visuella element på sidan. Och i 1.5 är det antagligen det här som är den mest märkbara skillnaden.

Istället för att nya fält som öppnas bara poppar upp kommer de nu öppnas med en snygg lite animation, och istället för att sidans översta fält alltid tar upp ungefär en tredjedel av skärmen så drar det nu ihop sig när du scrollar neråt för att ge dig mer överblick. Ja, och så har vi de små siffrorna som dyker upp när du klickar på ölen för att visa hur mycket varje klick genererar.

Den där sista grejen var en funktion jag la in som en del av mitt försök att åtgärda en av de vanligaste kritikerna mot version 1.0.2, vilket var att de manuella klicken alldeles för snabbt blev meningslösa. Efter lite finurlande kom jag fram till att den kritiken berodde på två saker: den första var att ja, de manuella klicken blev meningslöst små väldigt snabbt, vilket å ena sidan är en feature snarare än en bugg i många klickerspel, men som här kunde tjäna på lite balansering. Och det andra var att klicken kändes meningslösa väldigt snabbt, eftersom det inte fanns någon bra indikation på hur mycket de faktiskt genererade. Vilket det nu finns!

Nya saker att köpa!

Jag gjorde dock inte bara en visuell åtgärd, utan la även in en möjlighet att ytterligare uppgradera de manuella klicken. “Improved Handcrank” låses inte som andra funktioner upp genom att forska (dock kommer funktionen inte dyka upp första gången innan forskningsnivå 3) utan den dyker upp när du nått ett visst antal manuella klick. Hur många det är för varje nivå är hemligt, och håller på att tweakas för att hitta en bra balans.

En annan funktion som inte forskas fram är The Moore Machine, som har en väldigt liten, slumpmässig chans att låsas upp varje sekund. För varje gång den dyker upp blir chansen att den dyker upp igen mindre, men det vägs mot att chansen ökar något ju fler öl du samlar. Det funktionen gör är att dubblera effektiviteten på allt annat, vilket gör det till det mest värdefulla du kan köpa i spelet.

Jag har även lagt till ytterligare vanliga funktioner, men jag låter det vara osagt vilka det är så att de som väljer att spela spelet har något att upptäcka. Om det skulle vara så att ni redan låst upp allting i den nuvarande versionen av spelet så kommer vissa av de nya funktionerna redan vara upplåsta, medan funktioner som var upplåsta sen innan blir låsta på nytt. Sånt som händer när saker skiftas runt! (Jag skulle helt enkelt rekommendera att börja om på nytt i nya versionen, men det är så klart upp till var och en. Jag är inte din mamma).

Sparfiler!

En funktion som jag länge velat implementera mer för att jag var intresserad av att bygga den än för vad den faktiskt tillför, är ett system för att exportera och importera “sparfiler” i spelet, vilket gör att man kan förflytta sin runda mellan webbläsare, eller spara framstegen medan man testar att nollställa spelet och börja från början. Det är en funktion som finns i bland annat Cookie Clicker, och utan att faktiskt undersöka hur de hade gjort det, byggde jag min funktion på i grunden samma sätt. Vilket jag upptäckte när jag testade dekryptera Cookie Clickers sparfiler och fick fram informationen i klartext. Så jag komplicerade min variant något för att göra det lite mindre uppenbart.

Namnge ditt bryggeri!

Den här funktionen är större än vad den på ytan verkar. På ytan är det ett fält uppe till höger på sidan där du får möjlighet att skriva in ditt helt egna bryggerinamn. Skoj! Men vad det också är, är grunden för att eventuellt införa en funktion som efterfrågats från flera håll: en topplista.

I och med 1.5 har jag satt upp en MySQL-databas dit spelardata kommer att skrivas. Spelare identifieras via ett 40 tecken långt slumpat ID, men om jag någon dag ska införa en topplista så kommer det vara namnen som anges här som syns.

Småfixar!

Ovan har jag listat de större ändringarna som gjorts med uppdateringen, men jag har så klart även gjort en uppsjö mindre saker. Vissa märks bara på baksidan, som att jag tog mig tiden att faktiskt bryta ut lite nyckelvariabler till en separat fil så att det ska vara enklare att snabbt gå in och balansera om saker. Andra märks utåt, så som att aktierna nu går att sälja till vinst igen, dock till halverat aktiepris för att begränsa funktionen. Och så klart en massa ombalansering. De nya funktionerna jag la in ställde till det en hel del med balanseringen jag redan gjort, så det är mycket som behövt göras om, och det finns fortfarande mycket kvar att fila på.

Efter den här uppdateringen kommer arbetet med spelet antagligen ligga ganska mycket på is medan jag fokuserar på andra projekt, men jag är rätt säker på att det här inte kommer vara den sista uppdateringen jag gör. Jag har som sagt funderingar kring att skapa en topplista, vilket inte borde vara överdrivet komplicerat. Och så är jag ganska nyfiken på att försöka skapa ett utvecklingsscript, som automatiserar delar av processen för att lägga till nya funktioner. Men allt detta lämnas för nu på planeringsstadiet.

Spelar spelet gör du så klart på clicker.beer.