Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Attack ve Defense Sistemi Hakkında
#1
Başlıktaki sistemi yaptım ve iki sorum olcak.

Ekstradan bi soru sorayım: Online oyunlarda Hasar defans vs. sisteminde nasıl bi algoritma işliyo?

Tahmin yürüterek ben şöyle bir yol Düşündüm:
1. Şimdi Attack örn. 500-700 vs. Bu değerin Yüzdesini (örn.%20) alıp hasar olarak vermek istiyorum

Ama bu kısma bi akıl yürütemedim
2. Bi karakterin Defans değerinin oranına göre, Verilen hasar sayısını etkilemesi için nasıl bi yol izlemeliyim.
Ara
Cevapla
#2
event any damage  -> damage*0,2 -> healt - damage*0,2

0,2 dediğin değere bir variable atarsın(float) gelen damage ile çarparsın defans değerin haline gelir.
Ara
Cevapla
#3
(03-10-2020, Saat: 22:45)nonlinear Adlı Kullanıcıdan Alıntı:  event any damage  -> damage*0,2 -> healt - damage*0,2

0,2 dediğin değere bir variable atarsın(float) gelen damage ile çarparsın defans değerin haline gelir.

Ya yanlış Anlattım. Ya da Sen Doğru anlattın ben anlamadım Big Grin

Şimdi şöyle anlatayım.
Karakter seviye atladıkca Karaktere Stats Puanı veriyo. Stats puanlarını:

STR-DEX-HP Olarak 3  değişkene rasgele dağıtıyorum

Bu değişkenler de
STR= Attack  değişkenini Artırıyor
DEF= Defense  "   "     "
HP=   Health   "   "      "

Bana Attack Değeri kadar vuran bir kişinin hasarını defansın nasıl bi düşürme sistemi olcak
Ve Diğer tarafran da Atak değeri kadar değil de Atak değerinin belli bi yüzdesi kadar hasar vurmak istiyorum
6dNyPf.png
Ara
Cevapla
#4
(03-10-2020, Saat: 22:34)mrtcnaslnts Adlı Kullanıcıdan Alıntı:  Başlıktaki sistemi yaptım ve iki sorum olcak.

Ekstradan bi soru sorayım: Online oyunlarda Hasar defans vs. sisteminde nasıl bi algoritma işliyo?

Tahmin yürüterek ben şöyle bir yol Düşündüm:
1. Şimdi Attack örn. 500-700 vs. Bu değerin Yüzdesini (örn.%20) alıp hasar olarak vermek istiyorum

Ama bu kısma bi akıl yürütemedim
2. Bi karakterin Defans değerinin oranına göre, Verilen hasar sayısını etkilemesi için nasıl bi yol izlemeliyim.

   Merhabalar çok güzel soru. Öncelikle Gameplay Ability System (GAS) plug ini tam bu iş (ve daha üstüne bir çok daha fazla şeyle beraber) yapılmış birşey. Normal de Epic games Pubg gibi tüm oyunlarında bu sistemi kullanıyor. Bize de plugin şeklinde sunulmuş vaziyette. Bende kendi projemde bunu kullanıyorum. Ancak uygulaması ve sistemi kurması baya baya zor. Sonra  bir şeyler eklemesi modifiye etmesi ise son derece kolay. O yüzden sadece bu yönünü sorduğun için GAS plugin ini tamamen geçiyorum. İhtiyacın olan kadar sistemini sen de kurabilirsin. Şöyleki :
  1. Unreal de zaten hali hazır da başkasına "Damage" yani zarar uygulamak için "ApplyDamage" fonksiyonları, kendine uygulamak içinde "Take Damage" fonksiyonu var. Bunları kullanacağız.
  2. Her karakterine Hit point (Can), Defense ( Korunma), Attack (Saldırı) vb. değişkenleri zaten veriyorsundur. Bunlardan başka yeni bir kaç özellik daha tanımlayacağız. Bunlar AttackRatio (Saldırı kesiri) ve DefenseRatio olacak.
  3. Mesela birisi diğer bir karaktere kılıcıyla vurdu diyelim. Burda zaten OnComponentOverlap falan ya da bunun gibi bir yere kod eklemen gerekiyor. Diyelim ki kılıç dokunduğu zaman OnComponentOverlap çalışacak. Oraya hemen ardına kendi hazırladığın bir fonksiyon olacak. Adına "CustomApplyDamage" diyelim. Bu fonksiyonda önce vuran karakteri attack değeri  AttackRatio ile çarpılacak. Ancak AttackRatio değeri çarpılmadan önce diğer değerlere göre bulunacak. Mesela kılıcın verdiği ekstra oran, üzerinde bir büyü bir yüzük vb giyim malzemesinin verdiği ekstra oran toplamı AttackRatio yu oluşturacak. Sonra Attack ile AttackRatio çarpılarak ApplyDamage in BaseDamage pinine verilerek bu fonksiyon bitirilecek. Yani aşağı yukarı şöyle bir şey olacak formül
    AttackRatio = 1 +( (WeaponAttack+EquipmentAttack+SpellAttack ) /100);
    BaseDamage = Attack * AttackRatio;
    BaseDamage -> ApplyDamage noduna girecek.
  4.  Karşı karakterde bu apply damage , "OnAnyDamage" (ya da diğer varyasyonları) nın çalışmasına sebep olacak. Dolayısı ile oraya da hemen artına bir fonksiyon yapağız. Adı "CustomTakeDamage" olacak.
  5. Bu fonksiyonda bize "OnAnyDamage" nodundan gelen yani karşı karakterden gelen BaseDamage değerini parametre olarak alacağız. Burda da gelen damage den FinalDefenseValue gibi bir değişken yapıp onu çıkartacağız ve fonksiyonun en sonunda kendi HitPoint (Can) ımızdan düşüreceğiz. Peki bu FinalDefenseValue nasıl hesaplanacak. Buda bizim yani vurulan karakterin Defense* DefenseRatio su olacak. yani formüller şöyle bir şey olabilir.
   DefenseRatio = (ArmorDefense+SpellDefense+EquipmentDefense ) / 100;
   FinalDefenseValue = Defense * DefenseRatio;
   HitPoint = BaseDamage  - FinalDefenseValue;  //BaseDamage bize diğer karakterden gelen değer.
  6. Ben formülleri şu an kafamdan kaba taslak sallıyorum. Senin bunları yani formülleri değerlerin nasıl değerler alabileceğini, nasıl etkileyeceklerini iyi hesab ederek bu şekilde bir sistem kurman gerekir.
  7. Sistemi kurduktan sonra her karaktere kendine göre bir attack değeri defense değeri ayrıca her malzemeye kılıca bir ekstra attack ve defense değeri vererek sistemi kurman gerekiyor.
   Umarım açıklayıcı olmuştur.
 kolay gelsin.

