Çok eski bir web tarayıcısı kullanıyorsunuz. Bu veya diğer siteleri görüntülemekte sorunlar yaşayabilirsiniz.. Tarayıcınızı güncellemeli veya alternatif bir tarayıcı kullanmalısınız.
Yağmur efekti için oyundaki mevcut kar yağışı sisteminde kar/yağmur makrolarına göre değişiklikler yapabilirsin veya yeni bir sınıf da yazmayı düşünebilirsin.
CSnowParticle::Init -> basitçe şu 4 değişkenin başlangıç değerlerini değiştirdiğinde yağmur efektine biraz daha benziyor:
ama tam anlamıyla öyle gözükmesi için vertex'lere rotasyon mantığı eklemen (CSnowParticle::GetVerticies) ve kameraya göre (CSnowParticle::SetCameraVertex) rotate etmen gerekiyor.
Grafik programlama bilgim olsaydı denerdim, belki yapay zekadan yardım alabilirsin.
Yağmur seslerini, görüntüsünü ve yağış dinamiğini ayarladım.
Ayrıca kar yağışını da revize ettim.
Sistemin kodlarını ciddi ölçüde optimize ettim ve okunurluluğunu iyileştirdim.
Oyuna ilk girişte aynı doğru msenv seçimi gibi doğru yağmur sesinin seçilmesini de ayarladım.
Eline sağlık harika görünüyor
İzleyince yeni bir fikir geldi
Yıldırım efekti bulabilirsen fırtınalı veya sağanak yağışlı havada rastgele noktalara spawn edebilirsin
Eline sağlık harika görünüyor
İzleyince yeni bir fikir geldi
Yıldırım efekti bulabilirsen fırtınalı veya sağanak yağışlı havada rastgele noktalara spawn edebilirsin
Güncelleme:
Mount like horse sistemi ve pek çok varlığın boyut & görüntüleme mesafesi ayarlarını ekledim.
Zenaris'ten aldığım bu ayarların içindeki hard-coded kısımları tamamen dinamik yaptım.
Görüntüleme mesafesi ayarlarının çalışma mantığını data-oriented şekilde değişip lüzumsuz tekrarlanan ve okuması zor kodlardan temizledim.
Binek kostüm sistemi ve yanında gezen binek veya mount like horse lazım. Zenaris binekleri proto'dan TYPE_HORSE olarak çekiyor ama mainline'da binekler TYPE_NPC. Bu yüzden ben TYPE değiştirmek yerine binek itemlerini değil de binek moblarını (Mesela 20114 White Lion gibi) yeni bir rank ekleyerek o ranka geçirdim.
Şimşek sistemi ekledim.
Sadece sağanak yağış ve fırtına varken çalışır.
Çeşitli şimşek sesleri arasından rastgele birini seçer.
(ekranın parlama efektleri vs henüz yok, çünkü onlar shader üzerinden, bu sadece ses sistemi)
Jetty'nin yöntemi CSnowParticle içinde olduğundan, şimsek çakmalı mı kontrolünü her bir particle başına her frame için yapıyordu.
Yani ekranda 650 yağmur tanesi varsa, 60 fps için saniyede kırk bin kere şimşek çakmalı mı kontrolü yapıyordu.
Ben WeatherController diye yeni bir class oluşturup kontrolleri oradan saniyede kırk bin kere değil, sadece bir kere olacak şekilde yaptım. CPU yükü muazzam azaldı ve rahatladı.
Ayrıca kod kalitesini çok ciddi oranda iyileştirdim.
Sesler 3 boyutlu uzayda göğün rastgele bir noktasında oynatılır (farkındayım x ve y ekseni varyasyonu artmalı, ayarlayacağım)
Binek kostüm sistemi ve yanında gezen binek veya mount like horse lazım. Zenaris binekleri proto'dan TYPE_HORSE olarak çekiyor ama mainline'da binekler TYPE_NPC. Bu yüzden ben TYPE değiştirmek yerine binek itemlerini değil de binek moblarını (Mesela 20114 White Lion gibi) yeni bir rank ekleyerek o ranka geçirdim.
Bende mount like horse kullanıyorum. Örneğin Martyde mob protoda KNIGHT olarak geçiyor. Sizin atmış olduğunuz kontrol kısmı bende böyle.
C++:
float CInstanceBase::ScaleSizeFunc(DWORD race)
{
if (race <= 8)
return 0.0f;
if (NO_SCALE_BOSS(race))
return 0.0f;
const CPythonNonPlayer::TMobTable* mobTable = CPythonNonPlayer::instance().GetTable(race);
if (!mobTable)
return 0.0f;
if (mobTable->bRank == CPythonNonPlayer::MOB_RANK_KING && IsStone())
// aici introduci codul pentru metine: valori de la cât la cat sa scaleze: 100-150%
return CPythonSystem::instance().GetStoneScale();
else if (mobTable->bRank == CPythonNonPlayer::MOB_RANK_BOSS)
// aici introduci codul pentru sefi: valori de la cat la cat sa scaleze: 100-130%
return CPythonSystem::instance().GetBossScale();
else if (IsHorse())
// aici introduci codul pentru sefi: valori de la cat la cat sa scaleze: 50-100%
return CPythonSystem::instance().GetMountScale();
return 0.0f;
}
Bende mount like horse kullanıyorum. Örneğin Martyde mob protoda KNIGHT olarak geçiyor. Sizin atmış olduğunuz kontrol kısmı bende böyle.
C++:
float CInstanceBase::ScaleSizeFunc(DWORD race)
{
if (race <= 8)
return 0.0f;
if (NO_SCALE_BOSS(race))
return 0.0f;
const CPythonNonPlayer::TMobTable* mobTable = CPythonNonPlayer::instance().GetTable(race);
if (!mobTable)
return 0.0f;
if (mobTable->bRank == CPythonNonPlayer::MOB_RANK_KING && IsStone())
// aici introduci codul pentru metine: valori de la cât la cat sa scaleze: 100-150%
return CPythonSystem::instance().GetStoneScale();
else if (mobTable->bRank == CPythonNonPlayer::MOB_RANK_BOSS)
// aici introduci codul pentru sefi: valori de la cat la cat sa scaleze: 100-130%
return CPythonSystem::instance().GetBossScale();
else if (IsHorse())
// aici introduci codul pentru sefi: valori de la cat la cat sa scaleze: 50-100%
return CPythonSystem::instance().GetMountScale();
return 0.0f;
}
Tamam işte o is_horse kontrolü Mob_Proto'da TYPE sütunu TYPE_HORSE mu diye kontrol ediyor. Binek moblarını TYPE_NPC'den TYPE_HORSE'a geçirmek için src'de pek çok değişiklik yapmak lazım. Benim yöntemim daha kolay. Bineklerde mob_rank'ın bir önemi olmadığı için rank üzerinden kontrol etmeyi daha mantıklı buldum.
else if (mobTable->bRank == CPythonNonPlayer::MOB_RANK_MOUNT)
// aici introduci codul pentru sefi: valori de la cat la cat sa scaleze: 50-100%
return CPythonSystem::instance().GetMountScale();
Burayı böyle yaptım ardından mob protodan Manuyu KNIGHT yazan yere mount yazdım derledim sunucuya ve packe attım ama değişmedi Sanırım bu işleri bırakacağım. Game src tarafına da sanırım MOUNT diye tanımlatmam gerekiyor.
else if (mobTable->bRank == CPythonNonPlayer::MOB_RANK_MOUNT)
// aici introduci codul pentru sefi: valori de la cat la cat sa scaleze: 50-100%
return CPythonSystem::instance().GetMountScale();
Burayı böyle yaptım ardından mob protodan Manuyu KNIGHT yazan yere mount yazdım derledim sunucuya ve packe attım ama değişmedi Sanırım bu işleri bırakacağım.
Yağmurun yere düşünce sıçrama ve karın yere düşünce erime efektlerini ayarladım.
Kar yağışı ağırsa veya kar fırtınası varsa kar sisi oluşmasını ayarladım.
Yağmurun yere düşünce sıçrama ve karın yere düşünce erime efektlerini ayarladım.
Kar yağışı ağırsa veya kar fırtınası varsa kar sisi oluşmasını ayarladım.