RuneTranslate artık NScripter / ONScripter görsel romanlarını çeviriyor
RuneTranslate artık NScripter ve ONScripter görsel romanlarını İngilizceye ve 30'dan fazla dile çeviriyor — XOR-0x84 ile karartılmış nscript.dat'ı çözerek, Shift-JIS / CP932 metnini ve Latin harfiyle başlayan satırların ayrıştırıcı tuzağını ele alarak ve başlık ekranlarına, menülere, düğmelere işlenmiş Japoncayı çevirerek. Oyun klasörüne yönlendir, otomatik algıla, çevir, çalışmaya hazır bir kopya dışa aktar. Yeni eklendi — yüklenmeyen her oyunu bize bildirin.
RuneTranslate artık Japon görsel romanlarının en eski lehçelerinden birini konuşuyor: NScripter ve onun açık kaynaklı ikizi ONScripter. Klasik bir doujin görsel romanı çevirmek istediyseniz — hani şu, bir klasör dolusu şifreli .dat dosyası ve Shift-JIS betikleri olarak gelen türden — bu, tarih boyunca elle açması en zahmetli olan ve makine çeviri araçlarının genellikle atladığı motor ailesidir. RuneTranslate artık onu algılıyor, betik metnini okuyor ve hatta başlık ekranına ve menü düğmelerine boyanmış Japoncayı bile çeviriyor.
Bu yeni eklenen bir motor, o yüzden her şeyden önce: RuneTranslate'i bir NScripter / ONScripter oyununa yönlendirdiğinizde yüklenmez veya algılanmazsa lütfen bize bildirin. Bununla ilgili ayrıntılar sonda.
NScripter ve ONScripter aslında nedir
NScripter, Naoki Takahashi tarafından yazılmış, yaklaşık 1999'dan 2018'e kadar geliştirilmiş bir Windows görsel roman betik motorudur (son ara sürümü 3.10.102, Şubat 2018 tarihlidir; gerçi ciddi özellik çalışması 2000'lerin başından sonra çarpıcı biçimde yavaşlamıştır). Hiçbir zaman açık kaynak olmadı, ama lisansı telifsiz kişisel ve ticari kullanıma izin veriyordu ve bu — dahili bir arşiv paketleyici ve güçlü, alçak seviyeliliğiyle nam salmış bir betik diliyle birleşince — onu zirvede olduğu dönemde Japonya'nın en yaygın kullanılan görsel roman motorlarından biri yaptı. Nekonekosoft gibi ticari stüdyolar neredeyse tamamen ona dayanıyordu ve doujin sahnesi ona bayılıyordu.
ONScripter ayrı, bağımsız bir projedir: NScripter çalışma zamanının açık kaynaklı (GPL) bir yeniden uygulaması olup, 2002'de Ogapee olarak bilinen bir programcı tarafından başlatılmıştır. SDL üzerine kuruludur ve NScripter oyunlarıyla doğrudan uyumlu olmayı hedefler, ama NScripter'ın asla çalışamadığı yerlerde çalışır — Linux, macOS, BSD, Android ve daha fazlası. Açık ve değiştirilebilir olduğu için, İngilizce konuşan yerelleştirme topluluğu onu çevrilmiş NScripter oyunlarını dağıtmak için fiili motor olarak benimsedi ve bir dizi fork, Batı dili desteği ekledi: Chendo'nun 2004 tarihli 1 baytlık karakter yaması, Haeleth'in orantılı Unicode yazı tipleri için ONScripter-EN'i (ONS-EN) ve Ponscripter*'ı, Uncle Mion'un sonraki bakım çalışması ve insani'nin modern derlemeler için yeniden etkinleştirdiği dal.
Yani kısacası: NScripter, oyunların üzerinde yazıldığı özgün, kapalı Windows motorudur; ONScripter (ve ONS-EN / Ponscripter) ise hayran çevirmenlerin çevrilmiş derlemelerini gerçekte çalıştırdığı açık, çapraz platform çalışma zamanıdır. RuneTranslate oyunun betikleri ve varlıkları üzerinden çalışır, dolayısıyla her iki kamptaki başlıkları da kapsar.
Bu oyunları çevirmek neden bu kadar zor oldu
Ren'Py veya Kirikiri gibi modern bir motorla kıyaslandığında, NScripter / ONScripter o motor çağına özgü tuhaflıklarla dolu bir mayın tarlasıdır. Özellikle dördü, onu hem elle çeviri yapanlar hem de saf makine çeviri araçları için bir duvara dönüştürdü:
- Shift-JIS / CP932 kodlaması. Eski betikler ve veri dosyaları Shift-JIS (Microsoft'un varyantı CP932), yani o eski Japon çift baytlı kodlamayla kodlanmıştır. Yanlış çözerseniz mojibake elde edersiniz; dikkatsizce yeniden kodlarsanız bazı eski çalışma zamanları belleği bozar ve çöker. Bir çevirmenin CP932'yi doğru biçimde algılayıp gidiş-dönüş yapması gerekir — modern yerli betikler UTF-8 olabilir, ama eski katalog CP932'dir.
- XOR-0x84 ile karartılmış `nscript.dat`. Derlenmiş betik genellikle
nscript.datiçinde (Ponscripter'dapscript.dat) bulunur; burada her bayt sabit0x84baytıyla XOR'lanmıştır. Bu bir şifreleme değildir — belgeler açıkça hiçbir güvenlik sağlamadığını, yalnızca kazara spoiler'lara karşı bir koruma olduğunu söyler — ama onu bir metin düzenleyicide öylece de açamazsınız. XOR'u geri almanız, içindeki Shift-JIS metnini düzenlemeniz ve çıkışta XOR'u yeniden uygulamanız gerekir. (Oyunlar bunun yerine düz metin0.txt/.ubetikleri ya da.nsa/.sararşivlerinin içinde betikler de dağıtabilir.) - Görsel sanata işlenmiş metin. Başlık ekranları, menüler ve düğmeler çoğu zaman önceden işlenmiş bit eşlemlerdir — NScripter bazı görsellerin BMP olmasını bile şart koşar — dolayısıyla üzerlerindeki Japonca piksellerdir, dize değil. Bir dize çıkarıcı onlara dokunamaz.
- İnce olanı: Latin harfiyle başlayan satırlar komut olarak yeniden ayrıştırılır. NScripter'ın ayrıştırıcısı her satıra komut modunda başlar. Tarihsel olarak bu güvenliydi, çünkü motor yalnızca çift baytlı Japoncayı kabul ediyordu, dolayısıyla görüntülenen her satır kesinlikle metindi. Tek baytlı İngilizceyi soktuğunuz an, Latin harfiyle başlayan bir satır tıpatıp bir betik komutuna benzer ve motor onu çalıştırmaya kalkar — oyunu bozar. Topluluğun çözümü, satırın geri kalanı için metin modunu zorlayan ayrılmış bir metin işaretidir (eski ONScripter'da ters tırnak `
`; Ponscripter sonradan^` işaretine geçti). Japoncayı İngilizceyle saf bir bul-değiştir yapmak, motorun komut olarak yanlış okuduğu satırlar üretir.
İşte bu son tuzak, erken hayran projelerinin (Gin'iro, Mizuiro) neden çift baytlı Latin karakterlere başvurduğunun — sade NScripter tek baytlı girişi hiç kabul etmiyordu — ve motoru anlamayan genel bir çevirmenin betiği neden düpedüz kullanılmaz hale getirdiğinin tam nedenidir.
RuneTranslate şimdi ne yapıyor
RuneTranslate, NScripter / ONScripter'ı birinci sınıf bir motor olarak ele alır ve sorunun her iki yarısını da halleder:
- Betik metni. Oyunun betiğini okur — serbest bir düz metin dosyası (
0.txtve benzerleri) ya da XOR0x84ile karartılmış birnscript.dat— Shift-JIS / CP932 diyaloğunu çözer, çevrilebilir her satırı düzenleyicide listeler ve dışa aktarımda betiği motorun beklediği biçimde geri yazar; orijinal.datkullandıysa XOR0x84karartmasını yeniden uygular. Ayrıca tek baytlı metin işaretini otomatik olarak uygular, böylece çevrilmiş İngilizceniz komut olarak yanlış okunmaz. (Oyun kökünde serbest bir kopyası olmadan yalnızca bir.nsa/.sararşivinin içinde bulunan bir betik henüz okunmuyor — aşağıdaki kısıtlamalara bakın.) - Görsele işlenmiş metin. Başlık ekranlarındaki, menülerdeki ve düğmelerdeki Japonca — piksel, dize değil — RuneTranslate'in görsel metin çevirisi tarafından ele alınır: kelimeleri kutulayın, tanıtın, kendi sağlayıcınızla çevirin ve sonucu yeniden işleyin ki oyun onun yerine sizin çevrilmiş görselinizi yüklesin.
Japonca → İngilizce en uygun senaryodur — bu motorun tüm hayran çevirisi tarihi bunun etrafında dönmüştür ve eski Shift-JIS betiklerinde Latin olmayan bir hedef dil, motorun yazı tiplerinin işleyebildiğiyle sınırlıdır — ama 30'dan fazla dilden herhangi birini hedefleyebilirsiniz.
Neye ihtiyacınız var
- Windows için RuneTranslate — ücretsiz, her motor ve sağlayıcı açık.
- Bir NScripter veya ONScripter oyun klasörü. Bu, oyunun
.exedosyasını (ya da bir ONScripter ikili dosyasını) ve betiği ile varlıklarını içeren dizindir — tipik olaraknscript.dat, serbest bir0.txtve bir veya daha fazla.nsa/.sararşivi. - Bir hedef dil — İngilizce, İspanyolca, Fransızca, Almanca, Portekizce, Rusça, Çince, İtalyanca, Türkçe, Vietnamca ve 20'den fazlası daha.
- Bir çeviri sağlayıcısı. Ücretsiz Google Translate kutudan çıkar çıkmaz çalışır; DeepL'in ücretsiz bir katmanı vardır; OpenAI, Anthropic, yerel bir model (Ollama / LM Studio) ve OpenAI uyumlu herhangi bir API kendi anahtarınızı gerektirir. Bu oyunlar diyalog ağırlıklı ve tona duyarlıdır, bu yüzden bir LLM (OpenAI / Anthropic) veya DeepL genellikle en iyi sonucu verir.
Adım 1: Oyun klasörünü açın
RuneTranslate'i başlatın, Yeni proje'ye tıklayın ve onu NScripter / ONScripter oyun dizinine yönlendirin. Motor algılama otomatik çalışır — bir nscript.dat, serbest bir 0.txt betiği ya da motorun .nsa arşivlerini gördüğünde projeyi NScripter / ONScripter olarak tanır. Orijinal oyun klasörünüz asla değiştirilmez.
Adım 2: Betik nasıl okunur
RuneTranslate, oyunun kökünde serbest olarak gönderdiği betiği okur ve sizin için çözer:
- Karartılmış `nscript.dat` —
0x84'e karşı XOR'u geri alınır ve Shift-JIS olarak okunur, böylece ayrı birnsdecadımını asla çalıştırmazsınız. - Serbest düz metin betikleri (
0.txtve benzerleri) — doğrudan okunur. - Arşivlenmiş görseller — aşağıdaki görsel metin adımı için oyunun
.nsa/.sararşivlerinden çekilir. (Betiğin kendisi yukarıdaki serbest kök dosyalarından okunur; yalnızca bir arşivin içine paketlenmiş bir betik henüz okunmaz.)
Diyalog ve görüntülenen metin, dosyaya göre gruplanmış biçimde düzenleyicide listelenir. Motor işaretlemesi ve komut belirteçleri, herhangi bir şey sağlayıcıya ulaşmadan önce sayısal yer tutucuların arkasına maskelenir, sonra çıkışta geri yüklenir — ve tek baytlı metin işareti gereken yerde uygulanır, böylece motor çevrilmiş İngilizce satırınızı bir komutla karıştırmaz.
Adım 3: Çevirin
Bir sağlayıcı seçin ve çalıştırın. Bir görsel roman için, karakter sesi ve tonu için LLM (OpenAI / Anthropic) en iyisidir, DeepL anlatım için hızlı ve temizdir ve ücretsiz Google Translate kısa menü dizeleri için gayet iyidir. Adların tüm oyun boyunca birebir aynı görünmesi için kadronuzu ve tekrar eden terimleri önceden sözlüğe geçirin — Sözlük 101'e bakın. İşiniz bittiğinde, yapay zeka rötuşçusuyla yapılan isteğe bağlı bir geçiş, her satırı bağlam içinde yeniden okur ve makine çevirisinin geride bırakmaya eğilimli olduğu katı, birebir ifadeleri toparlar.
Adım 4: Görsellerdeki metni çevirin
NScripter arayüzünün pek çoğu önceden işlenmiş görsel olduğundan, bu adım burada çoğu motordakinden daha önemlidir. Projede bir başlık veya menü görseli açın, her Japonca parçanın etrafına bir kutu çizin, tanıtın, diyalogda kullandığınız aynı sağlayıcıyla çevirin ve dışa aktarımda RuneTranslate çeviriyi görsele geri işler ve dışa aktarılan kopyaya serbest olarak yazar; böylece motor, arşivlenmiş orijinalin üzerine sizin çevrilmiş görselinizi yükler. (Orijinal oyun klasörünüz dokunulmadan kalır; SPB ile sıkıştırılmış görseller ve birkaç sıra dışı görsel varyantı hâlâ sağlamlaştırılıyor — tuhaf görünen her şeyi bildirin.) Tam anlatım: görsel metin çevirisi.
Adım 5: Çalışmaya hazır bir kopya dışa aktarın
Dışa aktar'a tıklayın. RuneTranslate oyunun çevrilmiş bir kopyasını yazar — betik Shift-JIS / CP932'ye yeniden kodlanır ve orijinal .dat kullandıysa XOR 0x84 ile yeniden karartılır, motorun herhangi bir arşivlenmiş kopyanın üzerine yüklediği serbest bir betik olarak yazılır, ayrıca yanına serbest olarak yazılan çevrilmiş görseller de eklenir. Oyunu çalıştırın; ister orijinal NScripter çalışma zamanında ister ONScripter / ONScripter-EN üzerinde başlatın, hedef dilinizde oynanır.
Bilinen kısıtlamalar
- XOR-0x84 karartması destekleniyor, ama gerçek, özel bir şifrelemeyle (standart karartma yerine) korunan bir oyun açılmayabilir.
- Oyun kökünde serbest bir
nscript.dat/0.txtolmadan yalnızca bir.nsa/.sararşivinin içine paketlenmiş bir betik henüz çıkarılmıyor — çoğu oyun betiği serbest gönderir, ama bir kısmı göndermez. - Görsel metin çevirisi, menülere, başlıklara ve düğmelere boyanmış Japoncaya ulaşır, ama SPB ile sıkıştırılmış görseller ve fazlaca stilize edilmiş logo görselleri hâlâ elle rötuş isteyebilir.
- Kesin motor sürüme göre değişebilir — genellikle NScripter'la ilişkilendirilen bazı başlıklar (örneğin When They Cry soyağacının parçaları) NScripter üzerine kurulmuştur ve yaygın olarak ONScripter üzerinden çalıştırılır, ama belirli Steam / konsol yeniden sürümleri kimi zaman yeniden tasarlanmıştır. Her zaman kendi kopyanızda doğrulayın.
Tertemiz yeni — neyin bozulduğunu bize söyleyin
Bu motor taze bir ekleme, savaşta sınanmış değil. NScripter / ONScripter'ın onlarca yıllık varyantı, fork'u ve stüdyoya özgü tuhaflığı var ve hepsini görmedik. O yüzden RuneTranslate'i bir NScripter veya ONScripter oyununa yönlendirdiğinizde algılamaz, yüklenmez ya da çalışma zamanının açamayacağı bir şey dışa aktarırsa lütfen bildirin — oyunun adı ve nasıl paketlendiği (serbest 0.txt, nscript.dat, .nsa arşivleri) tam olarak onu en hızlı sağlamlaştırmamıza yarayan şeydir.
RuneTranslate'i indirin, onu okumayı çoktandır istediğiniz o klasik görsel romana yönlendirin ve deneyin. Daha modern bir görsel roman motoruna göz atmak için sırada Ren'Py anlatımını okuyun.
RuneTranslate'i denemeye hazır mısın?
Ücretsiz katman her motoru + her çeviri sağlayıcısını açar. Supporter ($3/mo) tam hızı açar.
Windows için indir