Bir savaştan sonra kazanılan Deneyim Puanlarını hesaplama


9

Basit bir metin savaş oyunu geliştiriyorum ve bir savaştan sonra ne kadar XP kazanılması gerektiğini hesaplarken bazı sorunlar yaşıyorum, dikkate almak istediğim birkaç faktör var:

1) Oyuncular elbette aynı seviyeden birini yenerse iyi DP kazanmalıdır.

2) Oyuncular daha yüksek seviyedeki birini yenerse büyük DP kazanmalıdır.

3) Oyuncular daha düşük seviyedeki birini yenerse zayıf XP kazanmalıdır.

4) Yukarıdakiler güzelce ölçeklenmelidir, yani A oyuncusu seviye 10 ise ve seviye 9 veya 11 olan Oyuncu B ile savaşırsa fark çok büyük olmamalıdır (elbette seviye 11 karakterini yenmek için daha fazla DP kazanırlardı, ancak biz bunun çok büyük olmasını bekleyebilirsiniz), ancak 5 veya 15 seviye ile savaşacaksa bu fark çok büyük olmalıdır.

Tüm senaryolarda iyi çalışan bir şeyi hesaplamakta sorun yaşıyorum, şu anda XP masam aşağıdaki gibi görünüyor:

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

PHP benim kod Gerekli XP hesaplamak için aşağıdaki gibi görünüyor:

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

$xp = $base + $offset;

Birkaç farklı şey denedim ama hiçbirinden etkilenmedim, XP'deki farkı hesaplayıp daha sonra bir çeşit çarpan kullanarak çalışmak istiyorum ama sonuçlardan etkilenmedim.

Herhangi bir yardım / girdi takdir edilecektir.



ilk düşünce, kendinize ikinci veya üçüncü baskıdan bir D&D zindan ustaları kılavuzunun bir kopyasını bulmanız gerektiğidir. Zaten oynanmış test edilmiş / dengeli XP ödüllendirme sistemleri için iyi kaynaklar.
Richard Fabian

Yanıtlar:


13

İki öneri:

Üslü! Her seviye için bazı "temel xp ödülü" hesaplayın. Öyleyse öldürme formülü base_xp_reward * pow'dir (1.1, target_level - player_level). İstismarları bir şekilde geçersiz kılmak için kazancı maksimuma çıkarmak isteyebilirsiniz ve düşük hayvanların tarımını önlemek için belirli bir farkın altında sıfır XP vermek isteyebilirsiniz.

(Base XP ödülü, basit bir üstel ilerleme olabilir, eğer isterseniz - constant_factor * pow (1.25, level). O zaman temel XP ödülünün katları açısından "level to exp" i tanımlayabilirsiniz. bu şekilde dengelenmesi daha kolay.)

Alternatif olarak, bunu gerçekten basitleştirelim. Aynı temel XP ödülünü yapın. Ardından, çeşitli seviye farklarından istediğiniz bonuslar için elle bir masa bulun. Orana dayalı yapın, böylece birini bir üstünüzde öldürmek her zaman temel ödül üzerinden% 10 bonus XP verir. Ve şimdi bir formül için endişelenmenize gerek yok - sadece sayıların istediğinizi yapmasını sağlayabilirsiniz.

Formüller abartılıyor, bazen sadece bazı sayıları girmeniz ve kulaktan oynamanız gerekiyor.


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

2

Ben "delt / alınan hasar xp kazanmak" gibi bir şey söyleyebilirim. Eğer 100hp ile bir seviye 10, 200 hp ile bir seviye 15 ile savaşırsa. Haksız görünüyor, ancak 10. seviye 15. seviyeyi öldürebilseydi, 10. seviyeyi sadece 100 beygir gücüyle dövüşürse elde edeceğinin iki katı xp elde ederdi.

Ayrıca bu şekilde, iki kişinin aynı düşmanla farklı ekipmanlarla savaşması gibi şeyler hakkında endişelenmenize gerek kalmaz. Örneğin, seviye 8 ve seviye 10 seviye 13 ile savaşırsa, seviye 8 daha iyi ekipman / zırha sahipse, daha fazla xp alırsa, seviye 10 sadece seviye 13'e daha fazla zarar vermesine neden olur.

Ama en önemli şey: Kurallar, playtest, set kuralları, playtest, set kuralları, plasytest, vb.

En iyi geliştiricilerin en iyi MMO'ları bile, oyun yaşadığı sürece xp dağıtım sistemlerini ayarlar.


0

Sadece IMHO, doğru olan en önemli şey, seviye atlamak için gerekli olan XP'nin ölçeklendirme miktarıdır. Bir arkadaşım tarayıcı Rogue benzeri için örneğin 100XP, 100XP, 200XP, 300XP, 500XP, 800XP vb. İçin bir fibonacci varyasyonu kullandı.

Ayrıca, her savaşta kazanılan XP'den seviyenin çıkarıldığı bazı oyunlarda bir tamirci duydum. Örneğin, belirli bir savaş 50XP kazanırsa ve seviye 20'deyse, sadece 30XP alırlar. Eğer 50 ya da daha üst bir seviyedeyse hiçbir şey kazanamazlardı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.