Yerelleştirme için bir oyun nasıl hazırlanır?


48

Birçok proje oyun bitene kadar yerelleşmeyi düşünmüyor. Sonra yerelleştirme bir hack olarak yapılır ve daha sonra eklendiği açıktır. Bazı özel ilgi alanları:

  • Metin dizeleri (açıkçası)
  • Müzik ve / veya anlatılar gibi ses klipleri
  • Dokular üzerinde işlenen metinler (örneğin bir kasadaki etiket)
  • Önceden işlenmiş filmlerde karelerde işlenen metin
  • Yazı tipleri / Farklı diller için karakter setleri
  • Vb.

İlk geliştirme aşamalarında bu zorluklara hazırlanmak için bazı iyi yollar nelerdir, bu yüzden çok fazla maliyete maruz kalmadan daha kolay hale getirebilirsiniz?


8
Son zamanlarda Venedik Şafağı - Venedik oyununu oynamıştım. Bu yaklaşık% 99 doğru. . . ve arada sırada karakterlerden biri, bir satır için Almanca konuşmuyor ya da bina durum raporlarından birinin ümitleri var veya (arada bir) yerel mağazadan bir Hata Ayıklama Öğesi alabileceğim konusunda bilgilendirildim. Hangi yöntemi kullanırsanız kullanın, çevrilmemiş hatları algılamanın kolay olduğundan emin olun - bunları görsel olarak okumak zorunda kalırsanız veya oyunu oynar ve umarlarsa ortaya çıkarlarsa yanlış yaparsınız.
ZorbaTHut

@ZorbaTHut Hata ayıklama öğesi, çeviri hatalarını bildirmenin bir yolu mu, yoksa DoD geliştiricileri yerelleştirme aksaklıklarını düzeltmek için bir DLC kullandı mı?
Dan Neely,

Programcılarınızın okuyabileceği ve yazabileceği sahte bir dil oluşturmak yararlı olabilir. Google’ın bir "bilgisayar korsanı" dili var ve Facebook'un Korsan'ı var. Geliştiriciler için eğlenceli ve yeni bir dil öğrenmeden kendi başlarına test edebilecekleri bir şey.
John McDonald,

Yukarıdaki cevapları eklemek için, sözde yerelleştirme sürecini gözden geçirmenizi öneririm (esasen üst cevaptaki "Kayıp yerelleştirilmiş metni açıkça görünür" noktasının resmi adı ve süreci). Tercüme başlamadan önce olası uygulama sorunlarını ortadan kaldırabilirsin.
Anthony,

Yanıtlar:


49

Ben uzman değilim, ama işte bazı temel şeyler:

Dizelerinizin ASCII'den daha fazlasını kullanabileceğinden emin olun

ASCII'ye uymayan bazı özel karakterlere ihtiyacınız olacak ve string sınıfınız daha iyi değil. UTF-8 ortak bir kodlamadır, çünkü yerden tasarruf sağlar. Ne yaparsanız yapın, erken test edin ve akıntıları ütüleyin.

Gerçek bir sicim sınıfını kullanmak gerçekten iyi bir fikirdir ve sadece char *her yerde değil , acı dolu bir dünyada olacaksınız.

Yazı tiplerini unutma. Kullandığınız tüm fontların, ihtiyacınız olan karakterlere sahip olduğundan emin olun.

Dizelerinizi koddan çıkarın

Bu en önemlisi. Metin dizelerinizin, değiştirebileceğiniz bazı veri dosyasında kod dışında tutulduğundan emin olun. Bunun için bir boru hattı kurmak, bir angarya ön cephesi olabilir, ancak bir süre sonra size tasarruf sağlayacaktır. Basit bir API isteyeceksiniz, böylece kodda bir dizgeye ihtiyacınız olduğunda, bu kadar basit:

String text = Locale::getString("some unique identifier");

Kodda birleştirme veya dizeler oluşturma

Bir metnin nasıl daha küçük kelimelerden oluştuğu konusunda herhangi bir varsayımda bulunmamak önemlidir. En az zararsız bir şey bile:

String currency = Locale::getCurrencyString() + money.toString();
// creates $123

bir problem çünkü diğer diller sayıdan sonra para birimini koyabilir. Bunun yerine, kendileri gibi yerelleştirilmiş biçim dizeleri kullanın:

String format = Locale::get("currency format"); // returns "${0}" in English
String currency = String::Format(format, money.toString());

Bu şekilde, yerelleştiriciler, biçim dizesindeki sözcükleri yeniden düzenleyebilir.

