Savaşın kilitlenmesini çözmek için çizilme hasarına bir alternatif nedir?


37

Kazı kazan hasarı , herhangi bir başarılı saldırının her zaman en az miktarda hasar vereceği bir oyun teknisyenidir. Bu genellikle savunmanın doğrudan bir saldırgan tarafından verilen hasardan çıkarıldığı çıkarma savaşlarında kullanılır. Bu nedenle, hedef her zaman en az düzeyde hasar alacaktır.

Böyle bir sistemin dezavantajı, en azından benim için, bunun bir hack olmasıdır. Bu gibi basit bir formül alır Damage = Attack - Defenseve (biraz) daha karmaşık bir haline dönüşür: Damage = max(Attack - Defense, 1).

Ayrıca bir oyuncunun karakterini / etc'sini geliştirmedeki becerisinden mahrum bıraktığını hissediyorum. Ne kadar savunma bonusu alırlarsa kazansın, her saldırı küçük bir zarar verir. Öyleyse neden bir anlam ifade etmiyorsa, savunmanı neden bu kadar yüksek tuttun?

Ayrıca bu, Hp ve hasar için daha büyük sayıların kullanılmasını teşvik eder, böylece çizik hasarı gerçekten ihmal edilebilir düzeydedir. Sonuçta, eğer minimum hasar 1 ise ve sadece 10 Hp'ye sahipseniz, bu hala sağlığınızın% 10'udur. 20 Hp ile bile, bu% 5'tir. Ve kesinlikle gerekli olmadıkça, daha büyük sayıları kullanmaktan kaçınmayı tercih ederim.

Bununla birlikte, çizik hasarının çok önemli bir tarafı vardır: kilitlenme problemini çözer.

Kilitlenme, hiçbir taraf diğerine zarar veremediğinde gerçekleşir. Tüm kaynaklarınızı savunmaya, birkaçını da saldırıya yatırırsanız, karakteriniz zarar görmeyebilir, ancak onlar da çok fazla başa çıkamazlar. Böylece, iki tarafın da zarar veremeyeceği bir karşılaşmaya varabilirsiniz, bu yüzden savaş sonsuza dek sürecek. Bu, özellikle kritik vuruşlar (aynı zamanda nefret ediyorum) gibi rastgele mekanikler yoksa.

En azından çizik hasarında biri sonunda kazanacak. Sadece en çok Hp veya en yüksek atak sayısına sahip olan olabilir, ancak savaş sona erecek.

Bu yüzden her zaman sonuç çıkacak bir savaş sistemine sahip olmayı seviyorum. Ama çizikli hasardan hoşlanmıyorum. Alternatiflerim neler?

Alternatifler yok rasgele sayılar haddeleme dahil; Dövüşün% 100 deterministik olmasını istiyorum. Aynı savaşta mücadele edilirse, aynı sonuç elde edilmelidir.

Oyun hakkında ayrıntılı bilgi edinmek istiyorsanız, savaşın otomatikleştirilebileceği sıra tabanlı dövüşler hakkında düşünün (kuvvetlerinizi tasarlayın, sonra diğerlerine karşı çukurlar).


8
Kilitlenme problemini çözmek için bozucu bir zırh sistemini (karşılaşma başına) yapabilir misiniz?
Tetrad

1
"Başarılı Rol Yapma Oyunlarının Tasarım Kalıpları" na bir göz atmanızı
öneririm

3
Şeytanın Avukatı pozisyonu: oyuncuları güvenli şekilde oynamaya zorlamak yerine, neden kilitlenebilecek aptal yapılar kullanmak isteyip istemediklerine karar vermelerine neden izin verilmiyor?
Patrick Hughes,

3
@PatrickHughes: Çünkü oyuncunun kendilerini iyi bir şekilde ödüllendirmeden kötü bir duruma sokmalarına izin vermenin kötü bir oyun tasarımı olduğuna inanıyorum. Ve hatta forewarning ile aldıkları gerekir dışarı onlar oluyor görüyoruz kez bunu. Karakter tasarımı seçimleri geri alınamazsa, o zaman iyi bir fikir gibi görünen seçimler yaparak kendilerini sürekli batırmadıklarını önceden bilmeleri gerekir.
Nicol Bolas

Yanıtlar:


41

