Kaiser Graphic | Changelog

  • Konuyu açan Konuyu açan Kaiser
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 63
  • Gösterim Gösterim 4K
Güncelleme:

- Tüm objelerin(.gr2) shader ile olan bağlantısına ve c++ işlemlerine ufak bir optimizasyon uygulandı.

Normalde çalışan default sistem, kendisine gönderilen her materiali işliyordu ve her biri için aynı işlemleri tekrar tekrar yapıyordu. Bu saniyede onlarca-yüzlerce gereksiz işlem demek. Optimizasyon sonrasında ise bu varsayılan yapı değiştirildi ve aynı olan material öğeleri sadece 1 defa shaderda işlenecek şekilde düzenlendi. Aynı şey c++ tarafında ilgili pointerlara da uygulandı ve akıllı işaretçilere geçiş yapıldı.

Örneğin: bir yerde 20 tane aynı metin taşı varsa, veya 50 tane aç yabani köpek varsa, bunların sadece 1 tanesi işleme alınır, geriye kalanlara ise zaten aynı oldukları için tekrardan aynı okuma vb. işlemler yapılmaz. Bir başka örnekle; Siyah çelik giymiş 30(veya x adet) savaşçı karakterinin olduğu bir yerde, bu siyah çeliklerin sadece biri alınır ve işlenir, diğer 29u atılır.


- Su altı kamerası eklendi.
Çok özelleştirmeye gitmedim, sadece temel düzeyde çalıştırıp bıraktım. Uzun zaman önce oluşturduğum post-process ile çalışıyor ve bu post-process'in o zamandan bu yana iyileştirilmesi, shaderlarının falan ayrıştırılması gerekiyor(üşeniyorum). O yüzden bu yapıya eklediğim şeyleri şimdilik çok üstelemiyorum. Bu yapıyla ilgili daha farklı planlarım var, o yüzden iyileştirme öncesinde ortalığı karıştırmak istemiyorum.

 
Güncelleme:

- Tüm objelerin(.gr2) shader ile olan bağlantısına ve c++ işlemlerine ufak bir optimizasyon uygulandı.

Normalde çalışan default sistem, kendisine gönderilen her materiali işliyordu ve her biri için aynı işlemleri tekrar tekrar yapıyordu. Bu saniyede onlarca-yüzlerce gereksiz işlem demek. Optimizasyon sonrasında ise bu varsayılan yapı değiştirildi ve aynı olan material öğeleri sadece 1 defa shaderda işlenecek şekilde düzenlendi. Aynı şey c++ tarafında ilgili pointerlara da uygulandı ve akıllı işaretçilere geçiş yapıldı.

Örneğin: bir yerde 20 tane aynı metin taşı varsa, veya 50 tane aç yabani köpek varsa, bunların sadece 1 tanesi işleme alınır, geriye kalanlara ise zaten aynı oldukları için tekrardan aynı okuma vb. işlemler yapılmaz. Bir başka örnekle; Siyah çelik giymiş 30(veya x adet) savaşçı karakterinin olduğu bir yerde, bu siyah çeliklerin sadece biri alınır ve işlenir, diğer 29u atılır.


- Su altı kamerası eklendi.
Çok özelleştirmeye gitmedim, sadece temel düzeyde çalıştırıp bıraktım. Uzun zaman önce oluşturduğum post-process ile çalışıyor ve bu post-process'in o zamandan bu yana iyileştirilmesi, shaderlarının falan ayrıştırılması gerekiyor(üşeniyorum). O yüzden bu yapıya eklediğim şeyleri şimdilik çok üstelemiyorum. Bu yapıyla ilgili daha farklı planlarım var, o yüzden iyileştirme öncesinde ortalığı karıştırmak istemiyorum.


yakında daha realistik grafikler bekliyoruz saç dinamiği falan ? :D vs atarken kan çıkması gibi gibi..
 
Nvidia hairworks tarzı fena olur. @Kaiser Ne diyorsun bu işe shader adam?
Aklımda deli şeyler var ama yapay zeka yapayy mı bilmyiroum :D ( Savaşçı Güçlü vuruş havaya zıplayıp yere vurması. Şiddetli rakibe atılıp vurması. )
Büyülü Silah yakarken suranın şeytani elini ateşe verip sonra yakması. Parmak darbesinde rakibin boynunu tutup yere sermesi. )
Şamanda ejderha kükremesinde gökten yere ejderha inmesi.
Şimşek için keza öyle yıldırımın direkt rakibin kafasında patlaması vs vs bunları :D
 
yakında daha realistik grafikler bekliyoruz saç dinamiği falan ? :D vs atarken kan çıkması gibi gibi..
Bu ve benzeri şeyler beni de cezbediyor ama şu an için pek kolay görünmüyor maalesef :cry: Aslında kan muhabbeti var da tırt..
Yapılacak bazı şeyler var, ondan sonra belki böyle şeylere girişebilirim.

Nvidia hairworks tarzı fena olur. @Kaiser Ne diyorsun bu işe shader adam?
Bir gün directx11 geçebilirsem hairworks belki olabilir :D Onun dışında alternatifleri yapılabilir ama o da nasıl görünür bilemem tabi. Öte yandan granny da çok el kol bağlar bu durumda. Mesela atların yelesine de uygulamak istesek uygulanmaz. Tükürükle yapıştırılmış gibi tek bir ddsden çekiyor her şeyi :( Ama karakter saçları için düzenleme yapmayı deneyebilirim, güzel fikir.
 
Güncelleme:

- Projede bulunan ama artık çöp olan bazı çizim-vertex kodları ve tüm bağlantıları kaldırıldı.
(Bu temizlik devam edecek.)
C++:
Genişlet Daralt Kopyala
ms_pntVS
ms_pnt2VS
ms_lpd3dMatStack
--------
CreatePNTStreamVertexShader();
CreatePNT2StreamVertexShader();
GetMatrix();
GetMatrixPointer();
PushMatrix();
Scale();
Rotate();
RotateLocal();
MultMatrix();
MultMatrixLocal();
RotateYawPitchRollLocal();
Translate();
LoadMatrix();
PopMatrix();
..


- Damage Effect eklendi
  • Mevcut global shader yapısından ve post-processing'ten tamamen ayrı bir yönetimi ve shaderı vardır.
  • Özelleştirmelere açıktır.
  • Aç / Kapat şeklinde oyun ayarlarına eklenebilir.

 
Güncelleme


- Ağaçların aydınlatması ve gölgelendirilmesi biraz daha iyileştirildi.

Öncesinde ağaçların gövdesi, karakter yanına gidince veya yanında bir obje olduğunda onun gölgesini almıyordu.
Şimdi ise karakter ve objelerden etkilenip gölgeleniyor. Ek olarak artık dallar ve yapraklar da dinamik bir şekilde kendi kendini gölgeliyor.
Tabi ağaçlar default olarak hala fosil şu an. Özellikle bazı ağaçlardaki yapraklar aşırı eski ve dandik olduğundan istediğim görüntüyü elde edemedim. (2.fotoda arkadaki ve 3.fotoda sağdaki ağaç gibi.)
İleride harita falan değiştirdiğimde nasıl görünür pek emin değilim. Ama işlevsel olarak artık bu özelliğe sahipler.
Ekran görüntüsü 2025-10-03 184349.webp

Ekran görüntüsü 2025-10-03 185106.webp

Ekran görüntüsü 2025-10-03 184505.webp

- Nesne Market - Web Browser client src ve pythondan tamamen kaldırıldı.




Sonraki güncelleme planı: Proje genelinde Directx9'a bağımlı olan aydınlatmadan modüler aydınlatmaya geçiş sağlanacak.
 
Ağaçların, su altı kameranın görünüşleri kaliteli duruyor hocam bu damage yiyince çıkan kırmızı görüntülerin, atıyorum sadece %15 can altındayken alınan hasarda veya kritik+delici gelmiş bir damage'de çıkması derinlik katabilir zevkle takipteyim konuyu.
 
Ağaçların, su altı kameranın görünüşleri kaliteli duruyor hocam bu damage yiyince çıkan kırmızı görüntülerin, atıyorum sadece %15 can altındayken alınan hasarda veya kritik+delici gelmiş bir damage'de çıkması derinlik katabilir zevkle takipteyim konuyu.
Teşekkür ederim.
Damage efekti için pek çok kişi aynı şeyi önerdi. Bence de kritik esnasında olması daha güzel görünecektir, sonraki güncellemede o şekilde düzenleyeceğim.
 
Düzenleme / Test:
- Önceki güncellemede yapılan ağaç düzenlemesinin tutarlılığını test etmeden sonraki adıma geçmek istemedim. Bu yüzden 1.köye kaliteli diyebileceğimiz birkaç yeni ağacı rastgele ekledim ve aydınlatma-gölgeleme sonuçlarını karşılaştırıp test ettim. Önceki güncellemede dediğim gibi eski ve yeni ağaçlar arasında gözle görülür farkla çalışmakta.
Birkaç örnek görsel bırakıyorum, son fotoğrafta ise eski ve yeni ağaç yana yanadır. Görüldüğü üzere yaprakları kötünün de kötüsü olan ağaçlarda pek düzgün çalışmıyor..

Ekran görüntüsü 2025-10-05 173143.webp

Ekran görüntüsü 2025-10-05 175835.webp

Ekran görüntüsü 2025-10-05 232645.webp

Ekran görüntüsü 2025-10-05 173438.webp

Ekran görüntüsü 2025-10-05 232954.webp

- Damage Effect Düzenlemesi
  • Alternatif efekt eklendi. (Önceki hala mevcut, ancak pasif)
  • Sadece büyülü kritik hasarlarda devreye girer.
  • Özelleştirilebilir.
  • Sadece ufak düzenlemeleri kaldı, sonrasında tamamlanmış olacak.
 
Güncelleme:

- Underwater sistemi ile ilgili fark edilen ciddi bir sorun çözüldü.


- Metin2'nin DX8 ve DX9 için kullandığı varsayılan aydınlatma sistemi silindi. Yerine DX11+ uyumlu yeni bir light yapısı kuruldu ve shader bağlantıları bu yeni yapıya göre düzenlendi. Bu değişikliğin görselliğe bir etkisi bulunmuyor, sadece C++ tarafında artık gereksiz bir yük olduğu için bu bağımlılığı ortadan kaldırdım. Şu anki hali ile artık projenin herhangi bir yerinde ışıkla alakalı bir düzenleme yapılmak istendiğinde D3DLIGHT9 nesnesine ve parametrelerine başvurmak gereksizdir. Başvurulsa da null dönecektir çünkü artık cihaz üzerinde set edilmiş bir Light yok. Bunun yerine doğrudan yeni ışık yöneticisi üzerinden düzenleme yapılır, shaderlar da otomatik olarak bunu işler.

Özetle; çevre dosyalarının sunduğu değerlere (.msenv) sadık çalışır, ancak artık directx cihazına set edilmez, doğrudan projedeki tüm shaderlara gönderilir ve geriye kalan şeyleri shaderlar kendisi halleder.

Dolayısıyla aşağıdakiler ve bağlantılı olan diğer kısımlar tamamen silindi:
C++:
Genişlet Daralt Kopyala
void CStateManager::SetLight(DWORD index, CONST D3DLIGHT9* pLight)
{
    assert(index < SLightData::LIGHT_NUM);
    m_kLightData.m_akD3DLight[index] = *pLight;

    m_lpD3DDev->SetLight(index, pLight);
}
C++:
Genişlet Daralt Kopyala
struct SLightData
{
    enum
    {
        LIGHT_NUM = 8,
    };
    D3DLIGHT9 m_akD3DLight[LIGHT_NUM];
} m_kLightData;
C++:
Genişlet Daralt Kopyala
void CMapOutdoor::ApplyLight(DWORD dwVersion, const D3DLIGHT8& c_rkLight)
{
    STATEMANAGER.SetLight(0, &c_rkLight);
}
 
Eklenti:
- Bağımsız aydınlatma eklendi. Şu an için çok basit seviyededir ve statik değerlere sahip.
İlerleyen zamanlarda farklı amaçlarda kullanılmaya ve geliştirmeye müsait bir durumdadır. Ama şimdilik bekleyecek.

Olası kullanım senaryoları:
  • Oyun içindeki efektlerin çevresini dinamik bir şekilde aydınlatmak.(Depocunun yanındaki ateş gibi)
  • (İsteğe bağlı olarak) belirlenen itemlere/skillere/affectlere/derece puanına vb. göre bu efekti uygulamak.
  • Oyun içindeki bütün skillerin efektlerini dinamik hale getirmek. Örneğin; Hava Kılıcı açıldığında çevresine beyaz ışık saçması. Veya ateş Hayaleti açıldığında, ateş hayaletinin dönüşüyle birlikte hareket edecek bir parıltı. vb...
  • Haritaların/zindanların istenilen bölgelerinde kullanım.
Bunlara ek olarak görüşlerinizi ve fikirlerinizi belirtebilirsiniz.

Ekran görüntüsü 2025-10-07 212616.webp

Ekran görüntüsü 2025-10-07 215117.webp

Ekran görüntüsü 2025-10-07 215203.webp

Ekran görüntüsü 2025-10-07 213419.webp
 
Güncelleme:
Karakter seçim ekranı ve Render Target sisteminin kullanmış olduğu harici ışıklandırmalar, yine harici olarak shadera aktarıldı. Bunun sebebi, yeni yapıda her ikisinin de harita aydınlatmasından etkilenerek kendi kendine değişime uğramasıydı.
Artık tamamen sabit çalışıyorlar. (Elbette değerleri değiştirilebilir.)
Dümenden aydınlatma
Ekran görüntüsü 2025-10-08 222037.webp

Ekran görüntüsü 2025-10-08 222133.webp

- FPS Optimizasyonu eklendi.
Oyun içerisindeki FPS kullanımı dinamik ve kademeli çalışacak şekilde düzenlendi. Tüm bu grafik işlemlerinden sonra böyle bir düzenlemenin olması gerektiğini düşündüm.
Bu düzenleme ile birlikte; çok uzaklardaki karakterler-moblar vb. üst sınır FPS ile render edilmeyecek. Buna gerek de yok zaten, performans kaybından başka bir getirisi yok.

Karakter seçim ekranı ve render target sistemi bu düzenlemeden muaf tutuldu.

Özetle;
Mevcut değerler isteğe göre belirlenebilir ve değiştirilebilir.
Ekran görüntüsü 2025-10-08 183819.webp


Bu videoda da öğretmenlerin ve demircinin hareketine/FPS değerine bakabilirsiniz.
 
Güncelleme:
Metin2'nin eski ve performans düşmanı text işleme yapısı kaldırıldı, FreeType kütüphanesine geçiş yapıldı. Kemik yapı tamamen oluşturulmuş olsa da şu an için bazı uyarlamalardan ve optimizasyonlardan mahrum, ancak hepsi tamamlanacak.

Bu düzenlemeyle birlikte MULTI_TEXTLINE, EMOJI_SYSTEM gibi bazı sistemler sekteye uğramış oldu. Zaman içinde uyarlamaları tekrar yapılacak.
  • Özgür font desteği: İstenilen font .ttf olarak yüklenebilir ve kullanılabilir(Tabi türkçe karakter destekli olmalı.) Şu an için arial.ttf kullanılıyor.
  • Render maliyetinin azalması: Orjinalinde 450-500 satırlık olan CGraphicTextInstance::Render fonksiyonu 30 satıra kadar düşürüldü. Artık zilyon tane hesaplama yapılmaz, mevcut değerler FreeType ve shader tarafından beraber işlenir.
  • Charcode olarak clienta sadık kalır.
Ekran görüntüsü 2025-10-10 130739.webp

Ekran görüntüsü 2025-10-10 123642.webp

Ekran görüntüsü 2025-10-10 124011.webp

Ekran görüntüsü 2025-10-10 123438.webp

Ekran görüntüsü 2025-10-10 123623.webp
 
Güncelleme:

Su yansıması tamamlandı.
Ağaçlar yansımaya dahil edildi. + Shader uyarlaması yapıldı.
Gökyüzü dahil edildi. + Shader uyarlaması yapıldı.


Tüm haritalar için otomatik arazi düzeltme yapısı eklendi.
Hangi harita olduğu fark etmeksizin bulunan sivri-keskin kenarlar otomatik tespit edilip yumuşatılır.
(
Başlangıç seviyesindedir ve geliştirilmeye ihtiyaç duyulabilir. Şuan olduğu gibi saldım.)

Öncesi:
Sonrası:
şu otomatik düzeltme olayı muaazzam bir özellikmiş hocam ellerinize sağlık valla çok keyifli bir konuya doğru gitmeye devam ediyor
 
Arial fonta gıcık olduğum kadar hiçbir şeye gıcık değilim :D

Cut It Out Reaction GIF
 
Şu fontların outline özelliği var mı? Mobil oyun gibi oluyor böyle otlinesiz
 
Geri
Üst