MaviAyGames | [C++] Client'in 1997-2001 Arası çıkmış grafik kartları desteğini kaldırın

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 30

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Daha önce de hep belirttiğim gibi, her türlü kod kalabalığı beni rahatsız ediyor, bu yüzden kaynak kodunu olabildiğince arı-duru hale getirmeye çalışıyorum. Metin2 Client kaynak kodunda bugün en düşük özellikli sayılan bilgisayarların dahi yanlarında süperbilgisayar gibi kaldığı donanımlarda oyunun çalışabilmesi için eklenmiş birtakım kodlar var.

Şuraya bir bakın. SIS ve 3dfx driveri kontrol ediyor. SIS ve 3dfx mi kaldı?





Bir de buraya bakın. Ekran kartında 64mb'dan düşük veya 100mb'dan yüksek bellek var mı diye kontrol ediyor. 64 - 100 mb VRAM mi kaldı?



O yüzden ben bu kodları kaldırdım. 64mb VRAM'li bir 3dfx Voodoo 5 5500 ekran kartı kullanıyorsanız kusura bakmayın :D



Bir de burada hiçbir kontrol olmaksızın, durduk yere 32bit full ve 24bit alpha formatını 16bit'e düşürüyor. Muhtemelen antik ekran kartlarını da desteklemek içindir, günümüzde bunu desteklemeye gerek yok. Görüntü kalitesine zarar verir.



ms_bSupportDXT kontrolleri de gereksiz. DirectX 6'dan beri ekran kartları DXT formatlarını destekliyor. Bu kontrol de çok antik.

IsFastTNL kontrolüne de gerek yok 2010'da çıkan Intel HD grafikler bile TNL destekler.

Son olarak da günümüzde en düşük seviye laptop iGPU'larının bile desteklediği, 2006 sonrası bilgisayarların da tamamına yakınının desteklediği D3DCREATE_SOFTWARE_VERTEXPROCESSING, D3DDEVCAPS_PUREDEVICE ve D3DCREATE_MIXED_VERTEXPROCESSING gibi artık kullanılmayan yöntemleri de kaldırdım.

Gelelim nasıl yapılacağına. İndirme linkindeki Remove_Old_Graphics_Support.diff dosyasını 'ye yükleyip, gerekli satırları kendi projenizin kaynak kodu içinde düzenlemelisiniz.

Tabiki yorumlar her türlü fikir ve tartışmaya açıktır.




MaviAyGames | [C++] Client'in 1997-2001 Arası Çıkmış Grafik Kartları Desteğini Kaldırın

Metin2 Private Server Geliştirme Bağlamında Eski Grafik Donanım Uyumsuzlukları[/BR][/BR]
Metin2, özellikle Asya kökenli bir MMORPG olarak, uzun yıllardır özel sunucu sahipleri tarafından geliştirilmeye devam edilmektedir. Bu süreçte birçok teknik zorlukla karşılaşılmaktadır. Bunlardan birisi de eski grafik kartlarıyla uyum sorunudur. Özellikle 1997-2001 yılları arasında piyasaya sürülmüş olan grafik donanımlar, günümüz standartlarına göre oldukça düşük performans sunmaktadır. Ancak bazı eski client sürümleri bu tür donanımları desteklemeye çalıştığı için performans düşüklüğü, hatalar ve rendering sorunları ortaya çıkabilmektedir.

Neden Eski Grafik Kartı Desteği Sorun Yaratıyor?[/BR][/BR]
Metin2 client, DirectX 8 veya daha düşük sürümlerle çalışacak şekilde tasarlanmış bileşenler içerir. Bu sürümler, eski nesil grafik kartlarını hâlâ desteklemeye çalışmaktadır. Bu durumda bazı rendering efektleri düzgün çalışmayabilir ya da tamamen çökebilir. Örneğin, bazı gölgeler, doku renderlama veya ışık efektleri eski donanımlarda tam anlamıyla desteklenmediği için görsel bozulmalar meydana gelebilir. Bu da oyuncuların deneyimini ciddi şekilde etkilemektedir.

Geliştiriciler İçin Pratik Bir Yaklaşım: Eski Sürücü Desteğini Devre Dışı Bırakmak[/BR][/BR]
Eğer Metin2 özel sunucunuzu yönetiyorsanız ve client tarafında performans artışı elde etmek istiyorsanız, eski grafik kartı desteklerini kaldırmanız faydalı olacaktır. Bu işlem genellikle client tarafında yapılan küçük bir source code düzenlemesiyle mümkündür. Özellikle C++ tabanlı client kaynak kodlarında bu değişikliği yaparken, DirectX sürüm kontrolünü sağlayan fonksiyonları güncelleyerek sadece belirli versiyonlara izin verebilirsiniz.