Not: Kötü gözüküyor dediğin ui bumu?
Ara
Cevapla
#5
(03-10-2020, Saat: 23:10)erginegider Adlı Kullanıcıdan Alıntı:  
(03-10-2020, Saat: 22:34)mrtcnaslnts Adlı Kullanıcıdan Alıntı:  Başlıktaki sistemi yaptım ve iki sorum olcak.

Ekstradan bi soru sorayım: Online oyunlarda Hasar defans vs. sisteminde nasıl bi algoritma işliyo?

Tahmin yürüterek ben şöyle bir yol Düşündüm:
1. Şimdi Attack örn. 500-700 vs. Bu değerin Yüzdesini (örn.%20) alıp hasar olarak vermek istiyorum

Ama bu kısma bi akıl yürütemedim
2. Bi karakterin Defans değerinin oranına göre, Verilen hasar sayısını etkilemesi için nasıl bi yol izlemeliyim.

   Merhabalar çok güzel soru. Öncelikle Gameplay Ability System (GAS) plug ini tam bu iş (ve daha üstüne bir çok daha fazla şeyle beraber) yapılmış birşey. Normal de Epic games Pubg gibi tüm oyunlarında bu sistemi kullanıyor. Bize de plugin şeklinde sunulmuş vaziyette. Bende kendi projemde bunu kullanıyorum. Ancak uygulaması ve sistemi kurması baya baya zor. Sonra  bir şeyler eklemesi modifiye etmesi ise son derece kolay. O yüzden sadece bu yönünü sorduğun için GAS plugin ini tamamen geçiyorum. İhtiyacın olan kadar sistemini sen de kurabilirsin. Şöyleki :
  1. Unreal de zaten hali hazır da başkasına "Damage" yani zarar uygulamak için "ApplyDamage" fonksiyonları, kendine uygulamak içinde "Take Damage" fonksiyonu var. Bunları kullanacağız.
  2. Her karakterine Hit point (Can), Defense ( Korunma), Attack (Saldırı) vb. değişkenleri zaten veriyorsundur. Bunlardan başka yeni bir kaç özellik daha tanımlayacağız. Bunlar AttackRatio (Saldırı kesiri) ve DefenseRatio olacak.
  3. Mesela birisi diğer bir karaktere kılıcıyla vurdu diyelim. Burda zaten OnComponentOverlap falan ya da bunun gibi bir yere kod eklemen gerekiyor. Diyelim ki kılıç dokunduğu zaman OnComponentOverlap çalışacak. Oraya hemen ardına kendi hazırladığın bir fonksiyon olacak. Adına "CustomApplyDamage" diyelim. Bu fonksiyonda önce vuran karakteri attack değeri  AttackRatio ile çarpılacak. Ancak AttackRatio değeri çarpılmadan önce diğer değerlere göre bulunacak. Mesela kılıcın verdiği ekstra oran, üzerinde bir büyü bir yüzük vb giyim malzemesinin verdiği ekstra oran toplamı AttackRatio yu oluşturacak. Sonra Attack ile AttackRatio çarpılarak ApplyDamage in BaseDamage pinine verilerek bu fonksiyon bitirilecek. Yani aşağı yukarı şöyle bir şey olacak formül
    AttackRatio = 1 +( (WeaponAttack+EquipmentAttack+SpellAttack ) /100);
    BaseDamage = Attack * AttackRatio;
    BaseDamage -> ApplyDamage noduna girecek.
  4.  Karşı karakterde bu apply damage , "OnAnyDamage" (ya da diğer varyasyonları) nın çalışmasına sebep olacak. Dolayısı ile oraya da hemen artına bir fonksiyon yapağız. Adı "CustomTakeDamage" olacak.
  5. Bu fonksiyonda bize "OnAnyDamage" nodundan gelen yani karşı karakterden gelen BaseDamage değerini parametre olarak alacağız. Burda da gelen damage den FinalDefenseValue gibi bir değişken yapıp onu çıkartacağız ve fonksiyonun en sonunda kendi HitPoint (Can) ımızdan düşüreceğiz. Peki bu FinalDefenseValue nasıl hesaplanacak. Buda bizim yani vurulan karakterin Defense* DefenseRatio su olacak. yani formüller şöyle bir şey olabilir.
   DefenseRatio = (ArmorDefense+SpellDefense+EquipmentDefense ) / 100;
   FinalDefenseValue = Defense * DefenseRatio;
   HitPoint = BaseDamage  - FinalDefenseValue;  //BaseDamage bize diğer karakterden gelen değer.
  6. Ben formülleri şu an kafamdan kaba taslak sallıyorum. Senin bunları yani formülleri değerlerin nasıl değerler alabileceğini, nasıl etkileyeceklerini iyi hesab ederek bu şekilde bir sistem kurman gerekir.
  7. Sistemi kurduktan sonra her karaktere kendine göre bir attack değeri defense değeri ayrıca her malzemeye kılıca bir ekstra attack ve defense değeri vererek sistemi kurman gerekiyor.
   Umarım açıklayıcı olmuştur.
 kolay gelsin.

