Türkçe yamalar dışarıdan bakınca genelde “oyunun metinlerini çıkar, çevir, geri koy” gibi basit bir işlemmiş gibi görünüyor.
Aslında işin çeviri kısmı çoğu zaman sürecin sadece bir bölümü.
Oyunun hangi motoru kullandığı, metinlerin nerede tutulduğu, dosyaların nasıl paketlendiği, fontların Türkçe karakterleri destekleyip desteklemediği ve oyun güncellendiğinde bu yapının ne kadar değiştiği gibi birçok şey devreye giriyor.
Bu konuda kendi tarafımızda bir Türkçe yamayı hazırlarken genel olarak nasıl ilerlediğimizi anlatmak istiyorum. 🇹🇷
🔍 1. Önce Oyunun Yapısını İnceliyoruzİlk iş doğrudan çeviriye başlamak değil.
Önce oyunun dosya yapısını anlamak gerekiyor.
Bakılan şeylerden bazıları:
Hangi oyun motoru kullanılıyor?
Metinler hangi dosyalarda tutuluyor?
Dosyalar sıkıştırılmış veya paketlenmiş mi?
Metinler JSON, XML, CSV veya benzeri açık formatlarda mı?
Yoksa asset veya özel binary formatların içinde mi?
Oyun bir localization sistemi kullanıyor mu?
Birden fazla dil için ayrı dosyalar var mı?
Unity, Unreal Engine veya özel motor kullanan oyunlarda süreç birbirinden oldukça farklı olabiliyor.
Bazı oyunlarda metin dosyasını açtığınız anda bütün cümleleri görebilirsiniz.
Bazılarında ise ilk metni görebilmek için önce oyunun paket yapısını çözmeniz gerekiyor.
📦 2. Çevrilecek Metinleri ÇıkarıyoruzMetinlerin nerede olduğunu bulduktan sonra mümkün olduğunca düzenli şekilde dışarı çıkarmaya çalışıyoruz.
Burada önemli olan yalnızca cümleleri elde etmek değil.
Metinle beraber kullanılan kimliklerin ve yapının da korunması gerekiyor.
Örneğin oyun şuna benzer bir sistem kullanabilir:
QUEST_MAIN_001_TITLE
QUEST_MAIN_001_DESCRIPTION
Bu ID'lerin kendisini değiştirmek istemeyiz.
Bizim değiştirmek istediğimiz şey karşılığındaki kullanıcıya gösterilen metin.
Yanlışlıkla oyunun kullandığı anahtarları değiştirirsek çeviri düzgün görünmek yerine doğrudan oyunun sistemini bozabilir.
🧹 3. Çevrilmemesi Gereken Şeyleri AyıklıyoruzOyun dosyasında gördüğümüz her şey çevrilecek metin değildir.
Dosyaların içerisinde:
değişken isimleri,
kod parçaları,
format belirteçleri,
placeholder'lar,
HTML benzeri etiketler,
renk kodları,
özel komutlar,
dosya yolları
bulunabiliyor.
Örneğin:
Hello {playerName}
şeklinde bir metin varsa {playerName} kısmını korumamız gerekir.
Bunu:
Merhaba {oyuncuAdı}
şeklinde değiştirirsek oyun {playerName} değişkenini artık bulamayabilir.
Aynı şekilde %s , %d , \n , <color> , {0} gibi yapılar da dikkat edilmesi gereken şeylerden bazıları.
Türkçe yama hazırlarken en kolay hata yapılan yerlerden biri burası.
🇹🇷 4. Çeviri Süreci BaşlıyorTeknik taraf hazır olduktan sonra asıl çeviri kısmına geçiyoruz.
Burada mümkün olduğunca kelime kelime çeviri yerine oyunun bağlamını korumaya çalışıyoruz.
Çünkü İngilizcede tek bir kelime, oyunun farklı bölümlerinde farklı anlamlara gelebiliyor.
Mesela:
Charge
bir yerde “Hücum” anlamına gelebilir.
Başka yerde “Şarj”.
Başka bir yerde ise “Ücret”.
Metni bağlamından koparıp çevirdiğinizde teknik olarak Türkçe bir cümle ortaya çıkar ama oyunda hiçbir anlam ifade etmeyebilir.
Bu yüzden özellikle:
görev metinleri,
diyaloglar,
eşya açıklamaları,
yetenekler,
menüler
gibi alanlarda bağlam oldukça önemli.
🤖 Yapay Zekâ Kullanılıyor mu?Kullanılabilir.
Özellikle on binlerce satır içeren oyunlarda yapay zekâ ve otomatik çeviri sistemleri süreci ciddi şekilde hızlandırabiliyor.
Ama benim burada dikkat ettiğim nokta şu:
AI ile çevrilmiş olması, çevirinin hazır olduğu anlamına gelmiyor.
Model:
oyun bağlamını yanlış anlayabilir,
karakter isimlerini çevirebilir,
teknik terimleri bozabilir,
placeholder'ları değiştirebilir,
aynı kelimeyi farklı yerlerde farklı çevirebilir.
Bu yüzden otomasyon kullanılsa bile sonrasında kontrol ve düzeltme yapılması gerekiyor.
Amaç hızlı şekilde çok satır çevirmek değil, oyunun içinde doğal duran bir Türkçe ortaya çıkarmak.
🔤 5. Türkçe Karakterleri Kontrol EdiyoruzÇeviri tamamlandığında işler bitmiyor.
Oyunun kullandığı fontta:
ç, ğ, ı, İ, ö, ş, ü
karakterlerinin bulunması gerekiyor.
Bazı oyunlar İngilizce için hazırlanmış sınırlı font atlasları kullanıyor.
Böyle bir durumda örneğin:
Başlat
yerine:
Ba lat
veya kutucuklar görebilirsiniz.
Bu durumda oyuna göre:
font değiştirmek,
font atlasını genişletmek,
yeni karakterleri eklemek,
fallback font kullanmak
gerekebiliyor.
Bazen bir yamanın en uğraştırıcı bölümü çeviri değil doğrudan font sistemi olabiliyor.
📐 6. Arayüzde Taşan Metinleri Düzeltiyoruzİngilizce ile Türkçe aynı uzunlukta bir dil değil.
Örneğin:
Settings
yerine:
Ayarlar
çok problem oluşturmaz.
Ama bazı ifadeler Türkçede İngilizcenin iki katı uzunluğa çıkabiliyor.
Bu durumda:
butondan taşma,
iki yazının üst üste binmesi,
satır kesilmesi,
menünün bozulması
gibi problemler ortaya çıkabiliyor.
Böyle yerlerde bazen çeviriyi daha kısa ve doğal bir ifadeyle değiştirmek gerekiyor.
Ama bunu yaparken de anlamı kaybetmemek lazım.
🧩 7. Metinleri Tekrar Oyuna YerleştiriyoruzÇeviri ve kontroller bittikten sonra değiştirdiğimiz dosyaların tekrar oyunun anlayabileceği hale getirilmesi gerekiyor.
Oyuna göre bu işlem:
dosyayı doğrudan kaydetmek,
asset'i tekrar oluşturmak,
arşivi yeniden paketlemek,
localization dosyasını yeniden derlemek
şeklinde olabilir.
Bazı oyunlarda bu birkaç saniyelik bir işlem.
Bazılarında ise doğru paketleme araçlarını ve doğru parametreleri bulmak işin büyük kısmını oluşturuyor.
🎮 8. Oyunun İçinde Test EdiyoruzBence en önemli aşamalardan biri bu.
Dosyanın hatasız oluşturulması, yamanın düzgün çalıştığı anlamına gelmez.
Oyunu açıp gerçekten kontrol etmek gerekiyor.
Özellikle:
ana menü,
ayarlar,
yeni oyun,
görevler,
diyaloglar,
envanter,
eşya açıklamaları,
harita,
kayıt yükleme,
özel ekranlar
gibi bölümleri kontrol ediyoruz.
Burada sadece “Türkçe görünüyor mu?” diye bakmıyoruz.
Aynı zamanda:
oyun çöküyor mu,
görev ilerliyor mu,
menüler çalışıyor mu,
kayıt dosyaları etkileniyor mu,
yazılar taşıyor mu,
Türkçe karakterler düzgün mü
gibi şeylere de bakmak gerekiyor.
⚠️ 9. Kritik Alanları Bilerek ÇevirmeyebilirizBazen kullanıcı:
Burası neden İngilizce kalmış?
diye sorabiliyor.
Her zaman sebebi unutulmuş bir çeviri olmayabilir.
Bazı oyunlarda belirli metinler oyun tarafından:
ID,
script anahtarı,
görev kontrolü,
internal reference
olarak da kullanılabiliyor.
Böyle bir değeri Türkçeleştirmek oyunda beklenmeyen problemler oluşturuyorsa o bölümü bilerek özgün haliyle bırakmak daha doğru olabilir.
Schedule I yamasındaki bazı görev isimlerinde de bu nedenle benzer bir yaklaşım kullanıyoruz.
Benim için öncelik her şeyin yüzde yüz Türkçe görünmesinden önce oyunun düzgün çalışmaya devam etmesi.
📦 10. Dağıtım Paketi HazırlıyoruzYama test edildikten sonra kullanıcıya dağıtılacak paket hazırlanıyor.
Burada mümkün olduğunca sadece gerekli dosyaları pakete koymaya çalışıyoruz.
Aynı zamanda:
hangi oyun sürümü için hazırlandığı,
hangi platformlarda test edildiği,
nasıl kurulacağı,
nasıl kaldırılacağı
gibi bilgilerin de net olması gerekiyor.
Çünkü doğru yama yanlış oyun sürümüne kurulursa yine problem yaşanabilir.
🔐 11. Dosya Bütünlüğünü Kontrol EdiyoruzDağıtıma çıkacak paketin hash bilgisini almak da önemli.
ORGA tarafında bu nedenle SHA-256 kullanıyoruz.
Bu sayede yayınladığımız paketle kullanıcının indirdiği dosyanın aynı olup olmadığını kontrol edebiliyoruz.
Özellikle dosya dağıtımında bunu iyi bir güvenlik katmanı olarak görüyorum.
🚀 12. ORGA Hub'a Entegre EdiyoruzTeknik yapısı uygun Türkçe yamaları ORGA Hub'ın otomatik kurulum sistemine de ekleyebiliyoruz.
Burada yamanın kendisini hazırlamakla iş bitmiyor.
Hub'a ayrıca:
oyunun nasıl bulunacağı,
doğru oyun klasörünün nasıl doğrulanacağı,
hangi dosyaların kurulacağı,
hangi dosyaların yedekleneceği,
paket hash'i,
kurulum ve kaldırma davranışı
gibi bilgiler tanımlanıyor.
Bundan sonra kullanıcı tarafında işlem mümkün olduğunca basitleşiyor.
Hub oyunu buluyor, paketi indiriyor, doğruluyor, yedek alıyor ve kurulumu gerçekleştiriyor.
🔄 13. Oyun Güncelleniyor ve Döngü Yeniden BaşlıyorTürkçe yamaların en büyük sıkıntısı burada başlıyor. 😄
Oyunun geliştiricisi yeni güncelleme yayınladığında:
metin dosyaları değişebilir,
yeni satırlar gelebilir,
eski satırlar kaldırılabilir,
asset yapısı değişebilir,
paket formatı değişebilir,
font veya UI değişebilir.
Bu nedenle daha önce çalışan yamanın tekrar kontrol edilmesi gerekiyor.
Bazen küçük bir oyun güncellemesinde hiçbir şey yapmak gerekmiyor.
Bazen ise yamanın önemli bir bölümünü yeniden hazırlamak gerekiyor.
Bu yüzden bir Türkçe yamanın “yayınlandı” olması her zaman projenin tamamen bittiği anlamına gelmiyor.
❤️ SonuçKısaca süreç:
Oyunu incele → metinleri bul → ayıkla → çevir → karakterleri kontrol et → tekrar paketle → oyunda test et → dağıtıma hazırla → oyun güncellenince tekrar kontrol et.
Ama bu adımların her birinin zorluğu oyundan oyuna ciddi şekilde değişiyor.
Bazı oyunların Türkçe yaması birkaç günde hazırlanabilirken bazı oyunlarda yalnızca metinleri düzgün şekilde çıkarabilmek günler sürebiliyor.
Forumda ilerleyen zamanlarda bu sürecin daha teknik bölümlerini de ayrı ayrı anlatacağım.
Özellikle Unity ve Unreal Engine oyunlarında localization yapısı, font problemleri ve oyun güncellemesi sonrası eski-yeni dosyaları karşılaştırma gibi konulara ayrıca girmek istiyorum. 🇹🇷
Gringos