Nasıl Yapılır?[/BR][/BR]
1. Öncelikle client kaynak kodunuzu açın ve DirectX başlatma fonksiyonunu bulun. Genellikle bu fonksiyon 'InitializeDirectX', 'CreateDevice' gibi isimler taşır.
2. Bu fonksiyon içinde, hangi DirectX versiyonunun desteklendiğini belirten kontroller vardır. Burada 7, 8 gibi eski sürümleri kaldırarak sadece 9 veya üstü sürümlere izin verebilirsiniz.
3. Aynı zamanda cihaz uyumluluk kontrolünü yapan kısımda, eski GPU listelerini filtreleyerek desteklenmeyen kartları erken aşamada elemek önemlidir.
4. Eğer gerekirse, kullanıcıya uygun olmayan donanım için bir uyarı mesajı gösterilebilir. Bu sayede kullanıcılar, uygun donanımı kullandıklarında daha iyi bir deneyim yaşayabilirler.

Olası Riskler[/BR][/BR]
Bu tür değişiklikler, eski donanımlara sahip oyuncuların oyuna girişini engelleyebilir. Ancak bu, genellikle tercih edilen bir stratejidir çünkü eski sistemlerde yaşanan hatalar, sunucu tarafında daha fazla problem yaratabilir. Ayrıca yeni nesil donanımlarla uyumlu client, daha kararlı ve hızlı bir oyun deneyimi sunar.

Sonuç[/BR][/BR]
Metin2 özel sunucularında client tarafında yapılan optimize edici değişiklikler, kullanıcı deneyimini ciddi anlamda artırabilir. 1997-2001 yılları arasında çıkan grafik kartları artık modern oyun motorları tarafından desteklenmemektedir. Bu nedenle, bu kartların desteklenmesini kaldırarak client performansını artırabilir ve bug raporlarını azaltabilirsiniz. Bu işlemi doğru şekilde yapmak, C++ bilgisi ve DirectX API bilgisi gerektirir. Ancak bu yatırım, uzun vadede sunucu stabilitesi ve oyuncu memnuniyeti açısından değerlidir.


MaviAyGames | Remove Support for Graphics Cards Released Between 1997-2001 from the [C++] Client

Outdated Graphics Hardware Compatibility Issues in Context of Metin2 Private Server Development[/BR][/BR]
Metin2, particularly as an Asian-originated MMORPG, has been under continuous development by private server owners for many years. Throughout this process, numerous technical challenges have emerged. One of them is compatibility issues with older graphics hardware. Graphics cards released between 1997 and 2001 offer significantly lower performance compared to today’s standards. However, certain legacy client versions still attempt to support these outdated devices, leading to performance degradation, errors, and rendering issues.

Why Does Old Graphics Card Support Cause Problems?[/BR][/BR]
The Metin2 client includes components designed to operate with DirectX 8 or lower versions, which still attempt to support older graphics hardware. In such cases, certain rendering effects may fail to function properly or crash entirely. For instance, shadows, texture rendering, or lighting effects might not be fully supported on older hardware, causing visual glitches that significantly impact the player experience.

A Practical Approach for Developers: Disabling Legacy Driver Support[/BR][/BR]
If you manage your own Metin2 private server and aim to achieve performance improvements on the client side, removing support for older graphics cards can prove beneficial. This adjustment typically involves minor modifications to the client's source code. Especially within C++-based client source codes, updating DirectX version checks within initialization functions allows you to restrict support to only specific newer versions.

How to Do It?[/BR][/BR]
1. First, open your client source code and locate the DirectX initialization function. Usually, this function has names like 'InitializeDirectX' or 'CreateDevice'.
2. Within this function, there are checks determining which DirectX versions are supported. Here, you can remove support for older versions like 7 or 8, allowing only versions 9 or higher.
3. Additionally, within the device compatibility checking section, filter out old GPUs early to exclude unsupported cards.
4. If necessary, display a warning message to users with incompatible hardware, helping them understand the need for compatible equipment for optimal gameplay.

Potential Risks[/BR][/BR]
Such changes may prevent players with older hardware from accessing the game. However, this is often a preferred strategy since errors arising from outdated systems can cause more problems on the server side. Moreover, a client compatible with newer hardware delivers a more stable and faster gaming experience.

Conclusion[/BR][/BR]
Optimizing changes made on the client side in Metin2 private servers can significantly enhance user experience. Graphics cards released between 1997 and 2001 are no longer supported by modern game engines. Therefore, removing support for these cards can improve client performance and reduce bug reports. Executing this correctly requires knowledge of C++ and the DirectX API. However, this investment proves valuable in the long term, improving server stability and player satisfaction.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt