Granny Güncelleme (2.4 den 2.9)

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhaba arkadaşlar, kendi düzenlediğim server filesimda bir hata ile karşılaştım ve araştırmalarım sonucunda çözüme ulaştırdım aslında çok uzun süre önce çözüldü fakat aklıma gelmişken paylaşmak istedim. Client_sourceniz üzerinden ufak değişiklikler ile yapabilirsiniz işlemlerinizi. Şimdi hatalar hakkında bilgi vermek istiyorum.​


Bknz:



Ve birde resim (Resim bana ait değil fakat konu ile alakalı olduğu için eklendi):

5kRNAL.jpg


Videodaki bozukluklar ve texture görünümü ile alakalı bir çok sorunu hallediyoruz.

BAŞLAYALIM
Açılır> client_reboot_dev\source\EterGrnLib

Bulunur> Mesh.cpp

Açıp aratılır;

Kod:
int * boneIndices = GrannyGetMeshBindingToBoneIndices(pgrnMeshBinding);

Değiştirilir

Kod:
int * boneIndices = (int*)GrannyGetMeshBindingToBoneIndices(pgrnMeshBinding);

Aratılır;

Kod:
return GrannyGetMeshBindingToBoneIndices(m_pgrnMeshBindingTemp);

Değiştirilir


Kod:
return (int*)GrannyGetMeshBindingToBoneIndices(m_pgrnMeshBindingTemp);

Aratılır;

Kod:
m_pgrnMeshDeformer = GrannyNewMeshDeformer(pgrnInputType, pgrnOutputType, GrannyDeformPositionNormal);

Değiştirilir

Kod:
m_pgrnMeshDeformer = GrannyNewMeshDeformer(pgrnInputType, pgrnOutputType, GrannyDeformPositionNormal, GrannyAllowUncopiedTail);

Aynı konumdan devam edilir ve açılır > ModelInstanceUpdate.cpp

Aratılır;

Kod:
GrannyUpdateModelMatrix(m_pgrnModelInstance, fSecondsElapsed, (const float *) pMatrix, (float *) pMatrix);

Değiştirilir

Kod:
GrannyUpdateModelMatrix(m_pgrnModelInstance, fSecondsElapsed, (const float *) pMatrix, (float *) pMatrix, false);

Aynı konumdan devam edilir ve açılır > Material.cpp

Aratılır;

Kod:
granny_variant twoSideResult = GrannyFindMatchingMember(pgrnMaterial->ExtendedData.Type, pgrnMaterial->ExtendedData.Object, "Two-sided"); if (NULL != twoSideResult.Type)     GrannyConvertSingleObject(twoSideResult.Type, twoSideResult.Object, TwoSidedFieldType, &twoSided);

Değiştirilir

Kod:
granny_variant twoSideResult; if (GrannyFindMatchingMember(pgrnMaterial->ExtendedData.Type, pgrnMaterial->ExtendedData.Object, "Two-sided", &twoSideResult)       && NULL != twoSideResult.Type)     GrannyConvertSingleObject(twoSideResult.Type, twoSideResult.Object, TwoSidedFieldType, &twoSided, NULL);
Aynı konumdan devam edilir ve açılır > ModelInstanceModel.cpp

Aratılır;

Kod:
return GrannyGetMeshBindingToBoneIndices(m_vct_pgrnMeshBinding[iMeshBinding]);

Değiştirilir


Kod:
return (int*)GrannyGetMeshBindingToBoneIndices(m_vct_pgrnMeshBinding[iMeshBinding]);

Açılır> client_reboot_dev\source\UserInterface

Bulunur> UserInterface.cpp

Aratılır;

Kod:
static void GrannyError(granny_log_message_type Type,                         granny_log_message_origin Origin,                         char const *Error,                         void *UserData) {     TraceError("GRANNY: %s", Error); }

Değiştirilir

Kod:
static void GrannyError(granny_log_message_type Type,                         granny_log_message_origin Origin,                         char const* File,                         granny_int32x Line,                         char const *Error,                         void *UserData) {     TraceError("GRANNY: %s", Error); }

Ve son olarak eğer build ederken UserInterface.cpp üzerinden hata verirse aşağıdaki gibi yapın

8Q32A7.png


Ve ek olarak client sourcenizi vermiş olduğum vs2013 için olan "extern" kullanın klasördeki "extern" i silip verdiğim atın combile edin ek olarak verdiğim "granny2.dll" yi de oyunun kurulu olduğu yere atın bu olmadan oyuna giriş yapamazsınız.

Source+dll:

Virüs total

n2aLkR.png


İyi günler 🆒
Granny Kütüphanesi Güncelleme Rehberi (2.4 -> 2.9)


Granny Kütüphanesi Nedir?
Granny kütüphanesi, 3D model animasyonları için yaygın olarak kullanılan bir yazılım geliştirme arayüzüdür (SDK). Özellikle Metin2 gibi oyunlarda karakter, eşya ve diğer 3D modellerin render edilmesinde büyük rol oynar. Bu kütüphane sayesinde animasyonlar daha akıcı ve gerçekçi hale getirilebilir. Zamanla geliştirilen yeni versiyonlarla beraber performans artışı ve yeni özellikler kazandırılır. Ancak bu güncellemeler bazen mevcut sistemlerle uyumsuzluk yaratır. Bu nedenle doğru şekilde güncelleme yapılması gerekir.

Neden Granny 2.4'ten 2.9'a Geçilmeli?
Metin2 özel sunucularında Granny 2.4 sürümü uzun yıllardır kullanılmıştır. Ancak bu sürüm eski teknolojileri desteklemektedir. Yeni animasyon formatları, model tipleri veya gelişmiş rendering teknikleriyle uyumlu olmayabilir. Granny 2.9 ise daha modern yapılarla uyumlu çalışır, performansı artırır ve daha fazla animasyon türünü destekler. Bu da daha kaliteli bir oyun deneyimi sunar.

Güncelleme Sırasında Dikkat Edilmesi Gerekenler
Güncelleme sırasında dikkat edilmesi gereken bazı önemli konular vardır. Öncelikle mevcut model dosyalarınızın yeni sürüme uyumlu olup olmadığı test edilmelidir. Bazı dosyalar doğrudan çalışmaz hale gelebilir. Bu durumda dönüştürme işlemleri gerekebilir. Ayrıca client tarafında çalışan sistemlerin de uyumlu hale getirilmesi gerekir. Eğer doğru yapılmazsa client çökebilir veya model görüntülenemeyebilir. Özellikle C++ tabanlı client src üzerinde değişiklikler yapılırken dikkatli olunmalıdır.

Güncelleme Adımları
Önce mevcut Granny 2.4 dosyalarının yedeklenmesi önerilir. Ardından yeni sürüm olan 2.9 indirilir. Kütüphane dosyaları projeye entegre edilir. Bu aşamada linkleyici ayarlarının da güncellenmesi gerekir. Daha sonra client src kısmında Granny ile ilgili fonksiyonlar yeniden bağlanmalıdır. Bu işlem genellikle UIScript veya PyRoot dosyalarında yapılan küçük düzenlemelerle tamamlanabilir. Model yükleme fonksiyonları test edilir. Hata varsa debug işlemleri yapılır.

Python ve C++ Entegrasyonu
Metin2 özel sunucularında hem C++ hem de Python tabanlı sistemler aktif olarak kullanılmaktadır. Granny 2.9 ile uyumlu hale getirmek için hem C++ tarafında hem de Python tarafında değişiklikler yapılabilir. Özellikle PyGUI ile yazılmış GUI sistemlerinde 3D model render ediliyorsa, burada da Granny 2.9 uyumu sağlanmalıdır. Bu, genellikle Martysama gibi geliştiricilerin dikkat edeceği detaylardır. Oyun çekirdeği (game core), DB core ve diğer sistemlerle uyumlu çalışması için tüm yapıların senkronize edilmesi şarttır.

