Metin2'de 2026 yılında hala .gr2 ve 3ds Max çilesi çekmek / glTF desteği olsa nasıl olurdu?

  • Konuyu açan Konuyu açan Sys
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 19
  • Gösterim Gösterim 239

Sys

MT Üye
MT Üye
Mesaj
283
Çözümler
4
Beğeni
449
Puan
784
Ticaret Puanı
0
Selamlar herkese,

Günlerdir istemci ve grafik motoru üzerine kafa yorarken aklıma takıldı, foruma da bi sorup fikirlerinizi almak istedim.

Yıl olmuş 2026, ama oyuna yeni bir kılıç, zırh veya boss eklemek isteyen arkadaşlar hala 2004'ten kalma 3ds Max 7 veya 2010'la uğraşıyor. Blender'da fıstık gibi model yapıyorsun, onu eski .gr2'ye çevirirken yok UV'si kaydı, yok kemik ağırlığı yamuldu derken insanı canından bezdiriyor.

Peki eski .gr2'leri hiç bozmadan, oyunun C++ motoruna modern sektör standardı olan glTF 2.0 (.glb) veya FBX desteği eklense sizce nasıl olurdu?

Yani tasarımcı Blender'da veya Maya'da zırhı tasarlayıp tek tıkla oyuna atsa; koşarken vurmaya geçişlerdeki o küt animasyon geçişleri akıcı hale gelse, merdivende dururken karakterin bir ayağı havada kalmasa...

Özellikle 3D modelleme yapan ve kodlarla uğraşan arkadaşların fikirlerini merak ediyorum:

Böyle bir şey gelse tasarımcıların işini gerçekten çağ atlatacak kadar rahatlatır mı?
Sizce Metin2'nin havasını bozar mı, yoksa oyunu bambaşka bir seviyeye mi taşır?
Siz ne düşünüyorsunuz, bi beyin fırtınası yapalım.


1789109711299.webp
 
fbx desteği oyunu çok rahatlatır warez güzel modellerin çoğu fbx. ama mevcut modelleri çevirmek işkence olur ilk etapta. varsa çeviren deneyek.
 
fbx desteği oyunu çok rahatlatır warez güzel modellerin çoğu fbx. ama mevcut modelleri çevirmek işkence olur ilk etapta. varsa çeviren deneyek.
DX11-VULKAN Backends'i bitirdikten sonra deneyeceğim ama model işinden zır anlamıyorum :ROFLMAO: unity'de takılanları gördükçe canım çekiyor adamın biri keleş vermiş savaşçıya orda patladım
Fun Adam GIF
 
İlk başta çevirmek eziyet olur ama. Gerçekten çok rahatlatır. 3ds maxın veya diğer uzantıların bir çok modeli var. Ama dönüşümde çok sorun olduğundan kullanamıyorum. Böyle birşey gerçekten gerekli, özellikle .fbx. Eğer modernleştirirsen, oyununda modern şeyler kullandığını görebiliriz. Yani kesinlikle çağ atlatır.
 
Ben granny sürümleri kısmında kaldım. Oralar nasıl olacak, günümüzde çeken oyun var mı fbx ile?
 
İlk başta çevirmek eziyet olur ama. Gerçekten çok rahatlatır. 3ds maxın veya diğer uzantıların bir çok modeli var. Ama dönüşümde çok sorun olduğundan kullanamıyorum. Böyle birşey gerçekten gerekli, özellikle .fbx. Eğer modernleştirirsen, oyununda modern şeyler kullandığını görebiliriz. Yani kesinlikle çağ atlatır.
olursa kafamdaki mantık şu: eski modeller .gr2 olarak kalır, kimse binlerce modeli çevirmekle uğraşmaz zaten. ama yeni bi zırh, kılıç veya hazır warez bi model ekleyeceğin zaman direkt Blender'dan fbx/gltf export edip oyuna atabilsek efsane rahatlık olurdu, motor ikisini de aynı anda okurdu yani. dönüşümle ve 3ds max ile hiç uğraşmazdın :D

Ben granny sürümleri kısmında kaldım. Oralar nasıl olacak, günümüzde çeken oyun var mı fbx ile?
reis daha yapmadık çekeni de görmedim kafamdaki bi fikir sadece, beyin fırtınası yapıyoruz :D

granny sürümü derken şöyle; bende zaten granny2 kaynak kodları/SDK var, yani eski .gr2'ler aynı şekilde tıkır tıkır çalışmaya devam eder onda gram sıkıntı yok. ama yeni modeller için 3ds Max 2012 ve plugin arama çilesine girmeden direkt Blender'dan tek tıkla fbx/gltf alıp oyuna atabilsek diyorum, o sürüm uyuşmazlığı derdi tamamen tarihe karışsa fena mı olurdu :D

