Membru Începător
Membru Începător
Mesaje: 10
Membru din: 10 Dec 2025, 19:37
  • Reacții: 20
  • Mesaje utile: 0
  • Server: Revenge-Arena.com
  • Regat: Jinno
  • [ID Discord]
  • Contact:

    Medalii

    După cum probabil știți, Metin2 folosea inițial Granny2 2.4. În timp, comunitatea a trecut la DLL-ul și librăriile din Granny2 2.11, însă mare parte din codul care procesează modelele a rămas legacy.

    Pe scurt: avem Granny2 2.11, dar clientul nu profită suficient de el.

    Scopul acestui update este simplu:

    mai puține sacadări, frametime mai bun și mai multe FPS în zone aglomerate.

    1. Conversia modelelor 2.4 → 2.11

    Primul pas este conversia tuturor modelelor `.gr2` din client în format Granny2 2.11.

    Aici intră practic majoritatea elementelor 3D din joc: caractere, monștri, NPC-uri, arme, armuri, animații etc.

    Impactul principal:
    • procesare mai eficientă a modelelor;
    • mai puține micro-sacadări;
    • FPS și frametime mai stabile;
    • performanță mai bună când sunt multe caractere pe ecran.
    Pentru conversie există deja vechiul Helia Converter:
    Pentru cine vrea să își facă propriile tool-uri:

    Granny2 2.11 SDK Granny2 Viewer 2.11 2. Runtime Rewrite + GPU Skinning

    Conversia modelelor este doar primul pas.

    În următoarea etapă lucrez la:
    • GPU Skinning;
    • rescrierea wrapper-ului Granny2;
    • optimizarea shaderelor;
    • Shape caching;
    • batching;
    • reducerea calculelor și upload-urilor inutile către GPU.
    Am găsit deja câteva probleme clare în codul actual.

    De exemplu, anumite fișiere Granny sunt compilate în Release cu MinSpace în loc de MaxSpeed.

    În plus, skinning-ul actual poate recalcula și reîncărca date chiar și atunci când pose-ul caracterului nu s-a schimbat.

    Noul backend va evita aceste operații inutile.

    Asta devine important mai ales când ai zeci sau sute de caractere, monștri și efecte pe ecran, adică exact situațiile în care Metin2 începe să piardă masiv FPS.

    Legacy vs New Backend

    Implementarea va fi complet separată.
    Code:
    ModelInstanceUpdate.cpp
    
    va rămâne backend-ul legacy.

    Noul cod va fi în:
    Code:
    ModelInstanceUpdateGranny2.cpp
    
    și va putea fi activat prin:
    Code:
    ENABLE_GRANNY2_RUNTIME_REWRITE
    
    Dacă define-ul este dezactivat, clientul revine direct la varianta veche.

    GPU Skinning și celelalte optimizări vor avea și ele define-uri independente pentru testare.

    Ce urmează

    În zilele următoare voi continua testele și implementarea.

    Reveniți la acest post săptămâna viitoare. Dacă totul merge conform planului, voi adăuga:
    • varianta publică;
    • GPU Skinning;
    • Granny2 Runtime Rewrite;
    • comparații legacy vs noul backend;
    • teste FPS / frametime;
    • video-uri în scene aglomerate.
    Ideea principală este simplă:

    Granny2 2.11 există în source de mulți ani, dar mare parte din engine încă îl folosește ca pe vechiul Granny2.

    Acum încerc să schimb asta și să mut o parte din workload-ul inutil de pe CPU, să reduc procesarea repetitivă și să obțin FPS mai stabil acolo unde contează cel mai mult: în zonele cu mulți playeri, monștri și modele animate.

    Nou Cum descarc de pe TeraBox?

    Afișează detalii Ascunde detalii
    • Este asemănător cu Mega.nz
    • Instalați-vă clientul lor de Download de aici
    • Faceți-vă un cont (vă puteți loga cu Facebook / Google / etc)
    • Nou Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele rapid & simplu.

    De ce folosim TeraBox?

    • Este gratuit
    • Primești 1TB de spațiu gratuit la orice cont creat!
    • Este ușor de folosit și varianta premium este foarte ieftină
    • Fișierele nu sunt șterse niciodată
    TeraBox logo
    Nou Venit
    Nou Venit
    Mesaje: 3
    Membru din: 25 Aug 2026, 13:26
  • Reacții: 13
  • Mesaje utile: 0
  • Status: Work
    Server: Project Polaris
  • Regat: Shinsoo
  • [ID Discord]
  • Contact:

    Medalii

    Avatar utilizator
    Nou Venit
    Nou Venit

    Mesaj de SystemPolaris »

    I'm sorry to be the one bringing the bad news but I think you're spending your time on the wrong dependency

    Granny isn't just outdated it's licensed by RAD

    RAD provides the runtime source code as part of the licensed Granny SDK so unless you actually have a legitimate Granny license and SDK you're still limited by what RAD actually gives you access to

    You're still working around headers binaries and whatever SDK material is publicly available

    And that's where I think the problem with this approach starts

    Converting every GR2 from 2.4 to 2.11 rewriting `ModelInstanceUpdate` implementing GPU skinning adding shape caching batching and trying to optimize the Granny integration may improve some things but at the end of all that hard work you're still dependent on Granny

    You haven't removed the limitation you're just trying to build a better wrapper around an old dependency while calling it "performance"

    GPU skinning caching batching and a better rendering architecture are good ideas but they don't require Granny

    So I'm just gonna leave you with one question

    Do you really think spending so much time trying to make an old dependency less painful is a real performance improvement especially if we're talking about x64 projects and not the old x86 ones?
    See full signature
    Scrie răspuns

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra sau conecta rapid utilizând contul tău de Discord, Github sau Google.

    Înregistrare

    Autentifică-te

    Înapoi la “Sisteme Metin2”

    Informații

    Utilizatori ce navighează pe acest forum: Bing [Bot], Semrush [Bot], taump2, usernamerares și 2 vizitatori

    Discord ID copiat: