Numbers Getting Bigger Design och matematik av inkrementella spel

I vår introduktion till inkrementella spel tittade vi på genrernas historia och undersökte vad som gör dessa spel unika, men vi drog inte för djupt in i deras verkliga design. Medan inkrementella spel kan verka enkla, visar deras design en komplex och genomtänkt avsikt från sina skapare. Genom att titta på några framgångsrika exempel på genren kan vi bättre uppskatta funktionerna i dessa spel och bättre förstå hur vi kan utforma våra egna.

Innan du dyker in i matematiska ramar finns det tre lättillgängliga men viktiga designområden som jag vill framhäva: Kvaliteten på prospektering och upptäckt, skillnaden mellan genusens "inaktiv" och "clicker" -uttryck och vikten av att sammanhängande tema och konst.

Joy of Discovery

En av de viktigaste vektorerna av "kul" i ett inkrementellt spel är det av upptäckt. Många av dessa spel börjar med en mycket enkel inledande inställning, men komplexiteten spiraler som spelaren förflyttar sig. Processen för att avslöja denna komplexitet kränger in i det medfödda överklagandet att upptäcka nya och dolda funktioner. Godislåda, till exempel kan förstås som ett spel främst om att utforska sitt system, och "inkrementerande" godispoäng är helt enkelt mekanismen för att låsa upp ytterligare innehåll.

Således gör de flesta inkrementella spelen inte hela systemet tillgängligt från början, utan istället "port" ytterligare funktioner mot nivåer i den primära valutan. Det här innehållet kan vara en "känd okänd", som i Iblant att regera gudarna, där vissa delar av spelet är explicit tomma och ange hur och när de kan låsas upp eller ett "okänt okänt", där spelaren inte ens vet att funktionerna finns till dess att en viss nivå uppnås, precis som nästan allt innehåll i Cookie Clicker. Vissa spel kan innehålla delar av båda: Advent Capitalist informerar spelaren om mycket av innehållet som de kan låsa upp, men innehåller många dolda funktioner som uppstår under spelets gång.

Jag antar att vi har en lång väg att gå.

Discovery är en viktig funktion att tänka på vid utformningen av ett inkrementellt spel eftersom det ger ett exploratory belöningssystem till spelaren medan de lär sig om spelets kärnmekanik. Att presentera allt upp framför skulle inte bara öka barriären för inträdet när man lärde spelet, utan också ta bort glädjen som kommer från gradvis förtrogenhet med ett system.

Idling eller Clicking?

Inkrementella spel tenderar att fokusera på två överlappande men tydliga primära mekaniker: 

  • Autonom tillväxt som spelaren gradvis ökar hastigheten på.
  • Aktivt spelarengagemang vars produktivitet gradvis ökar.

Spel som fokuserar på sistnämnda kommer i allmänhet antingen att ha en bokstavsmekaniker för att producera tillväxt eller på något annat sätt för att kräva aktivt deltagande av spelare, som lagringslock som kräver frekvent spelarintervention. I CivClicker, till exempel måste spelaren för det mesta aktivt hantera sin stad, med bara korta perioder av tomgångstillväxt. Omvänt kan spel som fokuserar på autonom tillväxt till exempel omfatta en mekaniker som klickar, men om det gör så kommer dess betydelse gradvis att gynna något automatiserat. I Advent Capitalist,despelaren måste aktivt klicka först, men snabbt låser upp möjligheten att automatisera processen, och är då i stort sett fri från manuell inkrement.

Detta val är i stor utsträckning en fråga om preferens och betoning av spelets mål. Ett spel som kräver aktiv hantering kan vara mer engagerande för spelaren under en kort tidsram, men om den implementeras på ett sätt som kräver för mycket spelare involvering för ofta, kan det komma att bryta mot principerna om etisk och human speldesign. Omvänt kan en mer självständig eller vilolös tillvägagångssätt kräva mindre engagemang från spelaren i en viss lektionssession, men kan skapa ett mer långsiktigt engagemang för spelet vilket hjälper till att förklara varför "lediga" spel på Kongregate har en sådan hög retention. Advent Capitalist informerar även spelaren vad som har hänt i sin frånvaro, och understryker att det inte kräver din konstanta uppmärksamhet:

Konstriktning och tema

Inkrementella spel drabbar ofta ofta ett narrativt tema där mekanikerna sitter (även om detta kan vara lätt att förbise eftersom dessa mekaniker är så minimala.)

 Ett förnuftigt tema kan bidra till att ge kontext till den annars abstrakta övningen av ökande antal. Likaledes, Allt Spel dra nytta av bra konstriktning och design, och inkrementer är inget undantag. Konsekvent estetik hjälper spelet att känna sig som en enhetlig upplevelse, och ett rent gränssnitt sänker den mentala kostnaden för att navigera i spelet, så spelaren kan koncentrera sig på själva spelet, istället för att tolka dåliga användargränssnitt.

Exemplet ovan från Advent Capitalist är en bra illustration av detta. Dess tema är företagsledning och kapitalistisk expansion (som passar in i gameplayen av allt fler siffror), och det använder en 1950-talets Googie-estetik för sin konstriktning. Detta används konsekvent (och med humor), så att även menyerna och handledningarna är "i karaktär" och förstärker det visuella och berättande temat. 

Inkrementsspelens behov av grafik och skrivning kan vara något sparsamt jämfört med andra genrer, men det är viktigt att inte missa det låga behovet av Nej behöver.

Numbers Going Up

Den mest definierande mekaniker av inkrementella spel är antalet ökande. Vi definierade den här sista tiden som:

  1. Förekomsten av minst en valuta eller ett nummer,
  2. vilket ökar med en bestämd hastighet, utan eller minimal insats,
  3. och som kan användas för att öka hastigheten eller hastigheten vid vilken den ökar.

Det är det tredje föremålet som i hög grad påverkar känslan av spelet, och det är det svåraste att designa bra. Eftersom det är ett särskilt okomplicerat exempel, låt oss ta en titt på siffra av Tyler Glaiel. Den har de tre grundläggande definitionen och nästan ingenting annat: ett nummer går upp och du kan spendera det numret för att få det att gå fortare.

När spelet börjar, är "inkomsthastigheten" för antalet ökande 0,1 per sekund. Mängden "antal" sparat kan användas för att göra det snabbare. Här är de första fem inköp, med deras kostnad i den första kolumnen och den nya "antal per sekund" i andra:

Kosta Inkomstskattesats
1,0 0,2
1,2
0,4
1,4
0,7
1,7
1,2
2,2 1,8

Även med en handfull observationer kan vi identifiera några av kännetecknen för inkrementell design här. En är den olinjära ökar till både kostnad och nytta: det tar allt fler antal att få relativt mindre inkrementell förbättring. 

Det här är meningsfullt ur praktisk perspektiv: om kostnads ​​/ nyttan var densamma (till exempel om det alltid kostar 1 nummer för att köpa 0,2 ökning av inkomsträntan), skulle det inte vara någon förändring i resultatet och inkomst räntehöjningen skulle klättra i en jämn och förutsägbar takt. Det skulle bli tråkigt mycket snabbt!

Istället är det här vad kostnaden (i blått) och inkomstfrekvensen (i orange) för de första tjugo inköpna ser ut som:

Blå: Kostnaden för den xth uppgraderingen. Orange: Inkomster per sekund genererad från x inköp. Till exempel kostar 10: e inköpet 7 siffror, och resulterar i en inkomstandel på 7,6 nummer per sekund.

(Du kan ladda ner en XLSX av de data som används för att generera dessa grafer från denna GitHub repo, eller visa en Google Sheets-motsvarighet.)

Här kan vi helt klart se att dessa funktioner är icke-linjära (även ignorera kostnadsformelhoppet vid 12th iteration), och att kostnadsökningarna snabbt överskrider inkomsthöjningarna. Det är en viktig aspekt av designen, eftersom det innebär att tiden som väntar på att ge nästa uppgradering växer exponentiellt desto längre varar spelet. Så spelet går fort ganska snabbt, med spelaren bara att behöva vänta med jämna mellanrum att spara upp tillräckligt för nästa inköp, men sakta sakta ner.