günümüz oyunlarına gelirsek de; Unity, Unreal, Godot hepsi modelleri zaten fbx ve gltf ile çekiyor. motora açık kaynaklı modern bi kütüphane bağlayınca doğrudan vertex ve kemikleri okutabiliyorsun, yani aslında 20 yıllık kapalı kutu granny'ye mahkum değiliz :D
 
çözülür ya mutlaka yapay zeka niye var
Mantıklı aslında
olursa kafamdaki mantık şu: eski modeller .gr2 olarak kalır, kimse binlerce modeli çevirmekle uğraşmaz zaten. ama yeni bi zırh, kılıç veya hazır warez bi model ekleyeceğin zaman direkt Blender'dan fbx/gltf export edip oyuna atabilsek efsane rahatlık olurdu, motor ikisini de aynı anda okurdu yani. dönüşümle ve 3ds max ile hiç uğraşmazdın :D


reis daha yapmadık çekeni de görmedim kafamdaki bi fikir sadece, beyin fırtınası yapıyoruz :D

granny sürümü derken şöyle; bende zaten granny2 kaynak kodları/SDK var, yani eski .gr2'ler aynı şekilde tıkır tıkır çalışmaya devam eder onda gram sıkıntı yok. ama yeni modeller için 3ds Max 2012 ve plugin arama çilesine girmeden direkt Blender'dan tek tıkla fbx/gltf alıp oyuna atabilsek diyorum, o sürüm uyuşmazlığı derdi tamamen tarihe karışsa fena mı olurdu :D

günümüz oyunlarına gelirsek de; Unity, Unreal, Godot hepsi modelleri zaten fbx ve gltf ile çekiyor. motora açık kaynaklı modern bi kütüphane bağlayınca doğrudan vertex ve kemikleri okutabiliyorsun, yani aslında 20 yıllık kapalı kutu granny'ye mahkum değiliz :D
Kdfkskfjs ne bilim bir an heyecanlandım 😆 haklısın o dediğin yöntem çok daha mantıklı olur ekstra fbx ilavesi xd zamanında bir eleman vardı, bundan 3-4 sene önce glb uzantılı yapmıştı ama animasyonlar için desteği yok, glb uzantısının. Niye yaptı hiç aklım almıyor skfjsjd
 
valla burdaki en büyük sorun msa dosyalarını napacağınız. gr2 kolay çevirirsin. msayı ne yapmayı düşünüyorsunuz?
 
valla burdaki en büyük sorun msa dosyalarını napacağınız. gr2 kolay çevirirsin. msayı ne yapmayı düşünüyorsunuz?
Hasanım tam yerinde soru sormuşsun ama aslında işin en rahat çözülen yeri tam olarak orası kanka :D

Çünkü msa dediğimiz şey zaten bir 3D animasyon dosyası değil ki, bildiğin düz not defteri dosyası. İçinde tek bir kemik veya hareket verisi yok. Sadece hangi saniyede efekt çıkacak, ses ne zaman çalacak, ne zaman hasar vuracak veya kombo girecek onu tutuyor. 3D ile tek bağı en baştaki "MotionFileName wait.gr2" satırı.

Yani motora glTF/FBX desteği geldiğinde msa'ları çöpe atmaya veya baştan yazmaya zerre gerek kalmıyor. Motor o satıra bakar; dosya .gr2 ise eskisi gibi Granny okur, .glb/.fbx ise yeni loader animasyonu oynatır. Hatta koda basit bir fallback koyarsın, msa içinde wait.gr2 yazsa bile klasörde wait.glb varsa direkt onu çeker. Mevcut binlerce resmi msa'ya elini bile sürmeden sistem tıkır tıkır çalışır.

Yeni bir animasyon ekleyeceğin zaman da Blender'dan .glb export edip msa'ya yolunu yazarsın, yine biter. Hatta canın isterse glTF'in kendi içinde JSON metadata (extras) desteği var; efekt ve ses zamanlamalarını direkt Blender timeline'ına marker koyup tek bir .glb içine bile gömebilirsin, ayrı msa dosyası açma ameleliği bile tarihe karışır.

Kısacası msa bize ayak bağı değil, arkadaki iskelet hareketini Granny mi oynatmış glTF mi oynatmış msa'nın hiç umurunda olmuyor :D

Yavaş yavaş kafamda oturmaya başladı ne yapacağım edeceğim galiba 1-2 hafta sonra ilk adımı atarım :D
 
Hasanım tam yerinde soru sormuşsun ama aslında işin en rahat çözülen yeri tam olarak orası kanka :D

Çünkü msa dediğimiz şey zaten bir 3D animasyon dosyası değil ki, bildiğin düz not defteri dosyası. İçinde tek bir kemik veya hareket verisi yok. Sadece hangi saniyede efekt çıkacak, ses ne zaman çalacak, ne zaman hasar vuracak veya kombo girecek onu tutuyor. 3D ile tek bağı en baştaki "MotionFileName wait.gr2" satırı.

Yani motora glTF/FBX desteği geldiğinde msa'ları çöpe atmaya veya baştan yazmaya zerre gerek kalmıyor. Motor o satıra bakar; dosya .gr2 ise eskisi gibi Granny okur, .glb/.fbx ise yeni loader animasyonu oynatır. Hatta koda basit bir fallback koyarsın, msa içinde wait.gr2 yazsa bile klasörde wait.glb varsa direkt onu çeker. Mevcut binlerce resmi msa'ya elini bile sürmeden sistem tıkır tıkır çalışır.

Yeni bir animasyon ekleyeceğin zaman da Blender'dan .glb export edip msa'ya yolunu yazarsın, yine biter. Hatta canın isterse glTF'in kendi içinde JSON metadata (extras) desteği var; efekt ve ses zamanlamalarını direkt Blender timeline'ına marker koyup tek bir .glb içine bile gömebilirsin, ayrı msa dosyası açma ameleliği bile tarihe karışır.

Kısacası msa bize ayak bağı değil, arkadaki iskelet hareketini Granny mi oynatmış glTF mi oynatmış msa'nın hiç umurunda olmuyor :D

Yavaş yavaş kafamda oturmaya başladı ne yapacağım edeceğim galiba 1-2 hafta sonra ilk adımı atarım :D
sıkıntı kardeşim ya msa kodları grannye gömülü değil mi ben mi yanlış hatırlıyorum? grannyi kaldırıyorsan eğer o da gidecek yani. onu yeni ekliceğin motora uyarlaman gerek sanki. bağımsız bile olsa grannyden yeni motorun koduna uyarlamak gerek.
 
grannyleri kaldırmadan ek olarak obj ve fbx desteği eğerki olabiliyorsa şahsen çok rahatlatır ama bunlarla map yapılacak, bossların animasyonları vs de baya komplike düşünülmesi, world editor'e entegre edilmesi gerekiyor. ben de yaptığım programda şu an gr2'yi obj fbx çevirmeden bazı işlemleri yapacak hale getiriyorum. hocam granny kütüphanesini benimle paylaşırsanız çok büyük işler yapabilirim şu an api olarak dll'lerin imkanıyla işlemler yaptırıyorum yapay zeka desteği ile.
 
sıkıntı kardeşim ya msa kodları grannye gömülü değil mi ben mi yanlış hatırlıyorum? grannyi kaldırıyorsan eğer o da gidecek yani. onu yeni ekliceğin motora uyarlaman gerek sanki. bağımsız bile olsa grannyden yeni motorun koduna uyarlamak gerek.
hasanım yanlış hatırlıyon kanka durum öyle değil :D az önce baktım yine kodlara kafandaki karışıklığı çözeyim

granny ile msa apayrı şeyler
granny dediğin sadece gr2 deki iskeleti kemiği oynatan dış kütüphane
msa ise ymirin yazdığı bildiğin düz metin dosyası notepadle açıp bakabilirsin içinde animasyon falan yok timeline sadece

bak savaşçının kılıç darbesi msa dosyasının içi direkt bu kadar mesela

geompung.msa:
Genişlet Daralt Kopyala
ScriptType               MotionData
MotionFileName           "d:/ymir work/pc/warrior/skill/geompung.gr2"
MotionDuration           1.400000

Group MotionEventData
{
    Group Event00
    {
        StartingTime         0.034063
        AttachingBoneName    "Bip01 R Hand"
        EffectFileName       "geompung_sword.mse"
    }
}

c++ tarafında da raceData cpp zaten bunları ayrı ayrı yüklüyor

RaceData.cpp:
Genişlet Daralt Kopyala
// 1 msa dosyasını metin olarak okuyor
pRaceMotionData->LoadMotionData("geompung.msa");

// 2 içindeki motionfilenameden gr2 yolunu çekip modele bağlıyor
const auto motionFileName = pRaceMotionData->GetMotionFileName();
RegisterMotion(std::move(pRaceMotionData), mode, index, motionFileName, percent);

yani msa nın granny ile tek bağı en tepedeki gr2 dosya yolu bide bip01 r hand gibi standart max kemik isimleri

yarın öbür gün granny yerine modern bi animasyon kütüphanesi koysak bile msalar çöpe gitmiyor dokunmuyoruz bile
tek olay sağ el kemiği şu an nerede sorusunu granny yerine yeni motora sormak

galiba işin sonunda benim dosyacıklar bu desteğe sahip olacak gibi duruyor :D
bjdvgryc.png
 
Grannyden tamamen kopmak ve modern uzantılara geçmek bir nebze kolaylık sağlayabilir. Ancak burada ne beklediğiniz önemli. Bu yeni yapıdan ne bekliyorsunuz?
Sadece kullanım kolaylığı sağlamasını istiyorsanız, evet yapılabilir ve kullanılabilir.
Ama konuda bahsedildiği gibi merdivende bir ayağının boşta durması gibi sorunların da ortadan kalkacağını bekliyorsanız orası biraz karışık. Bu tarz şeyler için çok daha farklı ve ileri düzey teknikler gerekiyor .gr2 .gltf .obj falan olmasının bu konuda pek bir ayrıcalığı yok maalesef.
 
Grannyden tamamen kopmak ve modern uzantılara geçmek bir nebze kolaylık sağlayabilir. Ancak burada ne beklediğiniz önemli. Bu yeni yapıdan ne bekliyorsunuz?
Sadece kullanım kolaylığı sağlamasını istiyorsanız, evet yapılabilir ve kullanılabilir.
Ama konuda bahsedildiği gibi merdivende bir ayağının boşta durması gibi sorunların da ortadan kalkacağını bekliyorsanız orası biraz karışık. Bu tarz şeyler için çok daha farklı ve ileri düzey teknikler gerekiyor .gr2 .gltf .obj falan olmasının bu konuda pek bir ayrıcalığı yok maalesef.
Yüzde yüz haklısın. sırf dosya uzantısını .gltf yaptık diye ayağın merdivene basmayacağının, bunun dosya formatıyla değil motorda çalışan zemin raycast'i ve Two-Bone IK (Inverse Kinematics) çözücüsüyle alakalı olduğunun tamamen farkındayım

hatta işin mutfağına inersek granny2 nin tam sdk kaynak kodları mevcut olduğu için istesem ModelInstanceUpdate.cpp içindeki GrannySampleModelAnimationsAcceleratedLOD çağrısını devreden çıkarır, granny_local_pose üzerinden ayak/diz kemiklerini Two-Bone IK ile modifiye edip GrannyBuildWorldPose çağırarak bu sistemi mevcut granny üzerinde de çalıştırırım. yani elimizde sdk varken bunu granny içinde yapmak teknik olarak imkansız değil

peki bu yeni yapıdan asıl beklentin ne dersen beklentim sadece model atma kolaylığı değil

Açık ve Katmanlı İskelet Mimarisi
granny nin o eski kapalı composite buffer yapısında debelenmek yerine; akışın modüler katmanlara ayrıldığı (Sample Pose -> Blend Trees -> Procedural Foot IK -> GPU BoneMatrices) açık bir iskelet boru hattı kurabilmek. araya procedural katman sokmak granny de mimariyi zorlarken modern yapıda doğal bir döngü

Performans ve SIMD
granny tüm iskelet çarpımlarını 20 yıllık skaler cpu kodlarıyla yapıyor. modern iskelet mimarisinde rotasyon harmanlamaları doğrudan AVX2/SSE SIMD vektörleriyle yapılıp doğrudan GPU skinning e aktarılıyor, kare süresi maliyeti ciddi oranda düşüyor


yani özetle merdiven sorununu uzantının çözeceğini beklemiyorum, onun raycast ve Two-Bone IK tarafını zaten kodda biz çözeceğiz. yeni yapıdan asıl beklentimiz bu tarz ileri düzey mekanikleri 20 yıllık granny mimarisine yamamaya çalışmak yerine, bunu doğal olarak destekleyen modern ve açık bir iskelet motoru üzerinde tertemiz geliştirebilmek

dürüst olmak gerekirse iş yükü ve regresyon riski bir tık göze korkutucu geliyor, belki vaz bile geçebilirim bir anda soğudum :D

Araştırıp ai'lere vs danışıp fikirler konusunda bakındıkça benim vaziyet:


Kızgın Sinir GIF
 
Geri
Üst