Sanatta görünen, özellikle de videodaki metin miktarını en aza indirin

Sanat varlıklarını çatallamak bir angaryadır. Bazı UI öğeleri için en azından biraz yapmanız gerekecek, ancak bu bir güçlük. FMV'yi istemek çok büyük bir acıdır çünkü artık FMV'nizin kopyalarını hazırlamanız ve saklamanız gerekir.

Farklı dillerde iyice test edin

Çoğu kod tabanında, yerelleştirme API'nizden geçmek zorunda olduklarını söylemek sadece unutmak printf("Hi there");ya da loadTexture("someTexture");unutmak çok kolaydır . Biri unutacak ve sonunda ana dilinizde doğru olan ama başkalarında yanlış olan bir şeyle karşılaşacaksınız. Bunları bulmanın tek yolu, test edicilerinizin birincil olmayan dillerde test yaptırmasıdır.

Kayıp yerelleştirilmiş metni belirgin hale getirme

Metninizi genellikle döngünün sonunda çevirirsiniz, bu nedenle çoğu zaman, bazı diller için hiçbir veri olmaz. Bu iyi, çünkü sürekli olarak yeniden tercüme etmek zorunda kalmadan içeriğinizi yinelemenize izin veriyor. Dezavantajı, bir şeyleri kaçırmanız ve bazı şeyleri çevirmeyi unutmanızın kolay olduğu anlamına gelir.

Yapabileceğiniz ucuz bir şey, eksik metinlerin çok açık bir şekilde görünmesini sağlamaktır. Oyunda eksik olduğunda.

UI'nizi en kötü durumdaki dil çevresinde tasarlayın

Farklı diller daha uzun veya daha kısa kelimelere sahip olma eğilimindedir. İngilizce’de güzel görünen bir kullanıcı arayüzü, sınırları aşan, kırpılan veya daha uzun bir dilde yanlış şekilde kaydırılan bir metne sahip olabilir. En kötü durumdaki dili barındırmak için UI değişiklikleri yapmanız gerekecektir (veya kullanıcı arayüzünüzü doldurun, ancak muhtemelen yapmak istediğiniz şey bu değildir .)

Sinir bozucu bir şekilde, İngilizce genellikle yerelleştirilenlerin en kısa dilidir, bu nedenle tasarımcılarınız muhtemelen istemeden en iyi durum için tasarlıyorlar. Tasarladıklarında yer tutucuları için ekstra uzun metin kullanmalarını sağlayın. Herhangi bir metnin İngilizce'den yaklaşık% 30 daha uzun olabileceğini varsayalım. Google Çeviri, yer tutucu için yaklaşık bir metin parçası almak için iyi olabilir.

Çeviri için bütçe zamanı

Metin çevirme genellikle ekip yorgun olduğunda ve gerçekten umursamadığında geç olur. Bununla birlikte, bu olduğunda çok fazla hata alırsınız . Kelimeler sınırları aşar, çevirmenler hata yapar, vb. İşler yapar. Sorunları daha da kötüleştirmek için, yurtdışındaki insanlara metin göndermek ve değişikliklerini beklemek zorunda kalırsanız, metni tekrarlamak için geri dönüş süresi uzayabilir. Bu iş için zaman ayırın.


4
Ah, bitiştirilmiş dizeler. Kıçından ne acı. Çeşitliliği hızlı ve kolay bir şekilde oluşturmak için ana dilde harika çalışır. Ama sonra farklı dilbilgisi olan bir dile girersin ve bu tamamen başarısız olur. Diğer tüm noktalar da iyi. Almanca'da 'Ayarlar', ihtiyaç duyduğunuzda biraz fazladan ekran bırakan 'Einstellungen' idi.
Casey Wagner

13

Diğer önerilere ek olarak, geçmişte yaptığım ve UI bileşenlerinden dışarı kanan çevrilmiş metni bulmakta büyük ölçüde yardımcı olan bir şey, oyununuz için herhangi bir dize görüntülediğinde tüm dillere bakan özel bir dil moduna sahip olmaktır. bu dizenin en uzun sürümünü seçer. Bu şekilde, tüm dizeleri bu moda uygun hale getirdikten sonra, tüm dillerdeki tüm kanamaları düzelttiğinizi biliyorsunuzdur.


9

Bir oyun yerelleştirme doğru olduğunu lanet zor .

İnternete göz atabilir, blog yazılarını okuyabilir veya StackOverflow cevaplarını kullanabilirsiniz; gettext gibi geleneksel i18n çerçevelerini öğrenebilirsiniz ; uluslararasılaştırma ve oyun yerelleştirmesi hakkındaki Wikipedia sayfalarını okuyun ; Mükemmel Microsoft dil kılavuzuna bakın - ancak oyunları yerelleştirmek aslında bundan daha zor. Aslında, oyunlarda muhtemelen başka bir uygulama veya web arayüzünden daha zordur. Bunun nedeni oyunların daha dinamik, daha canlı, daha canlı olması (en azından iyi oyunlar).

Daha da önemlisi, aşağıdaki adımların atılması gerekecek:

Sınırları belirle.

Erken hangi dilleri desteklemek istediğinize dair çok önemli bir karar vermek istersiniz. Seçiminiz ne kadar genişse, bir dilin nasıl davranabileceği konusundaki varsayımlar o kadar kırılır. Genelde bu varsayımlar beynimizde o kadar derine gömülür ki, birileri onları işaret etmeden yanlış olabileceğini hayal bile edemeyiz. Bu bizi bir sonraki noktaya getiriyor:

Desteklemek istediğiniz her dilin uzmanlarını bulun.

Uzman, dil hakkında yeterli analitik bilgi ve beceriye sahip olan, bir İngilizce konuşmacının kendi dilinde tutmadığı varsayımlarını size gösterebileceği anlamına gelir. O zaman bu varsayımların etrafında nasıl çalışılacağı konusunda bir strateji geliştirmeniz gerekecek.

Örnek olarak: Batı dillerinde, kelimeler arasına fazladan boşluk koyarak metni bir paragrafta haklı çıkarırız. Arapça dilinde metin, kelimelerin içine kashida karakterleri eklenerek doğrulanır . Bu gibi görünebilir .

Başka bir örnek: Rusçada, kelimelerin çoğu için 2 çoğul biçim vardır. Böylece örneğin "1 jeton" / "3 jeton" / "5 jeton" u "1 монета", "3 монеты", fakat "5 монет" olarak çevirirsiniz. Doğru çoğul forma karar vermek için gerçek prosedür şöyle görünür:

function LocalRU::GetPlural(n, form0, form1, form2) {
    return (n%10) == 0 || (n%100) >= 5 && (n%100) <= 20? form0 : 
           (n%10) == 1? form1 : 
           (n%10) <= 4? form2 : form0;
}

Bağlam duyarlı bir çeviri modülü oluşturun.

Muhtemelen çevirinin daima içeriğe bağlı olduğunu biliyorsundur. Ve bir oyun içindeki içeriğin her zaman değiştiğini biliyorsunuz. Bu iki ifadeyi bir araya getirirsek ne olur? Genel olarak çevirileriniz oyununuz kadar dinamik olmalıdır.

Örneğin, basitçe "katılıyorum" ifadesi, konuşmacının cinsiyetine bağlı olarak (erkek / kadın / transseksüel | queer | sorgulama) olarak Rusça'ya "Я согласен" / "Я согласна" / "Я согласно" diline çevrilmiştir. Bu, iletişim hatlarınızdan biriyse, dil modülünün karakterinizin cinsiyetine bağlı olarak çalışma zamanında olası çevirilerden birini seçmesi gerekir (oyuncularınıza böyle bir seçenek sunduğunu varsayarsak).

Japoncaya çevrildiğinde aynı cümle, konuşmacı ile dinleyici arasındaki ilişkinin formalite seviyesine bağlı olarak yine farklı çevirilere sahip olacaktır. Bu nedenle, oyununuzda itibar, arkadaşlık ya da değişken üstünlük (eğer karakteriniz Çaylaktan Genel'e doğru değişebilir) fikrini tanıtırsanız, çeviriyi oluştururken bunu hesaba katmanız gerekir. (Aslında, bu Japonlara özgü değildir. İngilizce'de bile, orduda asla rütbesinde olan birine "Efendim, evet efendim!" Demezsin.)

Bağlam içine atlamak için bir yol var.

Tercümanlarınız, belirli bir cümlenin göründüğü bağlamı görebilme yeteneğine sahip olmalıdır. Bazen bağlam açıktır, bazen bir şeyi doğru çevirmek için kendiniz görmeniz / duymanız / tecrübe etmeniz gerekir.

"Bu kitap mavi" gibi basit bir cümle bile. ben kitaba bakmadan ve mavinin hangi özel tonunun olduğunu görmeden açıkça tercüme edilemez .

Kelime oyunu, püf noktaları ve dile özgü diğer öğelerden kaçının.

