Menghitung Poin Pengalaman yang didapat setelah pertempuran

9

Saya sedang mengembangkan permainan pertempuran teks sederhana dan memiliki beberapa masalah menghitung berapa banyak XP yang harus diperoleh setelah pertempuran, ada beberapa faktor yang ingin saya pertimbangkan:

1) Pemain tentu saja harus mendapatkan XP yang baik jika mereka mengalahkan seseorang dengan level yang sama

2) Pemain harus mendapatkan XP yang hebat jika mereka mengalahkan seseorang dari level yang lebih tinggi

3) Pemain harus mendapatkan XP yang buruk jika mereka mengalahkan seseorang dari level yang lebih rendah

4) Hal di atas harus skala dengan baik, yaitu jika pemain A adalah level 10 dan bertarung dengan Pemain B yang level 9 atau 11 perbedaannya tidak besar (mereka tentu saja akan mendapatkan lebih banyak XP untuk mengalahkan karakter level 11 tetapi kami tidak akan melakukannya. berharap ini menjadi besar), tetapi jika dia bertarung pada level 5 atau 15 perbedaan ini harus besar.

Hanya mengalami kesulitan dalam menghitung sesuatu yang bekerja dengan baik di semua skenario, saat ini tabel XP saya terlihat seperti di bawah ini:

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

Di PHP kode saya terlihat seperti di bawah ini untuk menghitung XP Needed:

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

$xp = $base + $offset;

Saya sudah mencoba beberapa hal yang berbeda tetapi saya belum terkesan dengan salah satu dari mereka, saya ingin bekerja dengan menghitung perbedaan di XP dan kemudian menggunakan beberapa jenis pengganda tetapi saya belum terkesan dengan hasilnya.

Setiap bantuan / masukan akan dihargai.


sumber
2
Saya bahkan tidak membaca, pergi saja ke sana -> gamebalanceconcepts.wordpress.com/2010/07/07/… <-
o0 '.
Pikiran pertama adalah Anda harus menemukan diri Anda salinan panduan master bawah tanah D & D dari edisi kedua atau ketiga. Sumber daya yang baik untuk sistem penghargaan XP yang sudah teruji / seimbang.
Richard Fabian

Jawaban:

13

Dua saran:

Eksponen! Hitung beberapa "imbalan xp dasar" untuk setiap level. Maka formula untuk kill adalah base_xp_reward * pow (1.1, target_level - player_level). Anda mungkin ingin menjepit gain ke maksimum, untuk agak membatalkan eksploitasi, dan Anda mungkin ingin memberikan nol XP di bawah perbedaan tertentu, untuk mencegah pertanian lowbies.

(Imbalan Base XP juga bisa berupa perkembangan eksponensial sederhana, jika Anda suka - constant_factor * pow (1,25, level), mungkin. Kemudian Anda dapat mendefinisikan "exp to level" dalam hal kelipatan imbalan XP dasar. Mungkin saja lebih mudah menyeimbangkan dengan cara ini.)

Atau, mari kita buat ini sangat sederhana. Lakukan hal base-XP-reward yang sama. Kemudian cari meja dengan tangan untuk bonus yang Anda inginkan dari berbagai tingkat perbedaan. Buat berdasarkan rasio, sehingga membunuh seseorang satu tingkat di atas Anda selalu memberi, katakanlah, 10% bonus XP atas imbalan dasar. Dan sekarang Anda tidak perlu khawatir tentang formula sama sekali - Anda bisa membuat angka melakukan apa yang Anda inginkan.

Formula terlalu tinggi, terkadang Anda hanya perlu memasukkan beberapa angka dan memainkannya dengan telinga.

ZorbaTHut
sumber
1
+1 untukFormulas are overrated, sometimes you just need to jam some numbers in and play it by ear.
RCIX
2

Saya akan mengatakan sesuatu seperti "dapatkan xp oleh kerusakan delt / diterima". Jadi jika level 10 dengan 100hp bertarung level 15 dengan 200 hp. Tampaknya tidak adil tetapi jika level 10 akan dapat membunuh level 15, ia akan mendapatkan dua kali xp dari apa yang akan ia dapatkan jika bertarung dengan level 10 dengan hanya 100hp.

Juga dengan cara ini Anda tidak perlu khawatir tentang hal-hal seperti jika dua orang akan melawan musuh yang sama dengan peralatan yang berbeda. Sebagai contoh, jika level 8 dan level 10 bertarung dengan level 13. Jika level 8 memiliki peralatan / armor yang lebih baik maka ia akan mendapatkan lebih banyak xp maka level 10 hanya karena ia melakukan lebih banyak kerusakan pada level 13.

Tetapi yang paling penting: Tetapkan aturan, playtest, tetapkan aturan, playtest, tetapkan aturan, plasytest, dll, dll ...

Bahkan MMO terbaik dari pengembang terbaik pun menyesuaikan sistem distribusi xp mereka selama game berjalan.

Espen
sumber
0

Hanya IMHO, hal yang paling penting untuk mendapatkan yang benar adalah penskalaan jumlah XP yang diperlukan untuk naik level. Seorang teman saya menggunakan variasi fibonacci untuk browser-suka Rogue, misalnya 100XP, 100XP, 200XP, 300XP, 500XP, 800XP dll.

Saya juga pernah mendengar tentang seorang mekanik di beberapa game di mana levelnya dikurangi dari XP yang didapat dari setiap pertempuran. Misalnya, jika pertempuran tertentu menghasilkan 50XP, dan mereka berada di level 20, maka mereka hanya menerima 30XP. Jika mereka berada di level 50 atau di atas, mereka tidak akan mendapat apa-apa.

earok
sumber