Bir RPG'de deneyim kazancı nasıl dengelenir?


10

Şu anda klasik deneyim puanları ve seviye tamircisi olan bir RPG oyunu geliştiriyorum. Oyuncu canavarları öldürür, deneyim puanları kazanır, yeterli miktarda toplandıklarında ve güçlendiklerinde seviye atlarlar.

Her bir seviyeye ulaşmak için gerekli Exp puanlarının miktarını ve her bir canavarın her seviyede verdiği Exp miktarını nasıl dengeleyebilirim?



Gönderdiğiniz için teşekkürler. Bilgi paylaşmak için kendi kendine cevaplanan soruların harika olduğunu düşünüyorum. Ancak, sorunun kendi başına ayakta kalabilmesi gerektiğini düşünüyorum. Bu soru cevapsız olarak gönderilseydi, muhtemelen çok geniş olarak kapatılacaktır. Belki daha fazla gereksinimi içerecek şekilde soruyu biraz değiştirebilir ve karşılaştığınız problemi tam olarak belirleyebilirsiniz? Soru şu anda çok geniştir ve cevap aslında “ne istediğinize bağlıdır”.
MichaelHouse

Yanıtlar:


18

Bu konuda bir sonuca varmanın en iyi yolu - oyun geliştirmedeki çoğu şey gibi - önce oyunun nasıl oynamasını istediğinizi düşünmek ve sonra oyunun böyle oynamasına neden olacak matematiği oluşturmaktır.

Oyuncunun her seviyede ne kadar süre oynamasını istiyorsunuz?

Hikaye odaklı tek oyunculu bir RPG'de seviye yükselmelerini sürekli bir ödül akışı olarak tutmak ve tüm oyun boyunca oyuncunun birkaç dakikada bir seviye atlamasını istersiniz. Seviye yükselme oranı sabit kalır, bu nedenle seviye başına dakika işleviniz sabittir ( time = c).

MMORPG gibi daha başarı odaklı bir oyunda, seviye yükselticilerin yeni başlayanlar için sık sık olmasını istersiniz, ancak oyuncu ilerledikçe daha az ve daha az sıklıkta olmak istersiniz. Bu durumda, seviye başına dakika işleviniz polinom ( time = Level ^ c) veya hatta üstel ( time = c ^ Level) olacaktır. Bununla birlikte, üst sayı formunu üstel bir formülde olduğu gibi almak genellikle çok aşırıdır. Artışı çok daha yavaş hale getirmek için hala bir sabitle bölmek iyi bir fikir olabilir ( time = c1 ^ (1 + Level / c2)).

Rakamları kırmak için bir e-tablo kullanmanızı tavsiye ederim. 1'den beklenen maksimum seviyeye kadar bir sütun ve seviye formülüne sahip ikinci bir sütun içeren bir tablo oluşturun. Bu, hoşunuza giden sayıları bulmak için farklı formülleri denemenizi sağlar. Belki bir polinomu üstel bir bileşenle birleştirdiğinizde daha iyi sonuçlar elde edersiniz?

Burada net savaş zamanı gördüğünüzü unutmayın . Oyuncunun oyun süresi aktif olarak deneyim puanları topluyor. Oyuncunun ekipmanlarını karşılaştırarak NPC'lerle konuştuğu zamanı saymaz ve doğrudan ilerlemeye neden olmayan diğer görevleri yapar.

Mevcut maçımda (MMORPG) formülü buldum seconds(level) = 10 ^ (1 + Level / 20). İlk birkaç seviye sadece gerçek savaşın saniyeler alır (öğretici aşamada çok anında tatmin), 20-40 seviyeleri dakika alır, 50'lerde seviye başına saat olur ve maksimum 100 seviyesine yakın olduğunda görmek haftalar alır ilerleme.

Düşman başına deneyim ödülü ne kadar farklı olmalı?

Düşmanlarınız açık (veya anlamlı) bir seviye statüsüne sahip olmasa bile, onları belirli bir karakter seviyesi için dengeli bir meydan okuma olacak şekilde tasarlamak isteyeceksiniz. Peki, bir düşman 30. seviye için önerilen bir seviye üzerinden 40. seviye ödül için ne kadar deneyim kazanmalı?

Bu sorunun cevabı, karakterin seviye başına ne kadar daha güçlü hale geldiği ve karakter düzeyleriyle mevcut düşmanların ne kadar ilerisinde veya arkasında olmalarına izin vermek istediğinizle yakından ilgilidir.

Örneğin, World of Warcraft'ınki gibi bazı oyun sistemleri, bir düşmanla herhangi bir dövüşün, oyuncu karakterinin seviyesinin biraz altında veya üstünde gerçekleşmesini oldukça anlamsız hale getirir. Sadece birkaç seviye yukarıdaki herhangi bir şey oyuncuyu imha edecek, birkaç seviye altındaki herhangi bir şey hiç meydan okuma (ve ödül) olmayacak.

Bunun bir örneği Disgaea serisi olacaktır. Bu oyunda, akıllıca oynadığınızda düşmanlarınızı birkaç kez kendi karakter seviyenizle kolayca yenebilirsiniz .

Oyuncu için adil bir dövüş olan seviye parantezinde ne kadar kısıtlayıcı olmak isterseniz, oyuncunun geride kalmadığından veya şu anda savaştıkları düşmanların seviyesinin önüne geçmediğinden emin olmanız gerekir. Oyuncu düşmanların arkasına düştüğünde, oyun taşlamadan sinir bozucu bir şekilde zorlaşacaktır. Oyuncu canavarların önüne geçtiğinde, oyun çok kolay ve sıkıcı olacak.

Oyuncuyu seviye aralığının içinde tutmanın iyi bir yolu, seviye başına verilen ödülü arttırmaktır. Bir yandan, oyuncunun önerilen seviyenin biraz altında kaldığında kolayca yetişmesine izin verecektir. Öte yandan, daha zor bir alana ilerlemeden zayıf düşmanları etkin bir şekilde seviyelendirmelerine izin vermez.

Bir polinom eksp eğrisi ( exp = Level ^ c) genellikle iyi çalışır. Değer ne kadar büyük olursa c, oyuncuyu savaştıkları canavarların mevcut seviye dirseğine o kadar zorlarsınız.

Yenilmesi daha uzun süren düşmanların da orantılı olarak daha fazla deneyim vermesi gerektiğini unutmayın. 20 saniye süren bir savaş, sadece 10 saniye süren savaştan iki kat fazla tecrübe kazandırmalıdır. Bu formülünüzü genişletir exp = (Level ^ c) * minutes_per_combat.

Seviye başına nihai harcama formülü

Nihai formül şimdi ikisinden türetilebilir. experience per levelOlduğu time per level in minutesile çarpılarak experience gained per minute. Son iki bölümde bulduğunuz iki formülü alın ve çarpın. İşte: Seviye başına deneyim formülünüz.

Seviye başına bir polinom zaman artışı ile, formül

exp(level) = (level ^ c1) * (level ^ c2)

nerede

  • c1 her seviyenin ne kadar sürmesini istediğinize bağlıdır
  • c2 oyuncuyu savaştıkları düşmanların seviyesine ne kadar yakın tutmak istediğinize bağlıdır

Ne ters gidebilir ki?

En iyi düşünülmüş konsept bile uygun oyun testlerinin yerini alamaz. Oyun testleriniz ortalama oyuncuların istediğinizden daha hızlı veya daha yavaş ilerlediğini ortaya çıkarsa, genellikle düşmanlarınızın önerilen seviyelerini aşırı veya az olduğundan ve ortalama oyuncunun onları öldürmesinin ne kadar sürdüğünün bir işaretidir. Hangi karakter seviyesinde hangi düşmanların öldürülmesinin zor olduğunu ve exp değerlerini veya istatistiklerini buna göre ayarlayan, oyun testçilerinizle birlikte analiz etmeyi deneyin.

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.