[GÜNCELLEME] Granny 2.4 (2002) -> Granny 2.9.12.0 (2012)

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
granny.jpg


Selam TurkMMO,

Size eski Granny 2.4 sürümünü yeni 2.9 sürümüyle değiştirmeyi göstereceğim.

ATTENTION - UYARI

You need kraizy.tgz (its in freebsd 9.2 vhd with source)

- kraizy.tgz dosyasına ihtiyacınız var. (hazır source ile beraber gelir)

Uyarı: Aşağıdaki kod bloklarını elle yazınız. En sağlıklısı her zaman bu yolladır. Hata riskiniz azalır, nerede hata yaptığınızı daha süratli fark edersiniz.

1. Aşama: (Uyarı: Eğer hazır vhd'ye sahip değilseniz mavi renkli bağlantıya tıklayarak dosyayı edinebilirsiniz.)

/usr/src/novaline/Srcrs/Tools/Rad Game Tools/granny/common/ dizin içerisindeki masaüstüne taşınır. Arşivin içerisindeki "include" klasörünün içerisinde "granny.h" dosyasını Client/source/extern/include dizinine atılır; ( bu sizin istemci kaynak dizinine göre değişiklik gösterebilir.)

Şimdi, yine aynı arşiv içerisindeki "lib/win32" klasörü içerisindeki .dll hariç bütün dosyaları (.lib ve .pdb) Client/source/extern/lib dizinine atınız; ( bu sizin istemci kaynak dizinine göre değişiklik gösterebilir.)


2. Aşama:

İstemci kaynak dizininden EterGrnLib klasörü içerisindeki Mesh.cpp dosyası bir metin editörü yardımıyla açılır;

Bunu arayın;


Kod:
[COLOR=#000088][FONT=monospace]int[/FONT][/COLOR][COLOR=#666600][FONT=monospace]*[/FONT][/COLOR][COLOR=#000000][FONT=monospace] boneIndices [/FONT][/COLOR][COLOR=#666600][FONT=monospace]=[/FONT][/COLOR][COLOR=#660066][FONT=monospace]GrannyGetMeshBindingToBoneIndices[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000000][FONT=monospace]pgrnMeshBinding[/FONT][/COLOR][COLOR=#666600][FONT=monospace]);[/FONT][/COLOR]

Ve bununla değiştirin;

Kod:
[COLOR=#000088][FONT=monospace]int[/FONT][/COLOR][COLOR=#666600][FONT=monospace]*[/FONT][/COLOR][COLOR=#000000][FONT=monospace] boneIndices [/FONT][/COLOR][COLOR=#666600][FONT=monospace]=[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000088][FONT=monospace]int[/FONT][/COLOR][COLOR=#666600][FONT=monospace]*)[/FONT][/COLOR][COLOR=#660066][FONT=monospace]GrannyGetMeshBindingToBoneIndices[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000000][FONT=monospace]pgrnMeshBinding[/FONT][/COLOR][COLOR=#666600][FONT=monospace]);[/FONT][/COLOR]

Bunu arayın;

Kod:
[COLOR=#000088][FONT=monospace]return[/FONT][/COLOR][COLOR=#660066][FONT=monospace]GrannyGetMeshBindingToBoneIndices[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000000][FONT=monospace]m_pgrnMeshBindingTemp[/FONT][/COLOR][COLOR=#666600][FONT=monospace]);[/FONT][/COLOR]

Ve bununla değiştirin;

Kod:
[COLOR=#000088][FONT=monospace]return[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000088][FONT=monospace]int[/FONT][/COLOR][COLOR=#666600][FONT=monospace]*)[/FONT][/COLOR][COLOR=#660066][FONT=monospace]GrannyGetMeshBindingToBoneIndices[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000000][FONT=monospace]m_pgrnMeshBindingTemp[/FONT][/COLOR][COLOR=#666600][FONT=monospace]);[/FONT][/COLOR]

Bunu arayın;

Kod:
[COLOR=#000000][FONT=monospace]m_pgrnMeshDeformer [/FONT][/COLOR][COLOR=#666600][FONT=monospace]=[/FONT][/COLOR][COLOR=#660066][FONT=monospace]GrannyNewMeshDeformer[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000000][FONT=monospace]pgrnInputType[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#000000][FONT=monospace] pgrnOutputType[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#660066][FONT=monospace]GrannyDeformPositionNormal[/FONT][/COLOR][COLOR=#666600][FONT=monospace]); [/FONT][/COLOR]

Ve bununla değiştirin;

Kod:
[COLOR=#000000][FONT=monospace]m_pgrnMeshDeformer [/FONT][/COLOR][COLOR=#666600][FONT=monospace]=[/FONT][/COLOR][COLOR=#660066][FONT=monospace]GrannyNewMeshDeformer[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000000][FONT=monospace]pgrnInputType[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#000000][FONT=monospace] pgrnOutputType[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#660066][FONT=monospace]GrannyDeformPositionNormal[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#660066][FONT=monospace]GrannyAllowUncopiedTail[/FONT][/COLOR][COLOR=#666600][FONT=monospace]);[/FONT][/COLOR]


Aynı dizinden ModelInstanceUpdate.cpp bir metin editörü yardımıyla açılır;

Bunu arayın;


Kod:
[COLOR=#660066][FONT=monospace]GrannyUpdateModelMatrix[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000000][FONT=monospace]m_pgrnModelInstance[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#000000][FONT=monospace] fSecondsElapsed[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000088][FONT=monospace]const[/FONT][/COLOR][COLOR=#000088][FONT=monospace]float[/FONT][/COLOR][COLOR=#666600][FONT=monospace]*)[/FONT][/COLOR][COLOR=#000000][FONT=monospace] pMatrix[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000088][FONT=monospace]float[/FONT][/COLOR][COLOR=#666600][FONT=monospace]*)[/FONT][/COLOR][COLOR=#000000][FONT=monospace] pMatrix[/FONT][/COLOR][COLOR=#666600][FONT=monospace]); [/FONT][/COLOR]

Ve bununla değiştirin;

Kod:
[COLOR=#660066][FONT=monospace]GrannyUpdateModelMatrix[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000000][FONT=monospace]m_pgrnModelInstance[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#000000][FONT=monospace] fSecondsElapsed[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000088][FONT=monospace]const[/FONT][/COLOR][COLOR=#000088][FONT=monospace]float[/FONT][/COLOR][COLOR=#666600][FONT=monospace]*)[/FONT][/COLOR][COLOR=#000000][FONT=monospace] pMatrix[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000088][FONT=monospace]float[/FONT][/COLOR][COLOR=#666600][FONT=monospace]*)[/FONT][/COLOR][COLOR=#000000][FONT=monospace] pMatrix[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#000088][FONT=monospace]false[/FONT][/COLOR][COLOR=#666600][FONT=monospace]);[/FONT][/COLOR]

Aynı dizinden Material.cpp bir metin editörü yardımıyla açılır;

Bunu arayın;

Kod:
granny_variant twoSideResult = [COLOR=#800080]GrannyFindMatchingMember[/COLOR](pgrnMaterial->[COLOR=#800080]ExtendedData.Type[/COLOR], pgrnMaterial->ExtendedData.Object, "Two-sided"); [COLOR=#0000ff]if[/COLOR] (NULL != twoSideResult.Type)     [COLOR=#800080]GrannyConvertSingleObject[/COLOR](twoSideResult.[COLOR=#800080]Type[/COLOR], twoSideResult.Object, [COLOR=#800080]TwoSidedFieldType[/COLOR], &twoSided);

Ve bununla değiştirin;


Kod:
granny_variant twoSideResult; if ([COLOR=#800080]GrannyFindMatchingMember[/COLOR](pgrnMaterial->[COLOR=#800080]ExtendedData.Type[/COLOR], pgrnMaterial->[COLOR=#800080]ExtendedData.Object[/COLOR], "[COLOR=#008000]Two-sided[/COLOR]", &twoSideResult)       && NULL != twoSideResult.Type)     [COLOR=#800080]GrannyConvertSingleObject[/COLOR](twoSideResult.Type, twoSideResult.[COLOR=#800080]Object[/COLOR], [COLOR=#008000]TwoSidedFieldType[/COLOR], &twoSided, NULL);

Aynı dizinden ModelInsanceModel.cpp bir metin editörü yardımıyla açılır;

Bunu arayın;

Kod:
return GrannyGetMeshBindingToBoneIndices(m_vct_pgrnMeshBinding[iMeshBinding]);

Ve bununla değiştirin;

Kod:
[COLOR=#000088][FONT=monospace]return[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000088][FONT=monospace]int[/FONT][/COLOR][COLOR=#666600][FONT=monospace]*)[/FONT][/COLOR][COLOR=#660066][FONT=monospace]GrannyGetMeshBindingToBoneIndices[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000000][FONT=monospace]m_vct_pgrnMeshBinding[/FONT][/COLOR][COLOR=#666600][FONT=monospace][[/FONT][/COLOR][COLOR=#000000][FONT=monospace]iMeshBinding[/FONT][/COLOR][COLOR=#666600][FONT=monospace]]);[/FONT][/COLOR]

İstemci kaynak dizininden UserInterface klasörü içerisindeki UserInterface.cpp dosyası bir metin editörü yardımıyla açılır;

Bunu arayın; (Genellikle dosyanın sonundadır.)

Kod:
[COLOR=#800080]static void GrannyError[/COLOR](granny_log_message_type [COLOR=#800080]Type[/COLOR],                        granny_log_message_origin [COLOR=#800080]Origin[/COLOR],                         [COLOR=#800080]char const[/COLOR] *[COLOR=#800080]Error,[/COLOR]                         [COLOR=#800080]void[/COLOR] *[COLOR=#800080]UserData[/COLOR]) {     [COLOR=#800080]TraceError[/COLOR]("[COLOR=#008000]GRANNY: %s[/COLOR]", [COLOR=#800080]Error[/COLOR]); }

Ve bununla değiştirin;

Kod:
[COLOR=#800080]static void GrannyError[/COLOR](granny_log_message_type [COLOR=#800080]Type[/COLOR],                        granny_log_message_origin [COLOR=#800080]Origin[/COLOR],                         [COLOR=#800080]char const[/COLOR]* [COLOR=#800080]File[/COLOR],                         granny_int32x [COLOR=#800080]Line[/COLOR],                         [COLOR=#800080]char[/COLOR] [COLOR=#800080]const[/COLOR] *[COLOR=#800080]Error[/COLOR],                         [COLOR=#800080]void[/COLOR] *[COLOR=#800080]UserData[/COLOR]) {     [COLOR=#008000]TraceError[/COLOR]("[COLOR=#008000]GRANNY: %s[/COLOR]", [COLOR=#800080]Error[/COLOR]); }


Şimdi: Çözümünüzü yeniden derleyiniz!

3. Aşama:

İlk aşamada arşivden çıkardığınız dosyaların içerisinde "lib/win32" dizinindeki "grann2.dll" dosyasını kopyalayıp istemcininizin ana dizinine atın (Metin2Disturbute.exe) (dağıtım versiyonu- son kullanıcı için ola)


İşlemleriniz bitti ve nihayetinde Granny 2.9 sürümüne sahipsiniz!

Tebrikler!
[GÜNCELLEME] Granny 2.4 (2002) -> Granny 2.9.12.0 (2012)

Metin2 özel sunucu geliştirme sürecinde, özellikle model ve animasyon dosyalarının doğru entegre edilmesi büyük önem taşır. Bu bağlamda Granny kütüphanesi, Metin2'nin eski sürümlerinde model rendering ve animasyon yönetimi için temel bir araçtır. 2002 yılında piyasaya çıkan Granny 2.4 sürümü, uzun yıllar oyun geliştirme sektöründe aktif olarak kullanılmıştır. Ancak zamanla yeni teknolojilere ve daha gelişmiş animasyon sistemlerine ihtiyaç duyulmuş, bu da Granny 2.9.12.0'ın 2012 yılında çıkış yapmasına neden olmuştur.

Granny Kütüphanesi Nedir?

Granny, RAD Game Tools tarafından geliştirilen, oyunlarda 3D model ve animasyon verilerini işlemek için kullanılan bir kütüphanedir. Özellikle Metin2 gibi MMORPG oyunlarında karakter animasyonları, silah hareketleri, NPC davranışları gibi dinamik yapılar Granny kütüphanesi üzerinden işlenir. Bu kütüphane, yüksek verimlilik ve esneklik sunarak, hem geliştiriciler hem de tasarımcılar için güçlü bir çözüm sunar.

Granny 2.4'ten 2.9.12.0'a Geçiş

Metin2 özel sunucularında, özellikle eski projelerde Granny 2.4 sürümü yaygın olarak kullanılmaktadır. Ancak bu sürüm, modern animasyon formatlarını desteklemede bazı sınırlamalara sahiptir. Yeni modeller veya gelişmiş animasyonlar entegre edilmek istendiğinde uyumsuzluklar ortaya çıkabilir. Bu nedenle, Granny 2.9.12.0'a geçiş, özellikle yeni içerik üretilen Metin2 sunucuları için hayati bir önem taşır.

C++ ile Granny Entegrasyonu

Metin2 sunucu kaynak kodlarında (server src), model rendering süreçleri genellikle C++ tabanlıdır. Bu bağlamda, yeni bir Granny sürümüne geçiş yapılırken C++ sistemlerin uyumlu hale getirilmesi gerekir. Bu işlem sırasında derleme (compile) hatası yaşamamak adına, granny.dll ve diğer bağımlılıklar doğru şekilde entegre edilmelidir. Ayrıca, client src tarafında da uyumlu yapıların sağlanması gerekir.

Geçiş Sırasında Karşılaşılan Sorunlar

Yeni bir Granny sürümüne geçerken en sık karşılaşılan sorunlar arasında model dosyalarının doğru yüklenememesi, animasyonların kırılması ve performans düşüşü yer alır. Bu durumlar genellikle granny dosyalarının farklı formatlarda olması veya eksik bağımlılıklardan kaynaklanır. Bu nedenle, pack dosyaları ve uiscript yapıları da gözden geçirilmelidir.

Neden Güncellemeliyiz?

Granny 2.9.12.0 sürümü, eski sürümlere göre daha fazla animasyon formatını destekler, daha iyi hafıza yönetimi sunar ve performans açısından daha optimize edilmiştir. Özellikle Metin2 özel sunucularında yeni içeriklerin (örneğin yeni karakter modelleri, efektler, silah animasyonları) sorunsuz çalışması için bu güncelleme kritik öneme sahiptir. Ayrıca, güvenlik açıklarının giderildiği yeni sürümler, oyun sunucusunun daha stabil çalışmasını sağlar.

Py GUI ve Python Entegrasyonları

Metin2 geliştirme süreçlerinde Python scripting dili sıklıkla kullanılır. Özellikle py gui ve py root yapıları ile kullanıcı arayüzü geliştirmeleri yapılır. Bu yapılar, Granny kütüphanesiyle entegre çalışarak model verilerini doğrudan oyun içi UI'ye aktarabilir. Bu sayede, model önizleme sistemleri ve editörler kolayca geliştirilebilir.

Geçiş Rehberi

1. Eski granny24.dll dosyasını kaldırın.
2. Granny 2.9.12.0 sürümünü indirin ve derleyin.
3. Game, Auth ve DB yapılarını test edin.
4. Client tarafında model yükleme işlemlerini kontrol edin.
5. Pack dosyalarında değişiklik varsa güncelleyin.

Sonuç

Granny 2.4'ten 2.9.12.0'a yapılan geçiş, Metin2 özel sunucularında hem teknik hem de görsel açıdan büyük gelişmeler sağlar. Bu süreçte dikkatli hareket edilmesi, uygun testlerin yapılması ve gerekirse martysama gibi deneyimli geliştirici topluluklarından destek alınması önerilir. Bu güncellemeyi gerçekleştiren sunucular, daha modern ve stabil bir oyun deneyimi sunabilir.


[UPDATE] Granny 2.4 (2002) -> Granny 2.9.12.0 (2012)

In the process of developing Metin2 private servers, integrating model and animation files correctly holds great importance. In this context, the Granny library serves as a fundamental tool for model rendering and animation management in older versions of Metin2. The Granny 2.4 version, released in 2002, was widely used in the gaming industry for many years. However, over time, there arose a need for newer technologies and more advanced animation systems, leading to the release of Granny 2.9.12.0 in 2012.

What is the Granny Library?

Granny is a library developed by RAD Game Tools used for processing 3D model and animation data in games. Especially in MMORPGs like Metin2, dynamic structures such as character animations, weapon movements, and NPC behaviors are processed via the Granny library. This library provides high efficiency and flexibility, offering a powerful solution for both developers and designers.

Transition from Granny 2.4 to 2.9.12.0

In Metin2 private servers, especially in older projects, Granny 2.4 is commonly used. However, this version has some limitations in supporting modern animation formats. When attempting to integrate new models or advanced animations, compatibility issues may arise. Therefore, transitioning to Granny 2.9.12.0 is vital for Metin2 servers that produce new content.

Granny Integration with C++

In Metin2 server source codes (server src), model rendering processes are typically based on C++. In this regard, during a transition to a newer Granny version, C++ systems must be made compatible. To avoid compilation errors, granny.dll and other dependencies should be properly integrated. Additionally, compatibility must also be ensured on the client src side.

Issues Encountered During Transition

Among the most common problems encountered when updating to a newer Granny version are failure to load model files correctly, broken animations, and performance drops. These issues often stem from granny files being in different formats or missing dependencies. For this reason, pack files and uiscript structures should also be reviewed.

Why Should We Update?

The Granny 2.9.12.0 version supports more animation formats than older versions, offers better memory management, and is more optimized in terms of performance. Particularly for Metin2 private servers introducing new content (such as new character models, effects, weapon animations), this update is critical. Moreover, newer versions, where security vulnerabilities have been fixed, ensure the game server runs more stably.

Py GUI and Python Integrations

In Metin2 development processes, the Python scripting language is frequently used. User interface enhancements are particularly done through py gui and py root structures. These structures can integrate with the Granny library to transfer model data directly into the in-game UI. Thus, model preview systems and editors can be easily developed.

Transition Guide

1. Remove the old granny24.dll file.
2. Download and compile Granny 2.9.12.0.
3. Test Game, Auth, and DB structures.
4. Check model loading operations on the client side.
5. Update pack files if necessary.

Conclusion

The transition from Granny 2.4 to 2.9.12.0 brings significant technical and visual improvements to Metin2 private servers. Careful execution during this process, conducting proper tests, and seeking support from experienced developer communities like martysama when needed are recommended. Servers implementing this update can provide a more modern and stable gaming experience.
 

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

Benzer konular

Geri
Üst Alt