Sist gang, undersøkte vi RPG-balanse fra et kilometer høyt perspektiv. I dette segmentet graver vi litt dypere, ved først å bestemme basestatistikken til hovedpersonen vår og bruke resultatene til å beregne meningsfull avledet statistikk, gjeldende i kamp. Vi vil da ta en grundig titt på hvordan å balansere ett parti medlem med en annen, selv om de favoriserer helt forskjellige typer kamp. Når røykingen rydder, har vi oppnådd grunnleggende festbalanse innenfor vårt snart bestselgende spill, Final Trigger.
Festmedlemmer i tradisjonelle turneringsbaserte RPG-spill har vanligvis ikke stivt definerte klassroller. Som sådan var alle deres statistikker i det minste delvis relevante. Samtidig utpekte jacks-of-all-trades og masters-of-one, partidlemmer vanligvis i et område av kamp, det være seg å slåss, støpe eller helbrede. Med det i tankene, vil vi modellere Final Trigger's hovedperson for å dra nytte av partiet sitt mest når han slår bort med et sverd.
I vår modell velger vi følgende basistatistikk:
For enkelhet, vil vi også anta at vår karakter er nivå 20, og at våre allierte er de samme.
Siden vår helt nærmest ligner en kriger, bør hans statistikk gjenspeile de som fysisk imponerende, i stand til å motstå noen treff, ikke for fort og noe svak mot magi. Alle tallene betraktes som like, et ganske nøyaktig utgangspunkt for vår hovedperson - la oss kalle ham Chroud (se hva jeg gjorde der?) - ville være:
Vi kaller disse tallene Chroud's basestatistikk fordi de er vant til å utlede statistikk som vil avgjøre vår effektivitet i kamp.
Utledte beregninger foregår generelt bak kulissene. Vi bestemmer dem ved å manipulere vår basestatistikk på meningsfulle måter. Resultatene brukes da til å bestemme vår samlede effektivitet i kamp. I Final Trigger, den avledede statistikken er:
Selvfølgelig kan du gå mye lenger med dette, men for illustrative formål er dette mer enn nok. Du er velkommen til å eksperimentere.
Nå må vi likestille hver av våre basestatistikk med en avledet stat. Dette burde være en ganske intuitiv prosess. For eksempel ville det være fornuftig for styrke å være korrelert med angrepskraft, så la oss starte der.
Først avgjøre hva slags numre du vil se på skjermen. Hvis du er en fan av old-school RPGs, vil du sannsynligvis favorisere å håndtere store mengder skade. Andre kan foretrekke mindre, mer presise trinn. Uansett, vårt system er designet med fleksibilitet i tankene, og passer til enhver preferanse. I Final Trigger vi vil gå midtlinjen.
For enkelhet, vil vi bare multiplisere styrken med en konstant på 10 for å bestemme angrepskraften.
Attack Power = Styrke * (konstant)
Det gir oss en Attack Power på 500. Men det ville være ganske kjedelig å slå fiender for samme eksakte beløp hver runde. Derfor kommer vi til å introdusere litt tilfeldighet for å riste opp ting:
Attack Power = (Styrke * (konstant)) +/- 10%
Nå vil Chrouds Attack Power være et sted mellom 450 og 550. Selvfølgelig, avhengig av hvor mye tilfeldig du vil introdusere i systemet, kan du alltid bruke en høyere eller lavere prosentandel. (Men husk at det er vanskeligere å balansere et svært randomisert kampsystem.)
Disse to er litt vanskeligere. Vi vet at de er basert på Speed, men vi kan ikke nøyaktig formere hastigheten med en konstant for å bestemme sekunder per sving og Dodge Rate. Stol på meg, resultatene ville være katastrofale.
Det vi vet er at vår base ATB Speed og Dodge Rate ikke bør variere for mye fra begynnelsen til spillet til slutten. Selvfølgelig vil vi at de skal forbedre seg litt, men ikke så mye at de kan utnyttes på høyere nivåer. Siden vi utelukket å manipulere hastighet direkte, ville det være fornuftig å først utlede en enkel hastighetskoeffisient:
Hastighetskoeffisient = Hastighet / Nivå
Vår karakter Speed koeffisient er hans hastighet (25) dividert med hans nivå (20), eller 1,25. For å holde vår nye koeffisient i balanse med våre mål, bør vi kjøre en simulering som bestemmer verdien på forskjellige nivåer og med ulike bashastigheter.
Noe sånt som dette:
Fra vår modell kan vi utlede at ved å øke Chroud's Base Speed med om lag 2 poeng per nivå, vil Speed Coefficient gå opp helt så lite som vi nivåer, noe vi vil. Modellen selv er altfor forenklet og litt feil, men den er nær nok til å gi oss grunnlag for å jobbe av.
Vi trives nå med å beregne Chroud's Seconds Per Turn (SPT). Merk at siden vår hastighetskoeffisient går opp som vi nivåer, og vi vil at vår SPT skal gå ned, bør vi dele en konstant over vår koeffisient. Dette vil være den enkleste måten å oppnå optimale resultater.
Sekunder per tur = (konstant) / Hastighetskoeffisient
Jeg har valgt 15 for konstant, men du kan velge hvilket som helst nummer du liker. Legg merke til at høyere konstanter vil resultere i mer tid mellom svinger, og passer bedre til uformelle RPGer. Final Trigger er relativt fartsfylt, og de 12 sekundene som trengs på nivå 20 for at vår ATB bar skal fylle passer oss helt fint. På nivå 50 blir denne tiden redusert til litt under 9 sekunder.
Dodge% er enda enklere å finne ut - bare multiplisere hastighetskoeffisienten med en konstant. Din eneste begrensning ville være å velge en rimelig konstant, siden det ved et uhell å velge en stor ville resultere i en Dodge Rate over 100 prosent. Ikke bra.
Dodge (%) = Hastighetskoeffisient * Konstant
Vi kan bruke lignende likninger for å finne ut resten av Chrouds avledede statistikk. For eksempel kan Stamina konverteres til Hit Points bare ved å bruke en multiplikativ konstant. Som du tydeligvis kan se, krever det ikke en mastergrad i matematikk å komme opp med et statssystem som fungerer.
Med det sagt, tar vår statistikk ikke hensyn til effektene av utstyr, buffs, våpenprosjekter og diverse elementer som gir spesielle effekter. Dette er ting du til slutt skal vurdere. Hva det gjør er å tilby et sterkt fundament der du kan bestemme karakterens relative styrke og forsvar når som helst i hans eller hennes fremgang.
En av de grunnleggende feilene som RPG-utviklere gjør når balansen mellom spillene deres er å avstå internpartibalanse. Husker noen å bruke Relm fra Final Fantasy VI? Jeg gjorde det ikke sikkert. Hvorfor til og med lage et tegn hvis det aldri kommer til å bli brukt? Som RPG-utviklere er det vår plikt å gjøre hver av våre elskede figurer levedyktig i kamp. Og en god måte å gjøre dette på er å måle hver sekundær karakter mot vår hovedperson. Basert på våre beregninger fra forrige del er Chrouds statistikk på nivå 20 som følger:
Vårt andre tegn - vi kaller henne Jane for mangel på oppfinnsomhet - er en scepter-wielding Mage. Jane's hobbyer inkluderer lange turer på stranden, spiller videospill og brenner hennes fiender i live. Siden vi ikke er partiske utviklere, la oss gi Jane samme antall basispoeng som Chroud, men distribuere dem slik at de gir mening for en caster:
Siden begge våre tegn er offensivt tenkende, må deres DPS balanseres slik at de gjør relativt like mye skade. Hvis vi antar at Chroud alltid vil angripe med et Sverd og Jane med en offensiv stave, så er våre beregninger enkle:
Chroud's DPS = Attack Power / ATB Speed
Jane DPS = Magisk Power / ATB Speed
Basert på våre beregninger er Jane's DPS 50 til Chrouds omtrent 42. Det er litt ujevnt, men ganske mye i balanse. Men det er et problem: mens Chroud kan teoretisk angripe med sitt Sverd for alltid, vil Jane til slutt gå tom for MP hvis hun kaster for mange magi. For å gjøre saker enda mer kompliserte, vil noen av Jane's magi bli sterkere enn andre. Dermed kan vi ikke beregne hennes DPS ved hjelp av Magical Power alene. I stedet la oss dvele litt dypere.
I de fleste RPGer ville caster-typer bli presentert med en virtuell lavine av magi, spesielt da de nådde slutten. Mens mange av disse trollformlene ble gitt automatisk som et tegn utjevnet, spill som Final Fantasy VI Tillot hvert tegn å lære så mange magi som de ønsket - alt som var nødvendig var tålmodighet. Imidlertid gjorde de med en avfinitet for støping alltid mer skade med deres offensive magi og bedre helbredelse med deres støttende. Dette var av design.
Final Trigger vil derfor ikke bruke Magical Power som en fast indikator for DPS, men som en variabel. Med det kan vi bestemme kraften til hver enkelt stavning. I en ånd av å begrense mengden arbeid vi må gjøre, gir vi bare fattige Jane tre staver. En vil være en enkelt-mål, billig-til-kastet, lavt skade Fireball. Den andre vil være en høyere kostnad, kraftigere versjon av samme staveform. I ånden av old-school RPGs, vil vi kalle det Brann 2. Og til slutt vil vi gi Jane en AoE stave som heter, jeg vet ikke ... Meteor.
Forutsatt en magisk kraft på 500, virker kraften og DPS for hver stave som følger:
Nå er det første spørsmålet du kanskje spørre deg selv, hvorfor Fire 2 koster tre ganger så mye som å kaste som Fireball, men bare dobler skaden. Det er en gyldig bekymring. Det korte svaret er at mens Fireball er mer Mana effektivt, er Fire 2 mer slagkraftig. Lik det på forskjellen mellom bokserens jab og uppercut. Jabs gjør mindre skade, men krever mindre anstrengelse, mens oppercuts er sikkert mer utmattende, men kan potensielt brukes til å slå ut en motstander med en ødeleggende slag.
Med andre ord, hvis Fire 2 koster 4 MP å kaste, ville det aldri være behov for å kaste Fireball. I Final Trigger, Målet er å oppmuntre til intelligent ressursforvaltning. Men hvis du foretrekker å gjøre Fireball utelatt når du lærer Brann 2, kan du sikkert gjøre det.
Å komme tilbake til vårt eksempel, Meteor er tydeligvis bare for bruk mot store grupper av fiender. Mot et enkelt mål, gjør det bare omtrent samme skade som Fireball til en betydelig høyere kostnad.
Beregning av DPS for hver enkelt stave er en ting, men å bestemme Jane's gjennomsnittlige DPS er et helt annet dyr. For å gjøre det, må vi vite hvor mye MP hun har, hvor mange Mana gjenoppretter ressurser hun bærer, og om MP gjenopprettes etter hvert slag eller bare ved å besøke vertshuset. Fordi Jane er i stand til AoE, vil vi også gjerne vite den gjennomsnittlige mengden fiender som partiet kjemper på en gang, og hvor mange svinger i gjennomsnitt det tar å beseire fiender. Siden vi ikke har bestemt det ennå, vil vi tilfredsstille oss med å approximere Janes gjennomsnittlige DPS for nå, og bekymre oss for de mer utilsiktede forholdene senere.
Gjør dette ved først å finne ut hvert stavelses skade per mana (DPM) punkt. For å beregne DPM for Meteor, antar vi at Jane bare støter på det når det er mellom tre og fem fiender på slagmarken, i gjennomsnitt på fire. Resultatene er som følger:
Forutsatt at hver stave vil bli kastet med samme frekvens, bestemmer vi at Jane vil tilbringe et gjennomsnitt på 6,67 MP per runde med hvert punkt som behandler omtrent 15 skader. Multiplikasjon av de to tallene det kan da utledes at Jane gjør en japansk 100 DPS, noe som er mye mer enn Chroud.
Men Jane's Mana-bassenget er begrenset, og det er ingen måte at hun vil kunne opprettholde denne DPS uten å bruke forbrukerressurser eller via en annen måte å fylle på Mana. Hvis Jane løper ut av Mana, faller hennes DPS med 80 prosent, helt til 20. Hun stoler på MP, til slutt bringer hennes generelle DPS ned, men går det nok til å være i balanse med Chrouds?
Vi vet at Chrouds base DPS er 50, og at Jane er omtrent 100 når hun har MP og 20 når hun ikke gjør det. Dermed for å finne ut det perfekte forholdet mellom magiske og fysiske angrep for Jane's DPS for å likne hennes motparter, bruker vi følgende system av ligninger:
\ [\ Begynne innrettet
50 & = 100x + 20y \\
x + y & = 1
\ End innrettet \]
Hvis du ikke er kjent med algebra, er det greit. Den beste måten å nærme seg denne ligningen på er å først løse for \ (x \) på bunnekvasjonen:
\ [x = 1 - y \]
Ta nå det resultatet, og koble det til toppligningen:
\ [50 = 100 (1-y) + 20y \]
Løs for y:
\ [\ Begynne innrettet
50 & = 100 - 100y + 20y \\
-50 & = -80y \\
y & = 5/8
\ End innrettet \]
Og koble den verdien til bunnen likningen for å løse for x:
\ [\ Begynne innrettet
x + (5/8) & = 1 \\
x & = 3/8
\ End innrettet \]
Fra dette kan vi konkludere med at Jane måtte være ute av Mana over 62 prosent (5/8) av tiden for hennes DPS for å matche Chrouds. Det vi egentlig sier er at Jane's magi er overveldet - så mye at for å få henne til å bli redusert til en dårlig Warrior, måtte hennes Mana-ressurser være ekstremt knappe. Å ta denne tilnærmingen vil føre til balanse, men ikke den slags balanse vi håpet å oppnå.
Skjønnhet i vårt system er dets fleksibilitet. Hvis vi vil gjøre en spiller sterkere eller svakere, er det flere måter å gjøre det på. I vårt tilfelle ønsker vi at Jane skal kunne kaste flere staver og fortsatt være relativt i balanse med Chroud. For å gjøre dette kan vi:
Både den første og tredje tilnærmingen virker som levedyktige alternativer. Hvis vi reduserer prisen på Jane's magi med mellom en tredjedel og en halv, vil hennes DPS forbli den samme, men hun vil gjøre mer skade per Mana-punktet brukt. Hun øker også mengden magi hun kan kaste før hennes Mana løper ut. Alternativt, ved å øke hennes Mana-basseng, vil Jane's DPM ikke øke, men hun vil fortsatt kunne utføre flere gjenger. Dermed, etter litt tinkering rundt, bør vi kunne oppnå en balanse som fungerer og gir mening.
Og det er det som balanserer en turneringsbasert RPG, eller noen RPG, handler om: å leke med tall til du finner noe som fungerer. Det trenger ikke nødvendigvis å være perfekt eller pent, og det må heller ikke implementere avansert matte. Så lenge ingen partimedlem er betydelig mer eller mindre kraftig enn noen annen, har du oppnådd et mål for suksess.
I denne artikkelen har vi undersøkt dreibasert RPG-balanse fra det enkelte medlemsmessige perspektiv. Før du takler denne typen saldo, foreslår jeg at du stiller deg selv følgende spørsmål:
Final Trigger viste seg å være mindre komplisert enn RPG fra begynnelsen av 1990-tallet, men det tok fortsatt en hel artikkel bare for å oppnå rudimentær balanse mellom to klasser. Vi reiste ikke engang på fiendens balanse, AI og avansert ressursforvaltning. Realistisk, for å virkelig teste balansen i spillet ditt, bør du utvikle et kodet modelleringssystem som gjør det mulig for designere å plugge inn en rekke verdier. Det vil øke hastighetsprosessen betydelig - ellers blir du tvunget til å bruke et Excel-regneark eller tilsvarende. Men de prinsippene som er utforsket ovenfor, vil gå langt for å få deg inn i balansen.