Calcolo dei punti esperienza guadagnati dopo una battaglia


9

Sto sviluppando un semplice gioco di battaglia testuale e ho dei problemi nel calcolare la quantità di XP da guadagnare dopo una battaglia, ci sono alcuni fattori che voglio considerare:

1) I giocatori dovrebbero ovviamente guadagnare buoni PE se battono qualcuno dello stesso livello

2) I giocatori dovrebbero guadagnare grandi PE se battono qualcuno di livello superiore

3) I giocatori dovrebbero guadagnare XP scadenti se sconfiggono qualcuno di livello inferiore

4) Quanto sopra dovrebbe scalare bene, cioè se il giocatore A è di livello 10 e combatte il giocatore B che è di livello 9 o 11 la differenza non dovrebbe essere enorme (ovviamente guadagnerebbero più XP per sconfiggere il personaggio di livello 11 ma non lo faremmo aspettarsi che questo sia enorme), ma se dovesse combattere un livello 5 o 15 questa differenza dovrebbe essere enorme.

Ho solo problemi a calcolare qualcosa che funziona bene in tutti gli scenari, attualmente la mia tabella XP è simile alla seguente:

Current Level   XP Needed   Increase from Last Level
1   30  0
2   65  35
3   106 41
4   154 48
5   210 56
...
10  672 123

In PHP il mio codice è simile al seguente per calcolare gli XP necessari:

$offset = 30;
$multiplier = 1.17;
$base = $prevXp * $multiplier;

$xp = $base + $offset;

Ho provato alcune cose diverse, ma non sono rimasto impressionato da nessuno di essi, mi piacerebbe lavorare con il calcolo della differenza in XP e quindi utilizzare un qualche tipo di moltiplicatore, ma non sono rimasto colpito dai risultati.

Qualsiasi aiuto / input sarebbe apprezzato.


2
Non sto nemmeno leggendo, basta andare lì -> gamebalanceconcepts.wordpress.com/2010/07/07/… <-
o0 '.

il primo pensiero è che dovresti trovarti una copia di una guida dei maestri sotterranei di D&D della seconda o terza edizione. Buone risorse per i sistemi di assegnazione XP già testati / bilanciati.
Richard Fabian,

Risposte:


13

Due suggerimenti:

Esponenti! Calcola alcuni "premi xp di base" per ogni livello. Quindi la formula per un'uccisione è base_xp_reward * pow (1.1, target_level - player_level). Potresti voler bloccare il guadagno al massimo, annullare in qualche modo gli exploit e potresti voler dare zero XP al di sotto di una certa differenza, per impedire l'allevamento di neofiti.

(La ricompensa di XP base può essere anche una semplice progressione esponenziale, se lo desideri - costante_fattore * pow (1,25, livello), forse. Quindi puoi definire "exp a livello" in termini di un multiplo della ricompensa di XP base. Potrebbe essere più facile bilanciare in questo modo.)

In alternativa, rendiamolo davvero semplice. Fai la stessa cosa base-XP-ricompensa. Quindi calcola a mano un tavolo per i bonus che desideri dai vari differenziali di livello. Rendilo basato sul rapporto, in modo che uccidere qualcuno di un livello sopra di te dia sempre, diciamo, 10% di XP bonus rispetto alla ricompensa di base. E ora non devi preoccuparti di una formula: puoi semplicemente fare in modo che i numeri facciano quello che vuoi.

Le formule sono sopravvalutate, a volte devi solo inserire alcuni numeri e giocarci a orecchio.


1
+1 perFormulas are overrated, sometimes you just need to jam some numbers in and play it by ear.
RCIX il

2

Direi qualcosa del tipo "guadagna xp dal danno delt / ricevuto". Quindi se un livello 10 con 100 CV combatte un livello 15 con 200 CV. Sembra ingiusto, ma se il livello 10 fosse in grado di uccidere il livello 15 otterrebbe il doppio dell'Xp di quello che otterrebbe se combatte un livello 10 con solo 100 CV.

Anche in questo modo non devi preoccuparti di cose come se due persone combattessero lo stesso nemico con equipaggiamento diverso. Ad esempio, se un livello 8 e un livello 10 combattono un livello 13. Se il livello 8 ha equipaggiamento / armatura migliori, otterrebbe più xp del livello 10 semplicemente perché subisce più danni al livello 13.

Ma la cosa più importante: impostare regole, playtest, impostare regole, playtest, impostare regole, plasytest, ecc, ecc ...

Persino i migliori MMO dei migliori sviluppatori adattano il loro sistema di distribuzione xp finché il gioco è in vita.


0

Solo IMHO, la cosa più importante da fare è la quantità di ridimensionamento di XP richiesta per salire di livello. Un mio amico ha usato una variante di fibonacci per il suo browser simile a un ladro, ad esempio 100XP, 100XP, 200XP, 300XP, 500XP, 800XP ecc ecc.

Ho anche sentito parlare di un meccanico in alcuni giochi in cui il livello viene sottratto dagli XP guadagnati da ogni battaglia. Ad esempio, se una determinata battaglia guadagna 50XP e sono al livello 20, ricevono solo 30XP. Se fossero al livello 50 o superiore, non guadagnerebbero nulla.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.