Metin2 shader sistemi, klasik client grafik yapısını daha modern, daha kontrollü ve daha temiz bir hale taşımak isteyen geliştiriciler için önemli bir dönüm noktası olabilir. Bu projede yapılan çalışma, yalnızca birkaç efekt değişikliği veya basit görsel iyileştirme değil; client tarafındaki grafik akışının kökten yeniden düzenlenmesi anlamına geliyor.
Paylaşılan bilgilere göre client dosyaları bütünüyle shader yapısına taşındıktan sonra, yapılan tüm düzenlemeler geliştiricinin kendi files yapısına aktarılmış durumda. Bu files daha önce Zenaris grafiklerini referans alıyordu ve mümkün olduğunca iyileştirilmiş bir yapıdaydı. Yeni süreçte ise hem Zenaris’e ait kodlar hem de Metin2’nin kullandığı eski fixed pipeline kodları kaldırılmış. Bu, grafik tarafında ciddi bir temizlik ve yeniden yapılanma anlamına geliyor.
Metin2 Shader Sistemi Neden Önemli?
Metin2 shader sistemi, eski grafik işleme yaklaşımını geride bırakıp daha esnek ve modern bir render akışına geçmeyi hedefliyor. Metin2’nin klasik client yapısında pek çok işlem fixed pipeline üzerinden ilerliyordu. Bu eski sistemde SetTransform, SetTexture ve benzeri çağrılar grafik tarafının temelini oluşturuyordu. Yeni yapıda bu çağrıların projeden kaldırılması, tüm grafik işlemlerinin shader uyumlu şekilde yeniden ele alınmasını zorunlu hale getiriyor.
Bu değişikliğin en büyük avantajı, grafik akışının daha merkezi ve kontrol edilebilir hale gelmesi. Ancak bunun bedeli de var. Daha önce doğrudan eklenip derlenebilen bazı grafik tabanlı sistemler artık eski yöntemlerle çalışmıyor. Örneğin MOB_LAG_FIX, RENDER_TARGET veya benzeri sistemler shader yapısına uyarlanmadan projeye doğrudan eklenemiyor. Hatta bazı durumlarda derleme aşamasında bile sorun çıkabiliyor.
Bu yüzden bu çalışma, yalnızca görsel kaliteyi artırma projesi olarak değil, aynı zamanda client mimarisini dönüştürme projesi olarak değerlendirilmeli. Grafikle ilişkili her yeni sistemin shader tarafında karşılığı olması gerekiyor. Eğer mevcut shader yapısıyla uyumlu değilse, yeni shader yazılması ve bu shaderın sisteme tanıtılması gerekiyor.
StateManager Temizliği Ne Anlama Geliyor?
Paylaşılan örnekte StateManager yapısından geriye yalnızca temel sahne başlatma, sahne bitirme, ışık ayarlama ve cihaz yönetimi gibi sınırlı fonksiyonların kaldığı görülüyor. Bu durum, eski grafik yönetim katmanının büyük ölçüde boşaltıldığını gösteriyor. Önceden client içinde pek çok render işlemi StateManager üzerinden yönlendirilirken, artık bu yapı çok daha sade bir hale getirilmiş.
Özellikle STATEMANAGER.SetTransform ve STATEMANAGER.SetTexture gibi klasik fixed pipeline çağrılarının artık projede bulunmaması önemli. Çünkü Metin2 client geliştirme tarafında birçok eski sistem hâlâ bu çağrılara yaslanıyor. Bu kodlar kaldırıldığında, eski sistemlerin büyük kısmı doğrudan çalışamaz hale geliyor.
Bu değişiklik geliştirici açısından ciddi bir uyarlama yükü oluşturuyor. Ancak aynı zamanda kod tabanındaki eski bağımlılıkları temizleme fırsatı da veriyor. Crash ile tespit edilen eksik noktaların shader yapısına taşınması, projenin stabilizasyon aşamasında olduğunu gösteriyor. Yani işin büyük kısmı yalnızca “çalışıyor” hale getirmek değil, arada kaynayan eski grafik çağrılarını da tek tek yakalamak.
Render Target ve Offline Shop Uyarlaması
Son düzenlemeler arasında render target sisteminin tamamen shader yapısına uyarlandığı belirtiliyor. Bu oldukça önemli bir aşama. Çünkü render target, Metin2 client tarafında özellikle arayüz içi model gösterimleri, preview sistemleri, market ya da offline shop gibi yapılarda kritik rol oynayabiliyor.
Offline shop’un ihtiyaç duyduğu bazı fonksiyonların da bu geçişle birlikte uyarlandığı aktarılıyor. Bu, shader sistemine geçişin yalnızca teorik bir grafik yenileme olmadığını, pratik oyun sistemleriyle de entegre edildiğini gösteriyor. Çünkü render target gibi sistemler uyarlanmadığında, oyun içinde model önizleme ya da özel arayüz gösterimleri bozulabilir.
Metin2 shader sistemi bu noktada yeni sistemler için daha katı bir temel sunuyor. Artık her şeyin aynı render mantığına uyumlu olması gerekiyor. Bu durum başlangıçta zorlayıcı olsa da, ileride geliştirilecek özel grafik sistemleri için daha düzenli bir temel oluşturabilir.
Kazanç
Render target ve arayüz içi model gösterimleri shader yapısına uygun hale getiriliyor.
Zorluk
Eski grafik tabanlı sistemler artık doğrudan eklenemiyor; özel uyarlama gerekiyor.
Kaldırılan Dosyalar ve Temizlik Süreci
Projeden tamamen kaldırılan dosyalar listesi de çalışmanın kapsamını net şekilde gösteriyor. EterLib ve GameLib tarafında eski shader, decal, screen filter, shadow texture, terrain decal ve snow particle dosyalarının temizlendiği belirtiliyor. Bu dosyalar muhtemelen eski grafik yapısının parçasıydı ve yeni shader tabanlı mimaride kullanılmayacak şekilde projeden çıkarıldı.
Bu tip temizlik çalışmaları kısa vadede hataya açık olabilir. Çünkü bir dosyanın veya sınıfın kullanılmadığını düşünmek kolaydır; ancak client içinde beklenmedik bir yerde hâlâ referans kalmış olabilir. Geliştiricinin crash yaşayarak arada kaynayan noktaları tespit etmesi de bu yüzden normal. Büyük refactor çalışmalarında bu süreç kaçınılmazdır.
Kaldırılan dosyalar arasında özellikle GrpPixelShader, GrpVertexShader ve ScreenFilter gibi dosyaların yer alması dikkat çekici. Bu, yalnızca eski kodları yamamak yerine daha kapsamlı bir yeniden yapılandırma yapıldığını gösteriyor.
Projeden Kaldırılan Başlıca Alanlar
- Eski decal yapıları
- Eski pixel ve vertex shader sınıfları
- Screen filter yapısı
- Shadow texture dosyaları
- Terrain decal sistemleri
- Snow particle dosyaları
Bu Geçişin Artıları ve Eksileri
Metin2 shader sistemi ile tam geçiş yapmanın en büyük artısı, grafik tarafında daha modern ve tek merkezli bir yapı kurmak. Login ekranından lonca simgesine kadar her şeyin shader tarafından yönetilmesi, ileride yapılacak görsel geliştirmeleri daha sistemli hale getirebilir. Işıklandırma, efektler, özel materyal davranışları ve modern görsel dokunuşlar için daha esnek bir zemin oluşur.
Eksisi ise uyumluluk. Mevcut birçok Metin2 sistemi, eski fixed pipeline kodlarını bekliyor. Bu sistemlerin shader uyumlu hale getirilmesi gerekiyor. Hazır paylaşılan sistemleri doğrudan almak artık daha zor. Her grafik eklentisinin önce projedeki shader yapısına uygun hale getirilmesi şart.
Bir diğer sorun debug performansı. Kaynak metinde debug modda FPS’in 10 civarlarında olduğu belirtiliyor. Bu, geliştirme aşamasında can sıkıcı olabilir ama release performansı farklı olabilir. Yine de shader geçişi sonrası performans testlerinin, özellikle yoğun şehir ve savaş sahnelerinde dikkatle yapılması gerekir.
| Artılar | Eksiler |
|---|---|
| Daha modern grafik temeli | Eski sistemlerle uyumluluk sorunları |
| Kod tabanında fixed pipeline temizliği | Hazır sistemlerin doğrudan eklenememesi |
| Render akışında daha merkezi kontrol | Yeni shader yazma ihtiyacı |
| Gelecekte özel görsel geliştirmelere uygun zemin | Debug modda düşük FPS ve test yükü |
Özelleştirmeden Önce Stabilizasyon
Paylaşımda özellikle şu nokta vurgulanıyor: Proje şu anda özelleştirme aşamasında değil, stabilizasyon ve temizlik aşamasında. Bu yaklaşım oldukça doğru. Çünkü bu kadar büyük grafik mimarisi değişikliğinden sonra doğrudan yeni efektler, yeni görsel seçenekler veya kullanıcı taraflı ayarlar eklemek yerine önce sistemin tüm temel durumlarda sorunsuz çalışması gerekir.
Login ekranı, karakter seçimi, oyun içi UI, lonca simgesi, render target, offline shop, terrain, particle ve diğer görsel sistemlerin hepsi ayrı ayrı test edilmeli. Crash veren noktalar shader yapısına uyarlanmalı. Eski dosya ve sınıf kalıntıları temizlenmeli. Ancak bundan sonra özelleştirme tarafı sağlıklı şekilde geliştirilebilir.
Bu tip projelerde “önce temizlik, sonra özellik” yaklaşımı uzun vadede daha verimli olur. Çünkü kötü temelin üzerine eklenen her yeni özellik, ileride daha büyük refactor yükü yaratır.
Metin2 client geliştirme, grafik çalışmaları ve PvP server teknolojileri hakkında daha fazla içerik için MMOoyun teknoloji kategorisini takip edebilirsiniz. Metin2 ve MMO içerikleri için oyun kategorisine de göz atabilirsiniz.
Genel Değerlendirme
Metin2 shader sistemi üzerine yapılan bu çalışma, klasik Metin2 client grafik yapısını kökten değiştiren ciddi bir teknik düzenleme olarak öne çıkıyor. Zenaris referanslarının ve fixed pipeline kodlarının kaldırılması, render target sisteminin shader yapısına uyarlanması ve eski grafik dosyalarının temizlenmesi, projenin basit bir görsel paket değil kapsamlı bir mimari dönüşüm olduğunu gösteriyor.
Bu geçiş, hazır sistem eklemeyi zorlaştırsa da uzun vadede daha temiz, daha modern ve daha kontrollü bir grafik altyapısı sağlayabilir. Şu an için en doğru yaklaşım, geliştiricinin de belirttiği gibi özelleştirmeye geçmeden önce tam stabilizasyonu sağlamak. Sistem oturduktan sonra, Metin2 client tarafında çok daha esnek ve modern grafik geliştirmelerinin önü açılabilir.
Daha Fazla Oyun Icerigi
Rehber, haber, onizleme ve oyun dunyasina dair daha fazla icerige mmooyun.com sitemizden ulasabilirsiniz. Ek icerikler ve oyun odakli guncel paylasimlar icin dev.mmooyun.com adresini de ziyaret edebilirsiniz.
Paylaş :