De flesta inkrementella spelen har flera källor till ökad inkomstökning för att uppgradera, istället för bara en som siffra gör. Detta är en viktig källa till upptäckten och strategin för inkrementella spel, för att ha flera vektorer av förbättring vars kostnader ökar olinjärt introducerar intressanta vägar för optimering för spelaren. Om spelaren väljer att investera tungt i en enda byggnad eller uppgradera, kommer de exponentiellt ökande kostnaderna vid en tidpunkt att andra alternativ blir relativt billigare, även om de initialt prissattes mycket höga. Det betyder att spelaren har en rad alternativ till sitt förfogande, men de måste ständigt omvärderas eftersom relativ värd för spelaren ständigt skiftar.

Linjära förbättringar med exponentiella kostnader

Exponentiell kosta skalning är fördelaktigt för den ständigt växande resurs- och tidsinvesteringen de behöver, men de flesta spel använder inte exponentiell inkomsträntan ökar. Varför inte? 

I diagrammet från det sista avsnittet är det klyftan mellan de två linjerna som ger oss det ständigt växande kostnads-mot-nyttförhållandet. För att uppnå det behöver vi faktiskt bara kostnad (i orange) för att öka exponentiellt (eller polynomiskt); Inkomsterna kan öka linjärt och gapet mellan linjerna kommer fortfarande att öka.

Till exempel, i Clicker Heroes, En av de första automatiserade källorna till att öka antalet är från en "hjälte" som heter Treebeard. Initialt kostar det 50, och ger dig en inkomstnivå på 5 per sekund. Den andra nivån kostar 53,5, men ger fortfarande en ytterligare räntehöjning på 5. De första femtio inköpen ser ut så här, igen med kostnaden i blått och inkomsträntan i orange:

Observera att för enkelhet ignorerar vi ett antal andra kostnad / skattemekanik i Clicker Heroes.

Funktionen "inkomstfrekvens" här är bara en rak linje, eftersom varje inköp ökar det med det angivna antalet 5, så formeln för det är mycket enkelt: den totala frekvensen per sekund är bara det antal som ägs multiplicerat med 5 (så, \ (y = 5x \)). 

Kostnaden går dock upp i en allt större takt. Den inkrementella kostnaden för varje extra nivå är minimal i början; På diagrammet kan vi se för de första tjugo klyftan mellan de två är nästan konstanta. Men sedan bryter den bort dramatiskt och kräver mer och mer för varje efterföljande uppgradering. 

Formeln för kostnadsfunktionen här är faktiskt en som används allmänt i många inkrementella spel:

\ [Pris = BaseCost \ gånger Multiplikator ^ (\ # \: Ägna) \]

För vårt Treebeard-exempel är baskostnaden 50 och variabeln "Multiplikator" är 1,07, så den andra nivån kostar \ (50 \ gånger 1.07 ^ 1 = 53.5 \), den tredje kostar \ (50 \ gånger 1.07 ^ 2 = 57.245 \), och så vidare. Multiplikatorns värde bestämmer linjens kurvatur, med högre värden vilket betyder brantare kostnadskurvor. (Ett värde av 1 skulle ge en linjär kostnadslinje.) 

Clicker Heroes använder 1.07 som ökningsmultiplikator för alla 35 av dess uppgraderbara hjältar och alla de olika byggnaderna i Cookie Clicker använd ett värde på 1,15. Intressant är de 10 företagen av Advent Capitalist alla använder en annan multiplikator, men varje är mellan 1,07 och 1,15. Det gemensamma utseendet hos samma multiplikatorer över olika spel tyder på att kurvorna som produceras mellan dessa gränser är balanserade och tillfredsställande. 

Vissa spel skiljer sig därifrån därifrån. Steams multiplayer inkrementella spel Monster, en del av deras sommarförsäljningshändelse för 2015, använder multiplikatorer så hög som 2,5, vilket ökar väldigt brant.

Som tidigare nämnts har exponentiell kostnadsskalning fördelen att balansera flera uppgraderingsvägar genom att se till att varje följer en väg med avtagande avkastning. Detta gör en del av den taktiska balanseringen medfödd till kostnadsformeln själv, snarare än något som formgivaren behöver uttryckligen rama. Eftersom även om en given resurs ibland eller till och med oftast är "bättre", betyder den exponentiellt stigande kostnaden att den inte kan utnyttjas exklusivt. 

Låt oss ta en titt på listan över uppgraderbara byggnader i Cookie Clicker som ett exempel:

Byggnad Baskostnad
Basinkomstfrekvens
markör 15 0,1
Mormor
100 0,5
Bruka
500 4
Fabrik
3000 10
Mina
10 tusen 40
Sändning
40 tusen 100
Alchemy Lab
200 tusen 400
Portal
1.666.666 6666
Tidsmaskin
123.456.789 98.765
Antimatorkondensor
3999999999 999,999
Prisma
75 miljarder 10.000.000

Vi kan se flera tydliga mönster precis från denna tabell. 

Den första är att baskostnaden för varje efterföljande uppgradering är nästan fem gånger högre än den tidigare (med undantag för de sista). Dessa ökar med hälften av en storleksordning så att spelaren har tillräckligt med tid för att njuta av varje nyupplåst resurs; lägre ökar skulle innebära att upplåten kan komma för snabbt, men längre skulle riskera att spelaren blir uttråkad innan nästa upplåsning uppnås. 

Intäkterna (kakor per sekund, för det här spelet) ökar under tiden endast med ungefär en tredjedel för varje ytterligare nivå, vilket innebär att medan byggnaderna bidrar med allt större numeriska belopp, är de faktiskt mindre och mindre effektiva i förhållande till deras kostnad.

Men eftersom varje byggnad följer samma kostnadsöknings formel \ (Price = BaseCost \ times 1.15 ^ (\ # \: Owned) \) följer varje byggnad faktiskt ett mycket liknande mönster. Diagrammet nedan visar en rad för var och en av de 11 byggnaderna, som visar sina första tvåhundra uppgraderingar, med loggkostnad längs y-axeln och logginkomstfrekvensen på x-axeln. (Eftersom dessa är exponentiella funktioner avslöjar en logaritmisk skala deras likhet bättre än en linjär.)

Denna Varje rad representerar en annan byggnad, med kostnad på y-axeln och inkomsthastigheten på x-axeln (båda logaritmiska skalor). Detta är en visualisering av kostnaden för att dra nytta av krökningen som vi diskuterade tidigare

Så även om dessa byggnader verkar väldigt annorlunda, eftersom de nominellt producerar och kostar mycket mer än tidigare, producerar deras exponentiella kostnadsformler kurvor som i sig liknar varandra samtidigt som de skapar ett system som spelaren kan optimera.

Redovisning för effektivitet

Även om inkrementella spel är ytliga om att göra siffror går upp, så är det hur man får dem att gå upp så fort som möjligt som ger djup av spel för passionerade spelare. Spelaren har alltid flera förbättringsalternativ före dem mellan de olika uppgraderingsbara resurserna (vanligtvis tillsammans med några ytterligare funktioner vi diskuterar senare) och utmanar så spelaren att utvärdera dessa val. Ska du köpa den billigare uppgraderingen du har råd med just nu, eller spara till du har råd med nästa nivå?

Eftersom vi slutligen vill köpa alla uppgraderingar är det mest effektiva sättet att bara utvärdera den optimala ordern. Föreställ dig ett scenario där vi för närvarande producerar 5 av vårt antal per sekund (\ (nps = 5 \)) och vi har val mellan två uppgraderingar. Den första kostar 20 (\ (cost_a = 20 \)) och ökar vår inkomstnivå med 1 (\ (rate_a = 1 \)). Den andra har \ (cost_b = 100 \), men har också \ (rate_b = 10 \). Den förra är billigare, men det är också mindre kostnadseffektivt. 

Tja, låt oss försöka köpa A då B:

  • Vi väntar och sparar för \ (20/5 = 4,0 \) sekunder och köper sedan A.
  • Nu väntar vi på \ (100 / (5 + 1) = 16,67 \) sekunder och köper sedan B.
  • Vi har nu \ (nps = 16 \), och det tog oss \ (20.67 \) sekunder att uppnå.

Vad händer om vi gjorde motsatsen?

  • Vi väntar och sparar för \ (100/5 = 20,0 \) sekunder och köper sedan B.
  • Nu väntar vi på \ (20 / (5 + 10) = 1,33 \) sekunder och köper sedan A.
  • Vi har nu \ (nps = 16 \), och det tog oss \ (21.33 \) sekunder att uppnå.

Så, det verkar som att köpa A först och då är B effektivare, eftersom \ (20/5 + 100 / (5 + 1) < 100/5+20/(5+10)\). We could generalize this example to get a formula like this:

\ [\ frac cost_a nps + \ frac cost_b (nps + rate_a) < \frac cost_bnps + \fraccost_a(nps + rate_b) \]

Men det här är bara användbart för jämförelser mellan två möjliga uppgraderingar, och det är inte lika användbart om vi hade en hel del val. Vi behöver förenkla formeln för att isolera variablerna för en enda uppgradering (vars avledning förklaras i detalj i denna fantastiska artikel av Adam Babcock), vilket ger detta:

\ [\ frac cost_a nps + \ frac cost_a (nps + rate_a) \]

Nu kan vi tillämpa denna formel på varje möjlig uppgradering, och det lägsta resultatet, på grund av ojämlikhetens transitivitet, kommer att ge vad vi ska köpa nästa (med några undantag som inte är värda att komma in på denna nivå av analys). Detta förenklar processen för att hitta den mest effektiva vägen till optimering.

Detta är självklart relevant för spelaren, men det är också användbart för konstruktören. Att veta det mest effektivaanvändning av olika spelelement kan identifiera förekomsten av oavsiktliga spikar i tidskrav och se till att även optimalt spel utvecklas med en hastighet som avsedd av skaparen.

Att avleda optimala spelscenarier gör att vi kan jämföra olika inkrementella spel, eftersom vi kan minska de olika variablerna till den tid det tar för att nå en viss nivå av antal per sekund. Diagrammet nedan visar den tid som krävs för att uppnå ett givet antal per sekundsinkomst i Advent Capitalist (i grönt) och Cookie Clicker (i brunt), om man köper byggnader på det mest effektiva sättet (ignorerar andra spelaspekter för enkelhet):

X-axel: tid, y-axel: inkomstfrekvens (loggskala); grön: AdVenture Capitalist, brun: Cookie Clicker.

Anmärkningsvärt ser de två matcherna här väldigt här, vilket ger högre priser på nps mot en allt större tid. Båda växer otroligt snabbt de första 8-10 timmarna (cirka 500 minuter), men ökningstakten är mycket mer marginal därefter. De plattas ut så småningom som antalet nya byggnader är uttömda. Som ett resultat innefattar de flesta inkrementella spelen andra inköpbara resurser utöver de viktigaste uppgraderbara byggnaderna, en av de viktigaste är möjligheten att återställa spelet, vilket gör det möjligt för spelaren att klättra upp denna kurva igen.

Den spirande komplexiteten av uppgraderingar i inkrementella spel kan göra deras design en skrämmande utsiktsplats. Men designern behöver inte noggrant kalibrera varje element. Skönheten i komplexa icke-linjära system innebär att snygga ladder av uppgraderingar kan produceras med endast hög nivå balansering från designern. För spelaren är det svårt och roligt att navigera systemet för att hitta den optimala sekvensen, medan uppgiften för designern helt enkelt är att se till att det finns ett så komplext system att navigera.

"New Game +" och andra funktioner

En funktion "New Game +" låter spelaren återställa sina framsteg i utbyte mot en varaktig bonus. Så alla inköpta byggnader och andra resurser kan returneras till noll, men när start över en platt multiplikativ ökning tillämpas på alla antal beräkningar per sekund därefter. 

Detta förändrar inte någon av de grundläggande formlerna i spelet; det betyder bara att spelaren kommer att nå den eventuella asymptotiska platån snabbare och snabbare. I huvudsak verkar den här funktionen för att utöka kärnans spel genom att låta den återspelas snabbare. Detta kan dock inte hållas på obestämd tid, så så småningom kommer långtidsspelare att nå en "endgame" av sorter.

I Clicker Heroes, stigande belönar spelarna med en ny valuta för att köpa uppgraderingar med.

En annan vanlig funktion för att utöka spelningen ökar helt enkelt komplexiteten hos de uppgraderbara byggnaderna. Hittills har vi bara granskat den vanligaste metoden för inkrementell uppgradering, som följer exponentiell kostnadsfunktion. Bredvid dessa är vanligtvis uppgraderingar som antingen ger en gångs platta förbättringar till det totala antalet per sekund, eller som ändrar de underliggande kostnads- och inkomstfrekvensvariablerna på något sätt. 

I Clicker Heroes,till exempel finns det uppgraderingar som ökar basnumret per sekund för en "hjälte", liksom de som ökar basnumret per sekund för Allt "hjältar". Medan dessa och liknande funktioner inte förändrar de underliggande mekanikerna i ett inkrementellt spel kan de bredda möjligheten till spelaren att utforska och ytterligare utmana sin förmåga att optimera spelet. Dessutom kan volymen av uppgraderingar som "New Game +" -mekanikerna också verka för att förlänga spelet innan de slår på den eventuella platåen som pågår.

Konspiration Clicker har tre olika träd av interrelaterade uppgraderingar.

Gå framåt och multiplicera (exponentiellt)

Även om detta inte har varit en uttömmande utredning av inkrementell speldesign, har vi gett en grundlig titt på deras grundläggande aspekter. Som en kort sammanfattning för potentiella designers och utvecklare:

  • Aktivera och främja en känsla av upptäckt.
  • Tänk på aktiv och inaktiv spel (och helst belöna).
  • Försum inte ett förenande tema och konststil.
  • Använd Exponential Cost Scaling, med den vanligaste formen att vara \ (Price = BaseCost \ times Multiplikator ^ (\ # \: Owned) \) med en multiplikator mellan \ (1.07 \) och \ (1.15 \).
  • Ge spelaren flera möjligheter till optimering.
  • Utöka spela genom strategisk användning av återställning och mekanik som ökar komplexiteten.

Om du är intresserad av att lära dig mer, är de inkrementella spelen subreddit en stor gemenskap av designers och utvecklare att vända sig till för råd och idéer. Om du vill dyka rätt in i genomförandet av några av dina idéer, utvecklaren av Cookie Clicker skapade ett onlineverktyg som enkelt kan skapa liknande spel, och det är ett bra sätt att experimentera utan att behöva lägga hela grunden själv. Om du letar efter något lite mer avancerat, skaparen av CivClicker har en utmärkt bit på logiken för en HTML-och JavaScript-implementering också.

Jag hoppas att det ramverk vi har granskat här tjänar som en inspiration för att utforska ditt eget uttryck för ett inkrementellt spel. Det finns trots allt mycket oanvänd design utrymme kvar för att utforska:

Lista över spel som nämns

Även om det inte är en omfattande lista (för det, har de inkrementella spelen subreddit en bra lista), här är en lista över de spel som nämns i vår första artikel eller i den här:

  • Ett mörkt rum
  • AdVenture Capitalist (finns även gratis på Steam)
  • Anti-Idle: Spelet
  • Godislåda
  • CivClicker
  • Clicker Heroes (finns även gratis på Steam)
  • Konspiration Clicker
  • Cookie Clicker
  • DripStat (ett intressant exempel på ett företag som använder ett inkrementellt spel som en del av sin marknadsföring)
  • Iblant att regera gudarna
  • Monster (Steams tillfälliga sommarförsäljning minigame, inte längre aktiv)
  • siffra
  • Progress Quest
  • Sandcastle Builder
  • Monoliten

Observera också: Du kan ladda ner en XLSX av de data som används för att generera graferna i den här artikeln från den här GitHub repo, eller visa en Google Sheets-motsvarighet.