Not: Kötü gözüküyor dediğin ui bumu?

Teşekkürler


Evet UI bu neden?
Ara
Cevapla
#6
(04-10-2020, Saat: 17:50)mrtcnaslnts Adlı Kullanıcıdan Alıntı:  
(03-10-2020, Saat: 23:10)erginegider Adlı Kullanıcıdan Alıntı:     Merhabalar çok güzel soru. Öncelikle Gameplay Ability System (GAS) plug ini tam bu iş (ve daha üstüne bir çok daha fazla şeyle beraber) yapılmış birşey. Normal de Epic games Pubg gibi tüm oyunlarında bu sistemi kullanıyor. Bize de plugin şeklinde sunulmuş vaziyette. Bende kendi projemde bunu kullanıyorum. Ancak uygulaması ve sistemi kurması baya baya zor. Sonra  bir şeyler eklemesi modifiye etmesi ise son derece kolay. O yüzden sadece bu yönünü sorduğun için GAS plugin ini tamamen geçiyorum. İhtiyacın olan kadar sistemini sen de kurabilirsin. Şöyleki :
  1. Unreal de zaten hali hazır da başkasına "Damage" yani zarar uygulamak için "ApplyDamage" fonksiyonları, kendine uygulamak içinde "Take Damage" fonksiyonu var. Bunları kullanacağız.
  2. Her karakterine Hit point (Can), Defense ( Korunma), Attack (Saldırı) vb. değişkenleri zaten veriyorsundur. Bunlardan başka yeni bir kaç özellik daha tanımlayacağız. Bunlar AttackRatio (Saldırı kesiri) ve DefenseRatio olacak.
  3. Mesela birisi diğer bir karaktere kılıcıyla vurdu diyelim. Burda zaten OnComponentOverlap falan ya da bunun gibi bir yere kod eklemen gerekiyor. Diyelim ki kılıç dokunduğu zaman OnComponentOverlap çalışacak. Oraya hemen ardına kendi hazırladığın bir fonksiyon olacak. Adına "CustomApplyDamage" diyelim. Bu fonksiyonda önce vuran karakteri attack değeri  AttackRatio ile çarpılacak. Ancak AttackRatio değeri çarpılmadan önce diğer değerlere göre bulunacak. Mesela kılıcın verdiği ekstra oran, üzerinde bir büyü bir yüzük vb giyim malzemesinin verdiği ekstra oran toplamı AttackRatio yu oluşturacak. Sonra Attack ile AttackRatio çarpılarak ApplyDamage in BaseDamage pinine verilerek bu fonksiyon bitirilecek. Yani aşağı yukarı şöyle bir şey olacak formül
    AttackRatio = 1 +( (WeaponAttack+EquipmentAttack+SpellAttack ) /100);
    BaseDamage = Attack * AttackRatio;
    BaseDamage -> ApplyDamage noduna girecek.
  4.  Karşı karakterde bu apply damage , "OnAnyDamage" (ya da diğer varyasyonları) nın çalışmasına sebep olacak. Dolayısı ile oraya da hemen artına bir fonksiyon yapağız. Adı "CustomTakeDamage" olacak.
  5. Bu fonksiyonda bize "OnAnyDamage" nodundan gelen yani karşı karakterden gelen BaseDamage değerini parametre olarak alacağız. Burda da gelen damage den FinalDefenseValue gibi bir değişken yapıp onu çıkartacağız ve fonksiyonun en sonunda kendi HitPoint (Can) ımızdan düşüreceğiz. Peki bu FinalDefenseValue nasıl hesaplanacak. Buda bizim yani vurulan karakterin Defense* DefenseRatio su olacak. yani formüller şöyle bir şey olabilir.
   DefenseRatio = (ArmorDefense+SpellDefense+EquipmentDefense ) / 100;
   FinalDefenseValue = Defense * DefenseRatio;
   HitPoint = BaseDamage  - FinalDefenseValue;  //BaseDamage bize diğer karakterden gelen değer.
  6. Ben formülleri şu an kafamdan kaba taslak sallıyorum. Senin bunları yani formülleri değerlerin nasıl değerler alabileceğini, nasıl etkileyeceklerini iyi hesab ederek bu şekilde bir sistem kurman gerekir.
  7. Sistemi kurduktan sonra her karaktere kendine göre bir attack değeri defense değeri ayrıca her malzemeye kılıca bir ekstra attack ve defense değeri vererek sistemi kurman gerekiyor.
   Umarım açıklayıcı olmuştur.
 kolay gelsin.

Not: Kötü gözüküyor dediğin ui bumu?

Teşekkürler


Evet UI bu neden?

10 numara ui olmuş işte. Daha ne olsun Smile
Ara
Cevapla
#7
(04-10-2020, Saat: 18:07)erginegider Adlı Kullanıcıdan Alıntı:  
(04-10-2020, Saat: 17:50)mrtcnaslnts Adlı Kullanıcıdan Alıntı:  Teşekkürler


Evet UI bu neden?

10 numara ui olmuş işte. Daha ne olsun Smile

Hadi ya :Smile tşekkürler. Daha da düzenleyip rötuş flan yaptım şuankini görsen bayılırsn o zamn :Smile
Ara
Cevapla
 


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Game Mode Hakkında mariposaaaa 2 190 19-01-2021, Saat: 20:45
Son Yorum: mariposaaaa
  Tick Time'ın Sistemi Sömürmesini Nasıl Engellerim? Optimizasyon Güray 3 88 13-01-2021, Saat: 20:51
Son Yorum: Güray
  Envanter Sistemi Structure Hakkında Yardım vatoz419 2 216 03-01-2021, Saat: 22:53
Son Yorum: vatoz419
  Speed Boost hakkında mariposaaaa 2 102 19-11-2020, Saat: 19:37
Son Yorum: mariposaaaa
  launcher silah bağlantısı hakkında mariposaaaa 1 65 18-11-2020, Saat: 17:16
Son Yorum: erginegider
  Al event hakkında mariposaaaa 1 85 21-10-2020, Saat: 23:11
Son Yorum: erginegider
  Sound Cue Hakkında? mrtcnaslnts 4 144 25-09-2020, Saat: 19:51
Son Yorum: mrtcnaslnts
  Enventer Sistemi İçin Tavsiye omer.hatay 3 149 18-09-2020, Saat: 21:55
Son Yorum: erginegider
  Level Hakkında mariposaaaa 6 167 01-09-2020, Saat: 19:23
Son Yorum: mariposaaaa
  Spawn ai hakkında mariposaaaa 4 219 31-08-2020, Saat: 00:50
Son Yorum: muhammedsgrl

Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi

Unreal Engine Türkiye

This forum is community driven and supported by voluntary community members. It has nothing to do with Epic Games.

Bu site sadece destek amaçlıdır. Epic Games ile bir ilgisi yoktur.