Bir yorulma / dayanma sistemi uygulayabilirsiniz. Gittikçe daha fazla saldırı yapıldığında, oyuncu gittikçe yorulmakta ve yorgunluk arttıkça kılıcını 50 kez çevirdikten sonra ani bir şekilde kılıcı salladıktan sonra aniden çok ağır hissetmeye başlaması gibi) iyi bir savunma yapamamaktadır. Bu, iyi bir karakter geliştiren bir oyuncunun hızlı karşılaşmalarda zarar görmeyeceği, ancak uzun süren savaşta bir kilitlenmeyi önleyen hasarı arttıracağı anlamına gelir.


21

Bu çok açık uçlu bir soru gibi görünüyor. Kilitlenmeleri önleme çözümleri (daha önce bahsedilmeyen):

  • Uygun bir sonuç olarak kilitlenmelere izin verin. Bu en az beklenen veya tipik bir çözümdür. Örneğin, bir RTS oyununda bu, huzursuz bir ateşkes veya şiddetli bir dengede gergin ancak düşük anahtarlı bir çatışma olabilir.
  • İzin verilen bağlarla bir zaman sınırlaması
  • Limitten sonraki ilk vuruş / puan / puanın kazandığı bir zaman sınırlaması (ani ölüm / fazla mesai)
  • Sistemde rastgele tehlikeler ( Super Smash Bros'ta bir bomba ). Bu durumun odağını hücumdan savunmaya değiştirir.
  • Sistemi dengesizlik edecek herhangi bir dış faktör (örneğin, yüksek hasarlı ve düşük zırhlı üçüncü bir ajan, her iki tarafın da tüm bu zırhsız "düello" ile anlaşması)
  • % Olarak düşürülen savunma (savunma sınırlandırıldığı sürece muhtemelen en basit çözüm)
  • Oyun dinamiklerini değiştiren beceriler veya taktikler (Pelerin / Görünmezlik gibi bir hasara neden olmayan seçenekler)
  • Çok daha yüksek hasar vermenin araçları (klasik kritik vuruşlar, gizli bonuslar, yükseklik bonusları, arazi bonusları, rastgele yerin rasgele kısımlarını lavlara çeviren bir yetenek)
  • Zırhın hasar görmesi ya da alçaltılması ya da doğrudan yüksek savunma karakterlerini hedef alan bir zarara yol açma (hesaplamaya zırhı yerleştirme becerisi, bu nedenle daha az savunmaya sahip ajanlar daha az hasar alır)
  • Sınırlı kullanım öğeleri veya becerileri (örneğin bombalar, güçlü ancak boşaltma yetenekleri). Sınırlı kullanımı dengelemek için çıkmazın ötesinde uzun vadeli hedefler varsa faydalıdır.
  • Dövüşü yapay olarak sonlandırın (klasik "Kaçmak" seçeneği)

7

Değişken olarak, yara birikimi ekleyebilirsiniz. Kuşkusuz, dev bakır balta ağır çelik zırhlara nüfuz etmeyecek, ancak bazı keskin hasarlara neden olacak ve hatta kemikleri kırabilir. Aynı şey mermiler ve yelekler için de geçerlidir.

Bir karaktere her basışta, delici ve kesikli hasarın bir kısmını, biriken künt hasarlara dönüştürür. Belirli bir eşikten sonra (örneğin dayanıklılığa bağlıdır), biriken hasar, karakterin savaş becerilerine müdahale edecektir. Buradaki bazı seçenekler:

  • Aynı vücut parçalarına vurulurken zırh daha az etkili olabilir.

  • Önemli yaralanmalar: periyodik hasar, ağrı nedeniyle zayıflık.

  • Ağır yaralanmalar: Kısa süreli bilinç kaybı (karakteri çok savunmasız kılar).

  • Aşırı yaralar: kalıcı stat kaybı (eğer karakter hayatta kalmayı başarırsa).

İlgili: Cüce Kalesinde Hasar Mekaniği


2
Her silahın zırh tarafından bloke edilemeyecek hasar vermesini öneriyorum. Kılıçlar ve hançerler küçük bludgeoning kapasitesine sahip olacaktı, fakat eksenler ve maketler çok etkili olurdu.
jmegaffin,

5

Yalnızca bazı hasar türlerine karşı koruyan zırhlarla, farklı hasar türleri uygulayın. Örneğin, kinetik hasar, asit hasarı, yangın hasarı, vb. Her zarara karşı hiçbir zırh korunmamalıdır.

Kullanıcılar, tüm hasar türlerine karşı korumak için zırhlarını katmanlandırabilirler, ancak aynı zamanda tüm hasar türlerine karşı da koruma sağlayamazlardı. Bu, bazı zırh katmanlarından geçmek için oyuncuların hasar türlerini değiştirmek zorunda kaldığı savaşlarda bazı stratejileri de uygular.


4

Sadece olabilir değil bir savunma, stat var ve sadece daha büyük düşmanlarına büyük hp verir. Devasa sayılardan kaçınmak istediğinizi biliyorum, ancak eğer saldırganların doğrudan oyuncuların girişine dayanmadığı belirleyici, dönüşe dayalı bir oyun istiyorsanız (saldırının üstünü karıştırmanın insan hatası olma olasılığı yoktur) savunma statüsü biraz anlamsız görünüyor yanı sıra.

Sunumun yönü hakkında endişeleriniz varsa, HP'yi Hearts veya Health tırtıl EG 100 hp = 1 kalbe bölebilirsiniz. Bir karakter HP'yi kaybedince kalpler kararmaya başlar, sonra tamamen kaybolur. Bu şekilde, oyuncunun 129301239103123hp'tan daha kolay bir şekilde anlaşılması daha kolaydır, ancak bazı sihirli denklemleri dengelemek konusunda endişelenmenize gerek yoktur.

Gerçekçilik konusunda endişeleniyorsanız, saldırının hedefi başarılı bir şekilde engeller veya öldürme darbesine kadar sadece hafifçe çizilmiş gibi görünmesini her zaman canlandırırsınız.


1
Saldırganların doğrudan oyuncuların girişine dayanmadığı deterministik, sıra tabanlı bir oyun istiyorsanız […] savunma statüsü de biraz anlamsız görünüyor. ” Savunma, “şans eseri” kavramına dayanmıyor Özlemek". Daha çok D & D'deki hasar azaltma, THAC0 değil (ya da bugünlerde ne diyorlarsa). Savunma, 30 savunma varsa 40 hasar hücumunun 10 hasara indirilebileceği anlamına gelir. Bunun nasıl "anlamsız olabileceğini" anlamıyorum.
Nicol Bolas,

1
Matematiğin biraz farklı olduğunu biliyorum, ancak gerçekten bir karaktere orantılı bir miktar sağlık vermekle belirli bir miktar zararı azaltmak arasında oyun oynama açısından büyük bir fark yoktur. Hedefe her zaman zarar vermenin bir yolu olmalıysa, hayır. EDIT: Savunmayı ya da diğer oyun değiştiricileri yok sayan özel bir saldırı olmadığı varsayılıyor.
Lewis Wakeford,

Savunmasız bir savunma statüsüne sahip olmak size Hp'den daha fazlasını verir (özel saldırılar veya değiştiriciler hariç, her şeyin dışında). Zamanla zarar veren kullanıcılar ile yüksek zarar gören kullanıcılar arasında katmanlaşma oluşturur. Birden çok kez saldıran ancak daha az hasar alan bir karakter, yüksek savunma karakterine yol açarken yavaş, yüksek hasarlı karakter zaman içinde daha fazla hasar verir. Sadece hit puanlar bu sınıflandırmayı yaratmayacak.
Nicol Bolas

4

Savunma için bir aşınma tamircisi ekleyin. Her saldırıyı hedefin savunmasını hafifçe azaltın.

Sonunda, zayıf bir saldırı bile asıl hasarı verecek kadar savunmayı kaldıracak.


3

Eğer tamsayı dünyasından çıkma ve çıkarma sistemini canlandırma konusunda istekli iseniz, sorun yaşarsanız, Warlords Battlecry III'ten hasar azaltma algoritmasını kullanabilirsiniz:

damage = attack

while DR > 0:
    usedDR = DR
    if DR > damage
        usedDR = damage
    damage = damage - usedDR * 0.5
    DR = (DR - usedDR) / 2

HP = HP - damage

Bu, yukarıdaki sözde koduna çok benzeyen bir işlevdir:

damage(attack, DR) = attack * 2 ^ -(DR/attack)

DR saldırıdan daha küçük olduğunda (gelen hasar), saldırı gibi davranır - k * DR (k 0.693 ( ln(2)tam)). DR'ye yakın veya daha büyük olduğunda, o zaman verilen hasarı yarıya indirir DR/attack. Örneğin, DR = 30 ve saldırı = 10 için hasar 1.25 olur (saldırı 3 kez yarıya indirilir).

İnsanın değerlendirmesi daha karmaşık ve daha zor gibi görünebilir ancak hack içermez ve her iki parametrede de değişiklikler önemlidir. Saldırganın bonus saldırı gücü kazanması veya savunucunun DR'yi az miktarda alması veya kaybetmesi durumunda ortaya çıkan hasar değişecektir.


1

Yüzen kullanın.

Tam sayı HP'yi oynatıcıya sunsanız bile, hp için yüzdürme ve hasar için yüzerlik kullanın.

Şimdi kesirli zırh sınıfları kullanıyorum, burada 1.0 zırhının yenilmez olduğu ve 0.0 zırhının "tam hasar aldığı" anlamına geliyor. Hasar şu şekilde azalır:

float hpReduction = hp - dmg*(1.f - armor) ;

Bu formül, zırhını -1 olarak ayarlayarak "çift hasara" izin verme etkisine sahiptir.

Hasarları kategoriler halinde de sınıflandırdım, Starcraft'ın sarsıcı / patlayıcı hasar tiplerini veya Eve'nin hasar tip sistemini görün .

Şimdi, 0,99 sınıf zırhınızı küçük bir imp tırmalamak sonunda Kiraz Ölümüne dokunur, ancak saldırılar oyuncuya zarar vermeyecek gibi görünecektir (1.15 bg'den 1.1499 bg'ye giderken 1 bg'de kalacaktır. sonraki saldırı ..)


0

Bir beceri grafiği, bir oyuncunun yüksek derecede asimetrik yapımlar yapma kabiliyetini azaltmak için üst düzey savunma becerileri için ön koşul olarak bazı hasar verici becerileri ortaya koyabilir.

Kritik vuruşlar, bir kişinin savunması absürd yüksek olmadıkça bir miktar hasar alabilir. Onları rastgele yerine periyodik yaparsanız, yine de deterministik bir savaşa sahipsiniz.

Birkaç başarısız vuruştan sonra, daha yüksek isabet şansı ve hasar lehine otomatik olarak saldırı hızını azaltabilirsiniz. Süper hızlı çizik karakterin saniyede on saldırı yapıyordu; Şimdi, onbeş saldırının zarar vermemesinden sonra,% + 50'de saniyede üç saldırı ve% + 200 hasar alır. Bu, kritik isabetlere benzer, ancak bu tür durumlar için daha hızlıdır.

Zırhtan yüzde bazlı hasar azaltma kullanabilirsiniz, ancak maksimum HP'nizi canlandırmanın başka bir yolundan daha ilginç yapmak için, azaltma yüzdesinin daha zayıf isabetler için daha yüksek olmasını sağlayabilirsiniz. Örneğin, 1-20hp hasar için% 90, 20-30 için% 60 ve diğer her şey için% 30 azalma.

Son olarak, büyük sayılar için endişelenmeyin. Size küçüklerden daha iyi bir kontrol derecesi sağlarlar. Seviye 1 karaktere sahip olmak, 100 vuruş puanı ile başlar, yedi vuruşta öldüren, beşe değil bir şeye sahip olabileceğiniz anlamına gelir. Bu, çirkin derecede yıkıcı olmayan zaman etkilerinde zehir hasarı ve diğer hasara sahip olabileceğiniz anlamına gelir (isterseniz bazıları gibi). Büyük sayıları görüntülemek istemiyorsanız, gösterilmemesi için bir yol bulun.


0

Her zaman bir çözüm olmasını istediğinizi söylüyorsunuz, ancak bunun bir zafer olması gerekiyor mu?

Dominions tarafından kullanılan yaklaşımı göz önünde bulundurun - saldırgan otomatik olarak 50'ye döndüğünde. 75 yaşındayken defans otomatik olarak rotaya geçer. (Bir rota otomatik olarak çalışmaz - bazı birimler rotalamaya bağışıklık kazanır ve bir sabit bir ünite bile olsa onu terk edemez.) Sırayla 100 kişi kaldı.

İşleyiş şeklini tam olarak anlamadığım halde (diğer tarafı öldürmenin çok uzun sürdüğü durumlar var) temel fikir geçerli olmaya devam ediyor.

Ne önereceğim:

Her iki tarafın gücünün bir ölçüsüne bakın. (Vuruş noktaları bariz bir başlangıç ​​noktasıdır ancak dikkatli olun, Dominions'ın bu konuda bir anlam ifade etmeyen "kayıp" sayma noktalarının sayıldığı - bu konuda sorun yaşamalarına neden olan ordularla sonuçlanan sınama, çare vb. hiçbirini bile almayın.) Ulaşılan minimum değeri takip edin ve yeni bir minimum ayarlandıktan sonra kaç dönüş olduğunu not edin. Yeni bir minimum ayar olmadan çok uzun sürerse, bir tür kilitlenmeye sahip olursunuz ve saldırgan geri çekilmelidir.


0

Henüz görmediğim bir alternatif, zırh değeriniz saldırıyı olumsuz yaptığından, gerçek bir blok için küçük bir RNG ekleyebileceğinizdir:

const stratchDamage = 1;
var armour = 10; 
var blockCount = 0;

function registerAttack (incomingAttack)
{
    var incomingDamage = incomingAttack - armour;

    // Nothing unusual, deal damage
    if( incomingDamage > 0 ) 
    {
        dealDamage(incomingDamage);
    } 

    // Armour cancels out attack, deal scratch damage
    else if( incomingDamage == 0 ) 
    {
        dealDamage(scratchDamage);
    }

    // Armour over attack value, check if can block
    else
    {
        var trueBlockChance = armour - incomingDamage;

        // blockCount starts at 0, will always block first attack
        if( trueBlockChance  > blockCount ) 
        {
            // Can technically do nothing, or trigger block animations etc
            block();
            blockCount ++; // Increment block so they can't block forever
        }
        else
        {
            dealDamage(stratchDamage);
            blockCount = 0;
        }
    }
}

Zırh dikkate alındıktan sonra verilen hasar açığı ne kadar yüksek olursa, çizilmeye karşı başka bir hasar almadan önce karakterin engelleyebileceği saldırılar o kadar fazla olur.

Bu, savunmasız istatistikler için küçük bir ekstra ölçek sağlarken onları yenilmez yapmaz, ayrıca isterlerse ve doğal olarak kilitlenmeleri önlerse, bu blok teknisyeninden saldırılara izin verir.

Savunmanız sırasında hücumda istatistik topladıysanız kavgalar uzun zaman alabilir, ancak sonunda oraya varacaksınız.


OP'den Alıntı: Savaşın % 100 deterministik olmasını istiyorum. Bu% 100 deterministik mücadeleye izin vermiyor.
Charanor

Öyleyse blok da saldırıya dayalı olarak döndürülebilir, bir saldırıdaki trueBlock seviyesinin her biri için, düşmanın kazınması hasarı için birçok kez saldırması gerekir. Aynı fikir geçerli olabilir.
Tom 'Blue' Piddock

@Charanor - Cevabı% 100 deterministik olacak şekilde ayarlayın.
Tom 'Blue' Piddock

-1

3B dövüş oyunlarının çoğu çizik hasarını önler. Örnekler Tekken ve Soul Calibur 2'dir. Mükemmel bir savunmayı zorlaştırarak bunu önlerler. Bazı saldırılar tepki veremeyecek kadar hızlı. Bence bu oldukça iyi bir çözüm.


-1

Savunma etkinliğinin azaltılmasının iyi bir seçenek olmadığını düşünüyorum. Bir oyuncuyu dağıtmak kötü bir oyun deneyimine yol açar. Neden diğer tarafa gitmiyorsun?

Neden zaman geçtikçe Saldırı'yı ​​çalıştırmıyorsunuz. Bu, çizilme hasarının zamanla artmasını sağlar ve tıkanma teşvikini azaltır. Oyunun orta yarısında, bir karakter savunurken onu beklerken bir başkasını öldürebilir.

Bazı PNP RPG'ler bir "gerginlik mekanizması" uygular. Her dönüş gerginliği bir artar. Tüm rulolar, gerilimi artıran bir değiştiriciye sahiptir ve savaşı sona doğru iter.

Dövüş oyunlarından gelen bir başka fikir savunmadan geçen bir saldırıdır. Oyununuzun sıralı mı yoksa gerçek zamanlı mı olduğunu bilmiyorum, ancak bu saldırı rakibi bir açılan oyuncuya da açabilir veya onu veya bazı yeteneklerini geçici olarak devre dışı bırakabilir.

İşin püf noktası savunmayı güçlendirmemek olduğuna inanıyorum. Diğer seçenekleri savunma kadar iyi yapın veya savunmanın iyi bir seçenek olduğu süreleri azaltın.

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.