Model Format ve Paketleme İşlemleri
Yeni Granny sürümü farklı model formatlarını destekleyebilir. Bu nedenle pack dosyalarında değişiklik yapmanız gerekebilir. Pack sistemi ile modellerin doğru şekilde sunucuya entegre edilmesi önemlidir. Özellikle özel kostümler, silahlar veya efektler gibi öğeler yeni formata göre optimize edilmelidir. Bu sayede hem performans artar hem de görsel kalite korunur.

Test ve Hata Ayıklama
Güncelleme sonrası mutlaka kapsamlı testler yapılmalıdır. Client açılımı, model yükleme süresi, animasyon geçişleri, PvP sırasında model sorunları gibi pek çok nokta kontrol edilmelidir. Özellikle PvP sistemlerinde karakter animasyonları sorunsuz çalışmalı ki oyun deneyimi bozulmasın. Hatalar loglanmalı ve çözülmelidir. Bu süreçte debug araçları ve loglama sistemleri devreye girmelidir.

Sonuç
Granny kütüphanesini 2.4’ten 2.9’a yükseltmek, Metin2 özel sunucularında grafiksel ve teknik açıdan büyük avantajlar sağlar. Ancak bu işlem dikkat isteyen bir süreçtir. Doğru planlama, test ve debug ile sistemin stabil ve performanslı bir şekilde çalışması sağlanabilir. Geliştiricilerin özellikle client src, game server programming ve DB sistemleri üzerinde dikkatli hareket etmesi gerekir.


Granny Library Update Guide (2.4 -> 2.9)


What is the Granny Library?
The Granny library is a widely used software development kit (SDK) for 3D model animations. In games like Metin2, it plays a significant role in rendering characters, items, and other 3D models. Thanks to this library, animations can become smoother and more realistic. With newer versions released over time, performance improvements and new features are added. However, these updates may sometimes cause compatibility issues with existing systems, so correct updating is essential.

Why Should You Upgrade from Granny 2.4 to 2.9?
Granny 2.4 has been used for years in Metin2 private servers. However, this version supports older technologies and may not be compatible with new animation formats, model types, or advanced rendering techniques. Granny 2.9 works better with modern structures, increases performance, and supports more animation types, resulting in a higher quality gaming experience.

Important Considerations During the Update
Several important points must be considered during the update. First, you should check whether your current model files are compatible with the new version. Some files may stop working directly after the upgrade, requiring conversion processes. Additionally, systems running on the client side must also be made compatible. If done incorrectly, the client may crash or fail to display the model. Especially when making changes to C++ based client sources, caution must be exercised.

Update Steps
First, it is recommended to backup your existing Granny 2.4 files. Then, download the new version, 2.9. Integrate the library files into the project. At this stage, linker settings also need to be updated. Afterwards, functions related to Granny in the client source must be reconnected. This process can often be completed with minor adjustments in UIScript or PyRoot files. Load testing functions are tested. If there are errors, debugging is performed.

Python and C++ Integration
In Metin2 private servers, both C++ and Python-based systems are actively used. To make them compatible with Granny 2.9, changes may need to be made on both the C++ and Python sides. If 3D model rendering is done in GUI systems written with PyGUI, compatibility with Granny 2.9 must also be ensured here. This is usually a detail that developers like Martysama pay attention to. All structures must be synchronized to ensure that the game core, DB core, and other systems work harmoniously together.

Model Format and Packaging Processes
The new Granny version may support different model formats. Therefore, you may need to make changes to your pack files. It is important that models are correctly integrated into the server via the pack system. Particularly special costumes, weapons, or effects should be optimized according to the new format. This increases performance while maintaining visual quality.

Testing and Debugging
After the update, comprehensive tests must be conducted. Many points such as client startup, model loading times, animation transitions, and model issues during PvP must be checked. Especially in PvP systems, character animations must run smoothly to avoid disrupting the gaming experience. Errors must be logged and resolved. Debug tools and logging systems should be used during this process.

Conclusion
Upgrading the Granny library from 2.4 to 2.9 provides significant graphical and technical advantages in Metin2 private servers. However, this process requires careful attention. With proper planning, testing, and debugging, the system can function stably and efficiently. Developers must especially act carefully regarding client sources, game server programming, and DB systems.
 

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

Benzer konular

Geri
Üst Alt