เอนจินคู่มือคำถามที่พบบ่อยPatreonDiscordดาวน์โหลด
เข้าสู่ระบบ
RuneTranslate · แปลเกมญี่ปุ่นครบวงจร
เอนจินคู่มือเปรียบเทียบข้อความในภาพตัวแก้ไขเซฟโหมดโกงคำถามที่พบบ่อยดาวน์โหลดการเปลี่ยนแปลงTrustpilotPatreonDiscordYouTubeความเป็นส่วนตัวข้อกำหนดติดต่อ
โพสต์ทั้งหมด
nscripter · onscripter · engine

วิธีแปลวิชวลโนเวล NScripter / ONScripter

16 มิ.ย. 2569·6 นาทีในการอ่าน

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 ที่ถูกทำให้อ่านยากด้วย XOR 0x84 — ถอดบทสนทนา 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 ต่อ

อ่านที่เกี่ยวข้อง
01

วิธีแปลเกม RPG Maker

rpg-makerhow-toenginecontrol-codes18 ส.ค. 2569 · 10 นาที
อ่าน →
02

วิธีแปลเกม Unreal Engine

unrealguidesenginelocalization18 ส.ค. 2569 · 9 นาที
อ่าน →
03

วิธีแปลไฟล์ .po และ .mo ของเกม (gettext)

gettextpomoenginetutorial4 ส.ค. 2569 · 7 นาที
อ่าน →

พร้อมลอง RuneTranslate ไหม

ระดับฟรีปลดล็อกทุกเอนจิน + ทุกผู้ให้บริการแปล Supporter ($3/mo) ปลดล็อกความเร็วเต็ม

ดาวน์โหลดสำหรับ Windows