Ya da belki kaçınmayın, ancak en azından kelime oyunu çevrilemediğinde ne yapılması gerektiğine dair bir stratejiniz var. Çünkü muhtemelen olmayacak.

En azından, çifte anlamı olan veya bazı diğer kelimelere benzeyen belirli kelimelere dayanan görevler / bulmacalar / oyun nesneleri yaratmamalısınız. Çünkü bir kez tercüme edildiğinde kendi oyununu bozacaksın. (Örneğin, eski bir Fallout2 oyununda ana arayış, GECK adlı nesneyi bulmaktı; oyunun etrafında çok sayıda "Gecko" canavar (mutasyona uğramış kertenkeleler) vardı; doğal olarak, isimlerin bu benzerliği etrafında birçok referans ve arayışlar yarattı. iyi çeviriler son derece zorlaştı).

Neşelen!

Oyunu yerelleştirmek zordur. Ama herkes için zor. Bir çaba gösterir ve doğru yaparsanız, hedef ülkenizdeki oyun eleştirmenleri tarafından farkedilmez. İyi çevirisi olan bir oyun öne çıkacak ve daha yüksek karlar elde edecektir. Sonuçta, metin oyunda atmosfer yaratmak için önemlidir, grafikler kadar önemlidir (bu nedenle eski metin tabanlı RPG'ler bu kadar etkileyicidir).


"Kelime oyunundan kaçın" seçeneğinin alternatifi, bir dil çeviri ekibine yaratıcı bir yazar eklemek ve gerçek anlamlarını değiştirmelerine izin vermektir. FFXIV bunu İngilizce versiyonu için çok iyi bir örnek olarak yapıyor.
Patrick Hughes,

3

Wil Shipley şu ana kadar okuduğum en iyi yerelleştirme rehberine sahip. Maalesef iPhone'a özgü, ancak yine de yaygın olarak yararlı bilgiler elde edilebiliyor. Ayrıca, varlıkların yerelleştirilmesini ve kullanıcı arayüzünü ele alıyor - oyun yerelleştirmedeki en büyük zorluklardan ikisi.


1

Her zaman, HER ZAMAN kaynak dili yerelleştirilmiş bir dil olarak kabul edin.

Bu nedenle, kaynak diliniz EN ise, tüm EN varlıklarını ve dizgilerini ayrı bir EN klasöründe tutun ve oradan çekin.

EN varlıklarını istediğiniz yerelleştirme boru hattından çekin.

Bu basit şeyi yaparak, yerelleştirme sorunlarının% 80'ini yakalarsınız ve çok daha kolay bir yerelleştirme süreci için ayarlanırsınız .

Birçok oyunu yerelleştirdim ve her zaman bu külçe ile yönetiyorum.


1

Burada gerçekten harika ipuçları görüyorum!

Yerelleştirmenizi zorlaştırmaktan oyununuzu tamamen mahvetmeye kadar uzanan en yaygın hataların bir listesini yapmaya çalışacağım :

  • Yerelleştirmeyi oyun geliştirmenin son adımı olarak düşünmek
  • Metin dizelerinizi kaynak kodundan izole etmemek
  • Bir cümlenin ortasında birleştirme / satır yazma.
  • Varsayalım ki zamanlar, tarihler ve birimler yerelleştirilmeye gerek duymaz
  • Çevirmenlere yeterli referans materyali sağlamamak / Sorularına cevap vermemek
  • Oyununuzdaki tüm metinlerin ASCII’de olacağını varsayalım
  • Görselde metin olması
  • Sert metin / UI kutularına sahip olmak
  • Tüm dillerin İngilizce ile aynı uzunlukta olduğunu varsayalım
  • Google Translate / makine çevirisini kullanma
  • Kültürel faktörleri gözardı etmek
  • Yerelleştirme için yeterli bütçe ayırma

Yerelleştirme, kalkınmaya mümkün olduğunca erken entegre edilmelidir ve bir oyun tasarlarken bunu daima aklınızda tutmalısınız.

Doğru planlama ve dikkatli pazar araştırmasıyla, daha da fazla sorun ve masraftan tasarruf edersiniz.

Bir oyun yerelleştirme şirketinin kurucusuyum ve birkaç ay önce blogumuzda yerelleştirme için oyun hazırlığı yaptık.

İşte bu yazıyı özetleyen Infographic: https://magic.piktochart.com/output/18317297-9-steps-to-cheaper-game-development-with-localization

Bu ipuçlarını daha ayrıntılı olarak kapsayan tam gönderiye bağlantı, alt kısmındadır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.