İlan
04 Haz 2026 23 çevrimiçi üye Duyurular
Ana Sayfa C++ / C# / Python
Ana Sayfa Forum C++ / C# / Python ITJA - glTF 2.0 / GLB model desteği (.gr2 den kur...
İlan Yan banner placeholder

ITJA - glTF 2.0 / GLB model desteği (.gr2 den kurtuluş.)

ridvandmr 28.04.2026 09:16 708 görüntüleme 4 cevap
Son Mesaj
ridvandmr
Üye
Üye
Katılım13 Nis 2026
Konular12
Mesajlar76
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
28.04.2026 09:16 #1
ANA MOTOR DOSYALARI


1- PACK TARAFINDA (Dosyaların Yerleşimi)​

Normalde bir zırh eklerken .gr2 model dosyasını atarsın, sonra klasörün içine bir de .dds VEYA .tga resim dosyasını atarsın, değil mi? .glb'de bu iş çok daha rahattır veya aynıdır.

  • Seçenek A (Tek Dosya - Embedded):
    .glb (GLTF Binary) formatının en büyük özelliği, zırhın kaplamasını (resmini), PBR metalik parlama ayarlarını ve kemiklerini kendi içine (tek bir dosya halinde) gömebilmesidir.
    Yani pack/pc/warrior/ klasörüne sadece yeni_zirh.glb dosyasını atarsın. Ekstra .dds atmana gerek kalmaz!
  • Seçenek B (Ayrı Dosyalar - External):
    Eğer boyut büyük olmasın dersen modeli ayrı, kaplamaları ayrı atarsın.
    • yeni_zirh.glb
    • yeni_zirh_basecolor.png (Ana doku)
    • yeni_zirh_metallic.png (Metalik parlama haritası)
    • yeni_zirh_normal.png (Girinti çıkıntı haritası)


2- ITEM_PROTO (Txt/SQL Tarafı)​

Burada hiçbir şey değişmiyor! Eski eşya ekleme mantığının aynısı. Sen item_proto.txt veya veritabanına zırhı şu şekilde eklersin:
11299 "Yeni Glb Zirhi" ... VALUE3 (Zırhın ShapeIndex'i)
(Burası %100 klasik Metin2 mantığıdır, GLTF sistemi Item_Proto'ya karışmaz).

3- PYTHON (Client - msm / msa Dosyaları)​

İşte zurnanın zırt dediği yer burası. Oyun senin eklediğin yeni_zirh.glb dosyasını warrior_m.msm (ShapeData) içinden çekecek.

Normalde .msm dosyanda zırhı tanıtırken şöyle yazarsın:

Python:
Group ShapeData15
    {
        SpecialPath         "d:/ymir work/pc/warrior/"

        ShapeIndex          15
        Model               "yeni_zirh.gr2" # ESKİ SİSTEM
        SourceSkin          "yeni_zirh.dds"
        TargetSkin          "yeni_zirh_kirmizi.dds"
    }

GLTF (.glb) Sisteminde Örnek Kullanım:

Python:
Group ShapeData16
    {
        SpecialPath         "d:/ymir work/pc/warrior/"

        ShapeIndex          16
        Model               "yeni_zirh.glb" # YENİ GLTF SİSTEMİ!
        
        # EĞER MODEL .GLB İSE VE KAPLAMASI İÇİNE GÖMÜLÜYSE:
        # SourceSkin ve TargetSkin yazmana bile gerek YOKTUR! Motor onu içinden okuyup metalik/PBR render atar.
    }


YUKARIDAKİ DOSYALAR NEYİ AMAÇLIYOR?

1- tiny_gltf.h ve Json​

Bu dosyalar arka plandaki "Tercüman"dır. Sen oyuna bir .glb kılıcı eklediğinde, o dosyanın içindeki koordinatları (X,Y,Z), "bu kılıcın neresi parlak olacak?", "Bu kılıcın texture'u (resmi) nereden gelecek?" gibi tüm karmaşık metin tabanlı verileri Metin2'nin anlayabileceği sayılara çevirir. Başka da bir işe yaramaz.

2- Model.cpp ve Model.h (İskelet Yükleyici)​

Bu adam bizim kargo şirketimizdir.
Oyuna girdiğinde "Kardeşim bana X klasöründeki kilic.glb dosyasını bul ve parçala" der.

  • İçindeki LoadSkins() fonksiyonu: Zırh veya karakterin kemiklerini (kol nerede bükülüyor, kafa nerede) okur.
  • İçindeki LoadAnimations() fonksiyonu: Vurma, koşma gibi hareketlerin verilerini (Hangi saniyede kol nereye kalkacak) çeker.
  • Kısacası bu dosya dosyayı okur ama henüz ekrana hiçbir şey çizmez, sadece hafızaya alır.

3- Mesh.cpp ve Mesh.h (Ağ Örücü)​

Bu dosyalar "Geometri" dosyalarıdır.
Model.cpp kılıcı okuduktan sonra bu Mesh dosyasına paslar. Mesh dosyası, "Tamam bu kılıç 3000 üçgenden (poligon) oluşuyor, işte noktaları şunlar" diyerek Vertex Buffer (VB) ve Index Buffer (IB) dediğimiz ekran kartı belleklerini oluşturur. Yani ekran kartına "Al bu üçgenleri kendi hafızanda tut" der.

4- Material.cpp ve Material.h (Boyacı ve Cilacı)​

Bu adam kütüphanenin PBR (Yeni nesil ışık/yansıma) kalbidir.
O yukarıdaki Mesh dosyası sadece renksiz/bembeyaz üçgenler üretti. Material ise o üçgenlerin üzerine:

  • Orijinal resmini (Base Color)
  • Metal mi yoksa tahta mı olduğunu (Metallic Roughness)
  • Derinlik girintilerini (Normal Map)
  • Parlamalarını (Emissive) yapıştırır.
    DX9 motoruna "Bu kılıcı metal gibi parlat" emrini verir.

5- ModelInstance.cpp ve ModelInstance.h (Aktör)​

Bu dosya işin sahne şovudur (Oynatıcıdır).
Diğer bütün dosyalar sadece okudu, hazırladı ve boyadı. ModelInstance ise senin oyun içinde farenle sağa sola dönerken gördüğün o anlık şeydir.

  • Her karede (FPS) elindeki silahın nereye gittiğini hesaplar (UpdateSkeleton).
  • Ekran kartına "Daha önce hafızana aldığın o boyalı üçgenleri TAM OLARAK ŞU KOORDİNATA VE ŞU GÖLGEYLE ÇİZ" der (Render fonksiyonu).
    İşte bütün o DX9 / DX8 kavgaları bu dosyada çıkar. Çünkü doğrudan Ekran Kartı (Device) ile muhatap olan dosya budur.

6- Thing.cpp ve ThingInstance.cpp (Metin2 Baglantisi)​

Bu ikisi en önemli dosyalarımızdır, bunlara "Köprü" denir.
Yaptığımız o devasa okuma/boyama/çizme işlemlerinin hiçbirini Metin2'nin ana kodları (InstanceBase.cpp vs.) anlamaz. Metin2 kodları sadece Thing kelimesinden anlar (Orijinal Granny render sistemi GrpThing mantığıyla çalışır).
İşte bu dosyalar, Metin2'nin sana "Kılıcı kuşan" dediğinde, arka planda bizim GLTF sistemini gizlice ateşleyen ajan bağlayıcılardır.

Özet:​

Sen bir zırh giydiğinde:

  1. Thing der ki: "Hey, zırh.glb giyildi!".
  2. Model dosyayı okur.
  3. Mesh üçgenlerini çizer.
  4. Material metalik boyalarını sürer.
  5. ModelInstance her saniye karakter koş


dosyalar DX9 VE ÜZERİ FİLESLER UYGUN
FİLESİNİZ DX8 İSE BOŞUNA KURMAYA ÇALIŞMAYIN..

MANTIK: gr2 aynı devam kalıyor. ama ek olarak yani paralel olarak .glb dosyalarını gr2. dosyalarını nasıl nerede nasıl kullanıyorsanız bu sistemi kurarak istediğiniz gibi kullanın.

Performans (GPU Skinning)​

Şu anki motorun en büyük derdi, karakter hareketlerinin (animasyonların) CPU üzerinde hesaplanması. Pazar meydanında FPS'nin sürünmesinin sebebi de bu. skinning.hlsl dosyası bu yükü CPU'dan alıp GPU’ya (ekran kartına) yıkıyor. Yani işlemciyi rahatlatıp, "daha kalabalık ama daha akıcı" bir oyun deneyimi sunabiliyorsun.

Görüntü Kalitesi (PBR)​

Oyunun şu anki hali biraz "plastik" gibi duruyor, değil mi? İşte bu kodun Material.h kısmında gördüğün metallic ve roughness değerleri sayesinde, oyun artık ışığı doğru yansıtacak. Silahlar, zırhlar gerçekten metal gibi parlayacak, deri kısımlar mat duracak. Yani oyuna girdiğinde "Metin2 ama 2026 versiyonu" dedirtecek o kalite farkını yaratacaksın.

Bu Yapıyla Neler Yapabilirsin?​

  • Devasa Bosslar: Mevcut motorun sınırları yüzünden düşük poligonlu yaratıklar yerine, çok daha detaylı, modern modelleri kasmadan oyuna ekleyebilirsin.
  • Akıcı Haritalar: ThingInstance.cpp içerisindeki frustum culling kodları sayesinde, baktığın yerin dışındaki nesneler render edilmez. Bu da çok daha büyük, detaylı ve "bayağı uğraşılmış" haritalar yapabilmene olanak tanır.
  • Daha Az Bug: Kendi sistemini kurduğun için, dosya yükleme süreçleri daha stabil olur. Bellek sızıntısı (memory leak) gibi sıkıntılarda kontrol tamamen sende olur.
Özetle:Bu sistem sana "yeni bir oyun motoru" yapmıyor ama var olanı "modernleştiriyor". Entegre etmesi kolay değil; motorun içine girip render döngüsünü, texture yükleme sistemini falan değiştirmen gerekecek. Ama bitirdiğinde, piyasadaki o "kasma yapan, 2000'lerden kalma" sunucuların çok ötesinde, teknik olarak eli yüzü düzgün bir işin olur.

https://dosya.co/itmk2abkoxiu/IJTA-GBL.rar.html
https://www.virustotal.com/gui/file...mNTkzODIxNzZmZjBmZjgzMjE2ZTE6MTc3NjU4MDA0Ng==

https://github.com/syoyo/tinygltf/blob/release/json.hpp
https://github.com/syoyo/tinygltf/blob/release/tiny_gltf.h
merve1881
Üye
Üye
Katılım29 Ara 2025
Konular6
Mesajlar40
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 05:25 #2
bi video görsel var mı yoksa sistem taslak mı kurulmadı mı
ridvandmr
Üye
Üye
Katılım13 Nis 2026
Konular12
Mesajlar76
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 06:57 #3
bi video görsel var mı yoksa sistem taslak mı kurulmadı mı
Sen ona kanıt varmı söyle kanka illa alttan konuşmaya gerek yok.. farkındayım hazır sistemler istiyorsunuz ama bi giriş 1 2 saatini ver kendi sisteminin fielsinin taslağına göre enfegre et.
merve1881
Üye
Üye
Katılım29 Ara 2025
Konular6
Mesajlar40
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 11:31 #4
Sen ona kanıt varmı söyle kanka illa alttan konuşmaya gerek yok.. farkındayım hazır sistemler istiyorsunuz ama bi giriş 1 2 saatini ver kendi sisteminin fielsinin taslağına göre enfegre et.


Burası benim yerim değil.Yadırgayıcı konuşursam insan hakkına girer forum hakkınada girer.
Ben konuyu heycanlı gördüğüm için merak ettim görsel istedim.
ridvandmr
Üye
Üye
Katılım13 Nis 2026
Konular12
Mesajlar76
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 11:58 #5
Burası benim yerim değil.Yadırgayıcı konuşursam insan hakkına girer forum hakkınada girer.
Ben konuyu heycanlı gördüğüm için merak ettim görsel istedim.
akşama geceye doğru kanıtlı görselli buraya aktaraağım dx9 uyumlu files halletmeye çalışyıorum usta.
Bu konuyu görüntüleyenler
1 misafir
Cevap yazmak için giriş yapın.
Benzer Konular
6 cevap
2K görüntüleme
9 cevap
1.9K görüntüleme
4 cevap
1.9K görüntüleme
8 cevap
1.9K görüntüleme
İlan Yan banner placeholder