Direi che dipende, almeno in parte, dal tipo di esperienza che vuoi creare per il giocatore. Considera due esempi, il primo dei quali è un classico gioco di ruolo a turni, il secondo è uno sparatutto di tipo Gradius III , in cui desideri che il potere del giocatore si ridimensioni in base ai progressi dalla morte della sua lista, non ai potenziamenti (non per dire che è un buon sistema, solo un esempio).
Nel caso del gioco di ruolo, il tuo sistema probabilmente funziona supponendo che un giocatore non perda mai esperienza. Allo stesso modo, probabilmente vorrà agire in base al presupposto che è relativamente facile ottenere un certo livello di competenza in qualcosa, ma difficile da padroneggiare (come la maggior parte delle cose nel mondo reale). In questo caso potresti voler sviluppare una formula (come suggerito da coderanger) che è esponenziale per alcuni aspetti. Laddove la quantità di esperienza richiesta per raggiungere il livello successivo è in qualche modo esponenziale in base al livello attuale. È importante considerare, tuttavia, la velocità con cui il giocatore riceverà esperienza durante il gioco. Per esempio, un giocatore che uccide un Demone del Fuoco di livello 63 si aspetterebbe di ricevere più esperienza per la sua uccisione che se avesse ucciso una Bug di livello 2. Quindi, quando progetti la tua formula, assicurati di prendere in considerazione il tuo sistema XP. Soprattutto perché se non lo fai, uccidere la coccinella sarà altrettanto redditizio dell'uccidere i nemici più duri.
Esempio 1 (Probabilmente non è un modulo da utilizzare): XP_TO_LEVEL = ((CURRENT_LEVEL + 1) ^ SCALE) * XP_BASE
Esempio 2: XP_TO_LEVEL = (XP_BASE * CURRENT_LEVEL) ^ SCALE
Dove XP_TO_LEVEL è l'XP necessario per raggiungere il livello successivo. CURRENT_LEVEL è il livello attuale del giocatore. XP_BASE è un numero arbitrario per decidere quanto "vale" ogni livello in XP. SCALA è l'esponente che determina la velocità di ridimensionamento degli XP necessari per livellare. Se SCALE è 1, ogni livello richiederà l'esperienza XP_BASE. Se SCALE è inferiore a 1, ciascun livello richiederà meno esperienza dell'ultimo livello. Se SCALE è maggiore di 1, ogni livello richiederà più esperienza dell'ultimo livello.
La tabella seguente presuppone una SCALA di 1.1 e una XP_BASE di 100 usando l'esempio 2.
Current Level XP Needed Increase from Last Level
1 158 0
2 339 181
3 530 191
4 728 198
5 930 202
...
10 1995 218
Esempio 3: XP_TO_LEVEL = ((CURRENT_LEVEL * SCALE) ^ 1.5) * XP_BASE
Dove SCALE sta ancora determinando la velocità di ridimensionamento di XP_TO_LEVEL, ma funziona in modo leggermente diverso.
La tabella seguente presuppone una SCALA di 22 e una XP_BASE di 10 usando l'esempio 3.
Current Level XP Needed Increase from Last Level
1 28 0
2 80 52
3 146 66
4 226 80
5 316 90
...
10 894 130
Nel caso del clone Gradius, potresti prendere una strategia diversa. Puoi volere che il giocatore salga di livello costantemente, diciamo ogni due minuti circa. Inoltre, dopo che una giocata ha perso una vita e di conseguenza ha perso tutti i suoi poteri acquisiti, potresti voler aiutarlo avanzando di livello più velocemente fino a quando non raggiunge un livello adeguato per i suoi progressi nel gioco. In questo caso la tua formula sarà probabilmente più lineare, soprattutto perché l'utente non riesce a vedere quanta esperienza sta ricevendo per uccisione. Qualcosa del genere, ci vogliono 50 XP per raggiungere un nuovo livello e ogni nemico vale 1 XP. Funziona alla grande a condizione che tu gli stia fornendo un flusso relativamente costante di nemici. Ma quando il giocatore muore, perde tutto! Cosa fai adesso? Ogni nemico dovrebbe valere più di 1 XP per raggiungere l'obiettivo di raggiungerlo in modo che il gioco sia di nuovo giusto.
Esempio: XP_FROM_EACH_ENEMY = BASE_XP + (CURRENT_LEVEL - DESIRED_LEVEL) Dove XP_FROM_EACH_ENEMY è la quantità di XP che un nemico assegnerebbe quando viene ucciso. BASE_XP è la quantità di XP che un nemico vale di default (potrebbe variare per tipo di nemico). CURRENT_LEVEL è il livello del giocatore DESIRED_LEVEL è il livello che pensi dovrebbe essere al giocatore.