วิธีแปลวิชวลโนเวล NScripter / ONScripter
RuneTranslate แปลวิชวลโนเวล NScripter และ ONScripter เป็นภาษาอังกฤษและอีก 30+ ภาษา — ถอดรหัส nscript.dat ที่ถูก XOR ทำให้อ่านยาก จัดการ Shift-JIS / CP932 และส่งออกสำเนาที่พร้อมรัน ใหม่; รายงานสิ่งใดที่โหลดไม่ได้
RuneTranslate อ่านหนึ่งในตระกูลเอนจินที่เก่าแก่ที่สุดในวิชวลโนเวลญี่ปุ่น: NScripter และแฝดโอเพนซอร์สของมัน ONScripter VN โดจินคลาสสิกเหล่านี้ — ที่ส่งมาเป็นโฟลเดอร์ของไฟล์ .dat ลึกลับและสคริปต์ Shift-JIS — เป็นเกมที่เจ็บปวดที่สุดในการงัดเปิดด้วยมือมาโดยตลอด และเป็นเกมที่เครื่องมือแปลด้วยเครื่องมักข้ามไป RuneTranslate ตรวจจับเอนจิน อ่านข้อความสคริปต์ และยังแปลภาษาญี่ปุ่นที่วาดลงในหน้าจอไตเติลและปุ่มเมนูได้ด้วย
การรองรับเอนจินนี้ เพิ่งเพิ่มเข้ามาและยังไม่ได้รับการตรวจสอบในเกมจริง ดังนั้นหากคุณชี้ RuneTranslate ไปที่เกม NScripter / ONScripter แล้วมันตรวจจับหรือโหลดไม่ได้ โปรดบอกเรา รายละเอียดเพิ่มเติมท้ายบทความ
NScripter และ ONScripter จริง ๆ แล้วคืออะไร
NScripter เป็นเอนจินสคริปต์ VN บน Windows แบบซอร์สปิดโดย Naoki Takahashi ใช้กันอย่างแพร่หลายในญี่ปุ่นตั้งแต่ต้นยุค 2000 สัญญาอนุญาตแบบปลอดค่าลิขสิทธิ์สำหรับการใช้ส่วนตัวและเชิงพาณิชย์ ตัวแพ็กอาร์ไคฟ์ในตัว และภาษาสคริปต์ระดับต่ำที่ขึ้นชื่อ ทำให้มันเป็นของหลักในวงการโดจิน; สตูดิโออย่าง Nekonekosoft พึ่งพามันแทบทั้งหมด
ONScripter เป็นการนำรันไทม์ NScripter มาสร้างใหม่แบบแยกต่างหากและโอเพนซอร์ส (GPL) โดยโปรแกรมเมอร์ที่รู้จักในชื่อ Ogapee สร้างบน SDL และเข้ากันได้แบบหย่อนลงใช้ได้เลย มันรันในที่ที่ NScripter รันไม่ได้ — Linux, macOS, Android และอื่น ๆ — ดังนั้นชุมชนแปลภาษาจึงรับมันมาใช้ (และฟอร์กอย่าง ONScripter-EN และ Ponscripter สำหรับฟอนต์ Unicode แบบสัดส่วน) เป็นรันไทม์โดยพฤตินัยสำหรับส่งบิลด์ที่แปลแล้ว
สรุปสั้น ๆ: NScripter คือเอนจิน Windows ซอร์สปิดดั้งเดิมที่ใช้เขียนเกม; ONScripter คือรันไทม์ข้ามแพลตฟอร์มแบบเปิดที่นักแปลแฟนรันบิลด์ของตน RuneTranslate ทำงานจากสคริปต์และแอสเซ็ตของเกม มันจึงครอบคลุมเกมทั้งสองฝ่าย
ทำไมเกมเหล่านี้ถึงแปลยากนัก
เมื่อเทียบกับเอนจินยุคใหม่อย่าง Ren’Py หรือ Kirikiri, NScripter / ONScripter เป็นทุ่นระเบิดของความแปลกประหลาดในยุคของเอนจิน สี่อย่างโดยเฉพาะทำให้มันเป็นกำแพงทั้งสำหรับนักแปลด้วยมือและเครื่องมือ MT แบบง่าย ๆ:
- การเข้ารหัส Shift-JIS / CP932 สคริปต์เก่าเป็น Shift-JIS (CP932) ถอดผิดแล้วได้ mojibake; เข้ารหัสกลับอย่างไม่ระวังแล้วรันไทม์เก่าบางตัวทำหน่วยความจำเสียหายและแครช สคริปต์เนทีฟยุคใหม่อาจเป็น UTF-8 แต่แคตตาล็อกเก่าเป็น CP932
- `nscript.dat` ที่ถูก XOR-`0x84` ทำให้อ่านยาก สคริปต์ที่คอมไพล์แล้วมักอยู่ใน
nscript.dat(หรือpscript.datใน Ponscripter) โดยทุกไบต์ถูก XOR กับค่าคงที่0x84มันไม่ใช่การเข้ารหัส แค่การป้องกันการสปอยล์โดยบังเอิญ แต่คุณก็ยังเปิดมันในโปรแกรมแก้ไขข้อความไม่ได้ เกมที่เป็นข้อความธรรมดาส่งสคริปต์เป็น0.utf/0.utf.txt(UTF-8) หรือ0.txt/00.txt(Shift-JIS) แทน - ข้อความที่อบไว้ในภาพศิลป์ หน้าจอไตเติล เมนู และปุ่ม มักเป็นบิตแมปที่เรนเดอร์ไว้ล่วงหน้า ดังนั้นภาษาญี่ปุ่นบนนั้นจึงเป็นพิกเซล ไม่ใช่สตริง — ตัวดึงสตริงแตะมันไม่ได้
- อันที่ละเอียดอ่อน: บรรทัดที่ขึ้นต้นด้วยอักษรละตินถูกแยกวิเคราะห์ใหม่เป็นคำสั่ง ตัวแยกวิเคราะห์ของ NScripter เริ่มทุกบรรทัดในโหมด คำสั่ง นั่นปลอดภัยเมื่อเอนจินรับแต่ภาษาญี่ปุ่นสองไบต์ แต่บรรทัดที่ขึ้นต้นด้วยอักษรละตินหนึ่งไบต์ดูเหมือนคำสั่งเป๊ะ และเอนจินพยายาม เรียกใช้ มัน วิธีแก้ของชุมชนคือเครื่องหมายข้อความสงวน (แบ็กทิก `
`ใน ONScripter เก่า;^` ใน Ponscripter) ที่บังคับโหมดข้อความ — ซึ่งการค้นหาและแทนที่แบบง่าย ๆ จะไม่เพิ่มให้
RuneTranslate ทำอะไรตอนนี้
RuneTranslate ปฏิบัติต่อ NScripter / ONScripter เป็นเอนจินชั้นหนึ่งและจัดการปัญหาทั้งสองด้าน:
- ข้อความสคริปต์ มันอ่านสคริปต์ของเกม — ไฟล์ข้อความธรรมดาแบบหลวมหรือ
nscript.datที่ถูกทำให้อ่านยากด้วย XOR0x84— ถอดบทสนทนา Shift-JIS / CP932 แสดงทุกบรรทัดที่แปลได้ในตัวแก้ไข และตอนส่งออกเขียนสคริปต์กลับในรูปแบบที่เอนจินคาดหวัง โดยใส่ XOR กลับเมื่อต้นฉบับใช้มัน มันยังแทรกเครื่องหมายข้อความหนึ่งไบต์โดยอัตโนมัติ เพื่อไม่ให้ภาษาอังกฤษที่แปลแล้วถูกอ่านผิดเป็นคำสั่ง (สคริปต์ที่อยู่ เฉพาะ ภายในอาร์ไคฟ์.nsa/.sarโดยไม่มีสำเนาแบบหลวม ยังไม่ถูกอ่าน — ดูข้อจำกัด) - ข้อความที่อบไว้ในภาพ ภาษาญี่ปุ่นบนหน้าจอไตเติลและเมนูถูกจัดการโดย การแปลข้อความในภาพ: ล้อมกรอบคำ รู้จำมัน แปลด้วยผู้ให้บริการของคุณเอง แล้วอบผลลัพธ์กลับเข้าไปเพื่อให้เกมโหลดงานศิลป์ที่แปลแล้วของคุณ
ญี่ปุ่น → อังกฤษ คือจุดที่ดีที่สุด — เป็นสิ่งที่ประวัติศาสตร์การแปลแฟนของเอนจินนี้เป็น — แต่คุณเจาะเป้าได้ 30+ ภาษา บนสคริปต์ Shift-JIS เก่า ภาษาปลายทางที่ไม่ใช่ละตินถูกจำกัดโดยฟอนต์ที่เอนจินเรนเดอร์ได้
สิ่งที่คุณต้องมี
- RuneTranslate สำหรับ Windows — ฟรี ทุกเอนจินและผู้ให้บริการถูกปลดล็อก
- โฟลเดอร์เกม NScripter หรือ ONScripter — ไดเรกทอรีที่มีไฟล์
.exeของเกม (หรือไบนารี ONScripter) สคริปต์ของมัน (nscript.datหรือ0.txt/0.utfแบบหลวม) และอาร์ไคฟ์.nsa/.sarใด ๆ - ภาษาปลายทาง — อังกฤษ สเปน ฝรั่งเศส เยอรมัน จีน และอีก 30+ ภาษา
- ผู้ให้บริการหนึ่งราย Google Translate ฟรีใช้ได้เลย; DeepL มีระดับฟรี; OpenAI, Anthropic, โมเดลบนเครื่อง และ API ที่เข้ากันได้กับ OpenAI ต้องใช้คีย์ของคุณเอง เกมเหล่านี้มีบทสนทนาเยอะ ดังนั้น LLM หรือ DeepL จึงอ่านได้ดีที่สุด
ขั้นที่ 1: เปิดโฟลเดอร์เกม
เปิด RuneTranslate คลิก New project แล้วชี้ไปที่ไดเรกทอรีเกม การตรวจจับทำงานอัตโนมัติ: nscript.dat / pscript.dat หรือ 0.utf / 0.utf.txt ที่เป็นข้อความธรรมดา ก็เพียงพอในตัวมันเอง ส่วน 0.txt ที่เป็น Shift-JIS ล้วน ๆ หรืออาร์ไคฟ์ .nsa เดี่ยว ๆ จะถูกจำแนกก็ต่อเมื่อมีสัญญาณสนับสนุนควบคู่ — ไบนารี ONScripter ฟอนต์เกม หรืออาร์ไคฟ์ที่มาด้วยกัน — เพื่อหลีกเลี่ยงการจับคู่ผิด โฟลเดอร์เกมต้นฉบับของคุณจะไม่ถูกแก้ไขเลย
ขั้นที่ 2: สคริปต์ถูกอ่านอย่างไร
RuneTranslate อ่านสคริปต์ที่เกมส่งมาแบบหลวมที่รากของมันและถอดรหัสให้คุณ:
- `nscript.dat` ที่ถูกทำให้อ่านยาก — un-XOR กับ
0x84และอ่านเป็น Shift-JIS คุณจึงข้ามขั้นตอนnsdecแยกต่างหาก - สคริปต์ข้อความธรรมดา —
0.utf/0.utf.txt(UTF-8) หรือ0.txt/00.txt(Shift-JIS) อ่านโดยตรง - ภาพที่แพ็กในอาร์ไคฟ์ — ดึงจากอาร์ไคฟ์
.nsa/.sarของเกมสำหรับขั้นตอนข้อความในภาพ (ตัวสคริปต์เองถูกอ่านจากไฟล์รากแบบหลวม; สคริปต์ที่แพ็กเฉพาะภายในอาร์ไคฟ์ยังไม่ถูกอ่าน)
บทสนทนาและข้อความที่แสดงถูกแสดงในตัวแก้ไข จัดกลุ่มตามไฟล์ มาร์กอัปเอนจินและโทเคนคำสั่งถูกปิดบังไว้หลังตัวยึดตำแหน่งตัวเลขก่อนไปถึงผู้ให้บริการ แล้วคืนกลับตอนออก — และเครื่องหมายข้อความหนึ่งไบต์ถูกใส่ตรงที่ต้องการ เอนจินจึงไม่เข้าใจผิดว่าบรรทัดที่แปลแล้วเป็นคำสั่ง
ขั้นที่ 3: แปล
เลือกผู้ให้บริการแล้วรัน LLM (OpenAI / Anthropic) ดีที่สุดสำหรับเสียงตัวละคร DeepL เร็วและสะอาดสำหรับการบรรยาย และ Google Translate ฟรี เหมาะกับสตริงเมนูสั้น ๆ ใส่นักแสดงของคุณลงอภิธานศัพท์ก่อนเพื่อให้ชื่อแสดงผลเหมือนกัน ดู Glossary 101 เมื่อเสร็จแล้ว รอบเสริมแบบไม่บังคับกับ ตัวขัดเกลาด้วย AI จะอ่านทวนแต่ละบรรทัดในบริบทและกระชับการใช้คำที่แข็งและตรงตัวซึ่ง MT มักทิ้งไว้
ขั้นที่ 4: แปลข้อความในภาพ
เพราะ UI ของ NScripter จำนวนมากเป็นงานศิลป์ที่เรนเดอร์ไว้ล่วงหน้า ขั้นตอนนี้จึงสำคัญกว่าบนเอนจินส่วนใหญ่ เปิดภาพไตเติลหรือเมนู ล้อมกรอบภาษาญี่ปุ่นแต่ละชิ้น รู้จำมัน แปลด้วยผู้ให้บริการเดียวกัน และตอนส่งออก RuneTranslate อบคำแปลกลับเข้าไปและเขียนมันแบบหลวมลงในสำเนาที่ส่งออก เอนจินจึงโหลดงานศิลป์ที่แปลแล้วของคุณทับต้นฉบับที่แพ็กในอาร์ไคฟ์ (โฟลเดอร์ต้นฉบับของคุณยังไม่ถูกแตะต้อง; งานศิลป์ที่บีบอัดแบบ SPB และรุ่นภาพแปลก ๆ ไม่กี่แบบยังอยู่ระหว่างการทำให้แข็งแกร่ง) คู่มือฉบับเต็ม: การแปลข้อความในภาพ
ขั้นที่ 5: ส่งออกสำเนาที่พร้อมรัน
คลิก Export RuneTranslate เขียนสำเนาที่แปลแล้วของเกม — สคริปต์ถูกเข้ารหัสกลับเป็น Shift-JIS / CP932 และทำให้อ่านยากอีกครั้งด้วย XOR 0x84 หากต้นฉบับใช้มัน เขียนเป็นสคริปต์หลวมที่เอนจินโหลดทับสำเนาที่แพ็กในอาร์ไคฟ์ บวกภาพที่แปลแล้วใด ๆ ข้าง ๆ รันมันแล้วมันก็เล่นในภาษาปลายทางของคุณ ไม่ว่าบนรันไทม์ NScripter ดั้งเดิมหรือบน ONScripter / ONScripter-EN
ข้อจำกัดที่ทราบ
- การทำให้อ่านยากด้วย XOR-
0x84ถูกจัดการ แต่เกมที่มีการเข้ารหัสกำหนดเองจริง ๆ อาจเปิดไม่ได้ - สคริปต์ที่แพ็ก เฉพาะ ภายในอาร์ไคฟ์
.nsa/.sarโดยไม่มีnscript.dat/0.txtแบบหลวมที่ราก ยังไม่ถูกดึงออก — เกมส่วนใหญ่ส่งมันแบบหลวม แต่ไม่กี่เกมไม่ - การแปลข้อความในภาพเข้าถึงเมนู ไตเติล และปุ่มที่วาดไว้ แต่งานศิลป์ที่บีบอัดแบบ SPB และโลโก้ที่มีสไตล์จัดอาจต้องการการตกแต่งด้วยมือ
- เอนจินที่แน่นอนอาจต่างกันไปในแต่ละการวางจำหน่าย — บางเกมที่เกี่ยวข้องกับ NScripter ถูกออกแบบใหม่สำหรับการวางจำหน่ายซ้ำบน Steam / คอนโซลโดยเฉพาะ ตรวจสอบบนสำเนาของคุณ
มันใหม่เอี่ยม — บอกเราว่าอะไรพัง
เอนจินนี้เป็น การเพิ่มใหม่ ยังไม่ผ่านการทดสอบสมรภูมิ NScripter / ONScripter มีรุ่น ฟอร์ก และความแปลกประหลาดของแต่ละสตูดิโอมาหลายทศวรรษที่เรายังไม่ได้เห็นทั้งหมด ดังนั้นหากคุณชี้ RuneTranslate ไปที่มันแล้วมันตรวจจับไม่ได้ โหลดไม่ได้ หรือส่งออกสิ่งที่รันไทม์เปิดไม่ได้ โปรดรายงาน — ชื่อเกมและวิธีแพ็ก (0.txt แบบหลวม, nscript.dat, อาร์ไคฟ์ .nsa) ช่วยให้เราทำให้มันแข็งแกร่งได้เร็วที่สุด
ดาวน์โหลด RuneTranslate ชี้มันไปที่ VN คลาสสิกที่คุณตั้งใจจะอ่าน แล้วลองดู สำหรับเอนจิน VN ที่ทันสมัยกว่า อ่าน คู่มือ Ren’Py ต่อ
พร้อมลอง RuneTranslate ไหม
ระดับฟรีปลดล็อกทุกเอนจิน + ทุกผู้ให้บริการแปล Supporter ($3/mo) ปลดล็อกความเร็วเต็ม
ดาวน์โหลดสำหรับ Windows