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 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.
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
Noul cod va fi în:
Code:
ModelInstanceUpdateGranny2.cpp
Code:
ENABLE_GRANNY2_RUNTIME_REWRITE
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.
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.




