Ashenfall SF | Devlog

Gittim sanmayın. Arkada bir ton güncelleme ve Alfa'ya geçiş ile uğraşıyorum.

Launcher ve Web sitemiz hazır. Aslında ikisi birbirinin aynası gibi, minimal tuttum. Kullananı uzun yazılar okumaya zorlamayan, oyuncuların zihnini ve gözünü yormayacak bir tasarım hedefledim.

Launcher:
1793872182729.webp


Web sitesi:
1793872287461.webp

1793872323627.webp
 
1794006436056.webp

1794006450390.webp

1794006488877.webp

​

​

[Devlog] Yeni Metin Motoru: GPU'da Vektör Yazı, Jilet Gibi Küçük Metin, Tam Unicode & Arayüz Ölçekleme​

Ashenfall'da ekrana çizilen her yazıyı (arayüz, sohbet, fısıltılar, görev pencereleri, tooltip'ler, karakter isimleri) taşıyan metin sistemini baştan yazdım. 2000'lerin başından kalma, Windows'un GDI'ı ile her harfi bir bitmap'e basıp ekrana yapıştıran eski yolu ve onu taşıyan tüm sınıfları projeden tamamen sildim.
Yerine harfleri doğrudan kendi eğrilerinden, piksel piksel GPU'da çizen modern bir metin motoru koydum.

Eski Metin Sistemi Neydi ve Neden Çöpe Gitti?​

  • Harf Başına Bir Çizim: Her harf GDI ile ayrı ayrı bir bitmap'e basılıyor ve ekrana tek tek çiziliyordu. Kenarlıklı (outline) bir yazı için aynı harf 5 kez çiziliyordu.
  • Harfleri Tanımayan Bir Dizgi: Sistem her karakteri birbirinden habersiz kutucuklar gibi yan yana diziyordu. Harf aralığı ayarı (kerning) yoktu; Rumence ș, ț ya da Yunanca vurgulu harfler gibi işaretli karakterler doğru oturmuyordu. Sağdan sola yazılan diller ve emoji hiç yoktu; yazı tipinde olmayan bir karakter boş kutu olarak kalıyordu.
  • Kaba Satır Kırma: Uzun bir satır kelimenin ortasından, hatta harfin taştığı yerden kırılıyordu. Görev pencereleri metni piksel genişliğine değil karakter sayısına göre bölüyordu. İmleç satırın hizalamasını yok sayıyor, tıklama testi yalnızca ilk satırda doğru çalışıyordu.
  • Bulanık Yüksek Çözünürlük: Oyun ekranın ölçeğinden habersizdi. %150 ya da %200 ölçekli bir monitörde Windows bütün pencereyi büyütüp esnetiyordu; yazı da arayüz de bulanıklaşıyordu. Arayüzün boyutunu değiştirmenin bir yolu da yoktu.
  • Bilgisayara Göre Değişen Yazı: Yazı tipleri Windows'un kendi klasöründen okunuyordu; Windows sürümüne göre farklılaşabiliyordu. Yazı tipi adları ise dil dosyalarına gömülüydü.

Yeni Metin Motoru Nasıl Çalışıyor?​

  • Bitmap Yok, Atlas Yok: Harfler artık önceden basılmış küçük resimler değil. Her piksel, harfin gerçek eğrilerinden doğrudan GPU'da hesaplanıyor. Bir harf, boyutu ne olursa olsun yalnızca bir kez hazırlanıyor; arayüzü büyütmek ya da küçültmek hiçbir harfin yeniden üretilmesini gerektirmiyor.
  • Küçük Yazıda Klasik Keskinlik: Yeni sistemin ilk halinde küçük yazılar eskisine göre yumuşak duruyordu. Nedenini ölçerek bulduk: 2004'teki keskinliğin sırrı harflerin şekli değil, yazı tipinin içine elle işlenmiş ve harfleri piksel ızgarasına oturtan talimatlarmış. Artık küçük boyutlarda yazı tipinin bu talimatları tam o piksel boyutunda çalıştırılıyor ve harf, her pikseli ya tam renk ya hiç olacak şekilde katı çiziliyor. Sonuç, klasik dönemin keskinliği: referans çizimle karşılaştırıldığında 1.388 mürekkep pikselinden yalnızca 4 tanesi farklı.
  • Gerçek Dizgi (Text Shaping): Her satır artık bir dizgi motorundan geçiyor: harf aralıkları, birleşik harfler ve işaretli karakterler yerli yerine oturuyor. Oyunun 15 dili doğru yazılıyor; sohbette Arapça sağdan sola, doğru sırada okunuyor.
  • Eksik Karakter Kalmıyor: Bir karakter ana yazı tipinde yoksa, motor onu harf harf yedek bir yazı tipinden alıyor. Türkçe bir sohbet satırının içindeki Korece bir kelime de, renkli bir emoji de aynı satırda çiziliyor. Emoji'ler ten rengi seçenekleri ve bayraklarla birlikte tam renkli.
  • Akıllı Satır Kırma & İmleç: Satırlar Unicode kurallarına göre kelime aralarından kırılıyor; görev pencereleri metni gerçek piksel genişliğine göre bölüyor. İmleç, bir harfi ve üzerindeki işareti tek bir harf gibi atlıyor. Bağlantılı yazılara (item linkleri) çizildikleri yerden, hangi satırda olurlarsa olsunlar tıklanabiliyor.
  • Tek Kalemde Kenarlık: Kenarlıklı yazı, harfin biraz kalınlaştırılmış bir kopyasının altına çizilmesiyle elde ediliyor: eskiden harf başına 4 ekstra çizim yapılırken artık yalnızca 1 ekstra çizim var. Kalınlık yazı boyutuyla birlikte büyüyor.
  • Monitöre Göre Keskin Arayüz: Oyun artık her monitörün kendi ölçeğini biliyor ve ekranın gerçek pikselleriyle çiziyor. %200 ölçekli bir 4K ekranda arayüz alışık olduğunuz boyutta, ama bulanıklık olmadan görünüyor. Pencereyi farklı ölçekli bir monitöre sürüklediğinizde arayüz düzenini ve görünen boyutunu koruyor.
  • Arayüz Ölçeği Seçeneği: Ayarlarda yeni bir Arayüz Ölçeği satırı var: %100, %125, %150 ve ekranınız izin veriyorsa %175 ile %200. Tüm arayüz pencereleri ve resimleriyle birlikte büyüyor; yazı her ölçekte aynı keskinlikte kalıyor.
  • Her Bilgisayarda Aynı Yazı: Yazı tipleri artık oyunla birlikte geliyor; Windows'un yazı tiplerine hiç dokunulmuyor. Dil dosyalarında da kodda da tek bir yazı tipi adı kalmadı: her metin yalnızca rolünü (gövde ya da büyük) söylüyor.

Performans & Optimizasyon​

  • Tek Akış, Tek Çizim: Arayüzün çizdiği her şey (harfler, resimler, dolgular, çizgiler) tek bir akışa toplanıyor ve topluca çiziliyor. Giriş ekranının bütün arayüzü 75 parça, tek bir çizim çağrısı. Eskiden her harf ve her resim ayrı bir çizimdi.
  • Kare Başına Sıfır Yeniden Üretim: Bir yazı yalnızca içeriği, rengi ya da boyutu değiştiğinde yeniden diziliyor; aynı kalan yazı her kare yeniden işlenmiyor.
  • Küçük Bellek İzi: Bir harf GPU'da ortalama yaklaşık 2.2 KB yer kaplıyor. Latin, Yunan ve Kiril harflerinin tamamı yaklaşık 2 MB. Yedek yazı tipleri ancak ihtiyaç duyan ilk karakter geldiğinde açılıyor; Korece görmeyen bir oturum Korece yazı tipini hiç yüklemiyor.
  • Sınırlı Maliyet: Ölçeği değiştirmek GPU'daki harflerin hiçbirini yeniden üretmiyor. Yalnızca küçük boyutlarda katı çizilen harfler, yeni piksel boyutları için bir kez hazırlanıyor.
 
Son düzenleme:
Screenshot 2026-11-07 191322.webp

​

[Devlog] Resim Yazılar Tarihe Karıştı: Harita İsimleri, Başlıklar & 690 Texture'un Temizliği​

Oyundaki harita isimleri, Şeytan Kulesi'nin kat yazıları, imparatorluk seçim ekranının başlığı ve karakter seçim/oluşturma ekranlarındaki sınıf isimleri artık önceden çizilmiş birer resim değil. Hepsi yeni metin motorumuzla, gerçek yazı olarak çiziliyor.

Ne Değişti?​

  • Resimden Yazıya: Eskiden bu başlıkların her biri, her dil için ayrı ayrı hazırlanmış bir texture dosyasıydı. 15 dilde toplam 690 texture'u projeden tamamen sildim.
  • Her Çözünürlükte Keskin: Yazılar artık sabit boyutlu bir resim olmadığı için her çözünürlükte ve her arayüz ölçeğinde keskin kalıyor. Kenarlık, parıltı ve gölge efektleri harfin kendi şekli üzerinden hesaplanıyor.
  • Yıllardır Süren Hatalar Düzeldi: Resimlerin içine gömülü yazım hataları da onlarla birlikte gitti. Bazı dillerde yanlış harita adı yazan, yanlış haritanın resmini kullanan ya da harfleri eksik veya fazla olan başlıklar artık doğru.
  • Çeviri Artık Bir Satır: Bir başlığı düzeltmek ya da yeni bir dil eklemek için artık bir resim çizmek gerekmiyor. Dil dosyasındaki tek bir satırı değiştirmek yetiyor.
 
Geri
Üst