เกมที่แปลแล้วเปิดไม่ขึ้น? มาหาบรรทัดที่พังกัน
เกมที่แปลแล้วเปิดขึ้นมาแล้วปิดทันที หรือค้างอยู่ที่หน้าโหลดไม่ไปไหน หนึ่งในบรรทัดที่คุณแปลไม่ใช่ข้อความตั้งแต่แรก มันคือไอดี พาธ หรือแฟล็กที่เกมเอาไปเทียบ พิสูจน์ก่อนว่าเป็นเพราะการแปลจริง แล้วค่อยแบ่งครึ่ง ส่งออกราวสิบสามครั้งก็ย่อห้าพันบรรทัดเหลือบรรทัดเดียว
หน้าต่างเปิดขึ้น แล้วก็ปิดลง เกมที่เมื่อวานยังเล่นได้ คุณแปลมันไปหนึ่งคืน ตอนนี้มันตายแล้ว
ที่ไหนสักแห่งในบรรทัดเหล่านั้นมีอยู่บรรทัดหนึ่งที่ไม่เคยเป็นข้อความเลย ชื่อฉาก พาธไฟล์ หรือแฟล็กที่เกมเอาไปเทียบ เอนจินไปชนเข้ากับมันแล้วยอมแพ้ตั้งแต่ยังไม่ทันวาดอะไร
คุณไม่ต้องนั่งอ่านห้าพันบรรทัดเพื่อหามัน คุณแค่ถามคำถามใช่-ไม่ใช่คำถามเดียวซ้ำ ๆ ราวสิบสามครั้ง
ตอบสั้น ๆ พิสูจน์ก่อนว่าสาเหตุคือการแปลจริง แล้วแบ่งครึ่ง แปลครึ่งหนึ่งของบรรทัดที่สงสัย ส่งออก แล้วเปิดเกม ครึ่งที่พังคือครึ่งที่มีบรรทัดนั้นอยู่ ทำซ้ำกับครึ่งนั้นจนเหลือบรรทัดเดียว
ก่อนจะออกตามหา: มันเป็นเพราะการแปลจริงหรือเปล่า
- เปิดเกมต้นฉบับ สำเนาที่ยังไม่ถูกแตะ ไม่ใช่ตัวที่คุณส่งออก ถ้าตัวนั้นก็เปิดไม่ได้ ปัญหาอยู่ที่เครื่อง โฟลเดอร์ หรือตัวเกมเอง
- แปลบรรทัดสั้น ๆ ที่ไม่มีพิษภัยเพียงบรรทัดเดียว ส่งออก แล้วเปิด คำในเมนูสักคำที่คุณเห็นบนจอก็พอ
- แล้วค่อยเริ่มตามหาบรรทัดนั้น
ที่ขั้นที่สองบอกให้แปล หนึ่งบรรทัด ไม่ใช่ ไม่แปลอะไรเลย มีเหตุผล อะแดปเตอร์หลายตัวออกจากงานตั้งแต่ต้นเมื่อไม่มีอะไรให้เขียน การส่งออกเปล่า ๆ จึงทดสอบแค่การคัดลอกไฟล์ ไม่ได้ทดสอบเส้นทางการเขียนจริง และผ่านได้แม้เส้นทางนั้นจะพังอยู่
ถ้าบิลด์บรรทัดเดียวก็ยังพัง แปลว่าไม่ใช่ความผิดของบรรทัดใดบรรทัดหนึ่ง และการแบ่งครึ่งจะไม่เจออะไรเลย ลองส่งออกใหม่ลงโฟลเดอร์ว่างเปล่า ตรวจว่าคุณกำลังเปิดตัวที่ส่งออกไม่ใช่ต้นฉบับ แล้วอ่านคำเตือนตอนส่งออก ถ้ายังพังอยู่ ให้แจ้งเป็นปัญหาของขั้นตอนการส่งมอบ
การตรวจก่อนนี้ใช้เวลาเปิดเกมสองครั้งกับส่งออกหนึ่งครั้ง โปรเจกต์ RPG Maker เล็ก ๆ ก็ไม่กี่นาที เกม Unity ใหญ่ ๆ ก็นานกว่านั้น แลกกับการไม่ต้องเสียทั้งคืนตามหาบรรทัดที่ไม่มีอยู่จริง
สองอาการที่หน้าตาคล้ายกันแต่คนละเรื่อง เกมเล่นได้แต่ตัวอักษรเป็นสี่เหลี่ยม เครื่องหมายคำถาม หรือละตินเพี้ยน ๆ นั่นคือปัญหาฟอนต์หรือการเข้ารหัส ส่วนการแครชทันทีหลังติดตั้งปลั๊กอินหรือโอเวอร์เลย์ คือปัญหาของเครื่องมือตัวนั้น ไม่ใช่บรรทัดของคุณ
แบ่งครึ่งเพื่อหาบรรทัดนั้น
โปรเจกต์ส่วนใหญ่มีหลายไฟล์ และสิ่งที่แบ่งครึ่งง่ายที่สุดคือรายชื่อไฟล์
- รีเซ็ตคำแปลทั้งหมด จากแถบเครื่องมือ
- เปิด เลือกไฟล์ที่จะแปล หน้าต่างนั้นบอกไว้ตรง ๆ ว่า «เลือกไฟล์ที่ต้องการแปล ไฟล์ที่ไม่ได้ติ๊กจะถูกปล่อยไว้อย่างเดิม» เอาติ๊กออกครึ่งหนึ่ง แล้วแปลส่วนที่เหลือ
- ส่งออกลงโฟลเดอร์ว่างใหม่ แล้วเปิดเกม
- ถ้าเล่นได้ บรรทัดนั้นอยู่ในครึ่งที่คุณไม่ได้แตะ ถ้าเล่นไม่ได้ มันอยู่ในครึ่งที่คุณเพิ่งแปล ไม่ว่าทางไหน รายชื่อก็เหลือครึ่งเดียว และคุณลืมอีกครึ่งไปได้เลย
- รีเซ็ตคำแปลทั้งหมด อีกครั้ง แบ่งครึ่งรายชื่อที่เหลือ ส่งออก แล้วเปิด
- ทำซ้ำจนเหลือไฟล์เดียว แล้วแบ่งครึ่งภายในไฟล์นั้นต่อจนเหลือบรรทัดเดียว
การแบ่งด้วยไฟล์หยาบกว่าการแบ่งด้วยบรรทัด จำนวนรอบจึงขึ้นกับจำนวนไฟล์ สี่สิบไฟล์ก็ราวหกรอบกว่าจะได้ไฟล์ แล้วค่อยเริ่มใหม่ภายในไฟล์นั้น
โปรเจกต์ที่มีไฟล์เดียว เช่นสคริปต์ NScripter หรือเกม Kirikiri หรือ Wolf ที่มีซีนาริโอเดียว จะไม่มีรายชื่อไฟล์ให้แบ่ง ให้ลากกรอบคลุมบรรทัดแทน ช่องติ๊กและแถบคำสั่งกลุ่มจะโผล่มาเอง แล้ว แปลรายการที่เลือกใหม่ จะจัดการที่เหลือให้ ถ้าจะกวาดกว้างกว่านั้น ใช้ตัวกรองและการค้นหาย่อบรรทัดลงก่อน แล้วค่อย เลือกทั้งหมดที่มองเห็น ระวังตรงนี้ให้ดี เพราะมันหยิบตามที่ตัวกรองแสดงอยู่ ตัวกรองที่ลืมล้างจึงปนเปื้อนทุกรอบถัดไปอย่างเงียบ ๆ จดไว้ด้วยว่าคุณใช้ตัวกรองอะไร
ตัวอย่างเต็ม ๆ จากชุดร้อยบรรทัดที่พัง:
- รอบที่ 1 — สงสัย 100 บรรทัด แปล 50 บรรทัดแรก: เล่นได้ แปลว่ามันอยู่ในอีก 50 บรรทัด
- รอบที่ 2 — สงสัย 50 บรรทัด แปล 25 บรรทัดแรก: พัง แปลว่ามันอยู่ใน 25 บรรทัดนี้
- รอบที่ 3 — สงสัย 25 บรรทัด แปล 13 บรรทัดแรก: เล่นได้ แปลว่ามันอยู่ใน 12 บรรทัดที่เหลือ
- รอบที่ 4 — สงสัย 12 บรรทัด แปล 6 บรรทัดแรก: พัง แปลว่ามันอยู่ใน 6 บรรทัดนี้
- รอบที่ 5 — สงสัย 6 บรรทัด แปล 3 บรรทัดแรก: พัง แปลว่ามันอยู่ใน 3 บรรทัดนี้
- รอบที่ 6 — สงสัย 3 บรรทัด แปล 2 บรรทัดแรก: เล่นได้ เหลือบรรทัดเดียว
เริ่มจากร้อยบรรทัด แย่ที่สุดคือส่งออกเจ็ดครั้ง เริ่มจากห้าพันบรรทัด แย่ที่สุดราวสิบสามครั้ง
หนึ่งรอบใช้เวลาเท่าไร
ส่งออกหนึ่งครั้ง เปิดหนึ่งครั้ง บวกเวลาที่เกมต้องใช้กว่าจะถึงบทสนทนาแรก โปรเจกต์ RPG Maker เล็ก ๆ ก็สองถึงสามนาที เกม Unity ใหญ่ที่การส่งออกต้องคัดลอกทั้งเกมและหน้าไตเติลก็อืดอาด ก็ใกล้สิบนาที
สิบสามรอบจึงกินเวลาเกือบทั้งค่ำ ถึงอย่างนั้นมันก็ยังถูกกว่า เพราะทางเลือกอีกทางคืออ่านห้าพันบรรทัดด้วยตัวเองแล้วต้องเดาถูกตั้งแต่ครั้งแรก
มีสองอย่างที่มักพลาดเวลาทำมือ ส่งออกลงโฟลเดอร์ว่างใหม่ทุกรอบ เพราะบางเอนจินซ้อนแพตช์ทับกัน รอบที่สามที่ทับรอบหนึ่งและสองก็เท่ากับคุณทดสอบสามรอบพร้อมกัน และ การรีเซ็ตต้องเป็นการรีเซ็ตจริง ๆ ใช้ รีเซ็ตคำแปลทั้งหมด อย่าย้อนเอง เพราะมันคืนข้อความต้นฉบับที่เก็บไว้ตอนสร้างโปรเจกต์ จึงทำงานถูกต้องแม้โฟลเดอร์ต้นทางจะถูกเขียนทับไปแล้วก็ตาม
ถ้าย้อนบรรทัดนั้นแล้วยังเปิดไม่ขึ้น
แปลว่าคุณทำพังมากกว่าหนึ่งบรรทัด นี่เป็นผลที่พบบ่อยจากการกด «แปลทั้งหมด» ครั้งแรกบนเอนจินที่ไวต่อการแจงไวยากรณ์ ปล่อยบรรทัดที่เจอไว้เป็นภาษาต้นฉบับ แล้ววนขั้นตอนเดิมกับส่วนที่ยังแปลอยู่ ตัวการรายที่สองมักเป็นสตริงชนิดเดียวกับรายแรก และอยู่ในไฟล์เดียวกัน
ครั้งหน้าแปลเป็นชุด
การแบ่งเป็นชุดไม่ได้ลดจำนวนการส่งออก มันคือการส่งออกที่คุณต้องทำอยู่แล้ว แต่มันทำให้ความพังมาถึงคุณในวงแคบตั้งแต่แรก ชุดสุดท้ายคือชุดที่พัง การไล่หาจึงเริ่มที่ร้อยบรรทัด ไม่ใช่ห้าพัน เริ่มที่ 100 แล้วค่อยขยับเป็น 500 หรือทั้งไฟล์เมื่อผ่านไปหลายชุดโดยไม่มีปัญหา
เอนจินไหนพังถ้าแปลผิดบรรทัด
คนชอบพูดถึงเอนจินที่เข้มงวดกับเอนจินที่ใจดี แต่สิ่งที่ตัดสินจริง ๆ คือคำแปลของคุณไปลงเอยที่ไหน
บางเอนจินอ่านมันเป็น ข้อมูล Ren'Py ใช้ไฟล์แยกกับฮุกตอนรันไทม์ RPG Maker ใช้ JSON ที่เอสเคปแล้ว Unreal ใช้ค่าใน .locres โดยเก็บแฮชของคีย์ไว้ครบ โครงสร้างของเกมไม่เคยเห็นข้อความของคุณ ราคาของบรรทัดที่ผิดจึงเท่ากับบรรทัดที่ผิดหนึ่งบรรทัด ส่วนอีกพวกหนึ่ง แทรกมันลงในไฟล์ที่เกมต้องตีความ ไม่ว่าจะเป็นสคริปต์ มาร์กอัป หรือลำดับไบต์ ประโยคของคุณจะกลายเป็นส่วนหนึ่งของโครงสร้างไฟล์นั้น เมื่อนั้นทวิภาคตัวเดียว วงเล็บเหลี่ยมอันเดียว ไบต์ที่เกินมาหนึ่งไบต์ หรือสตริงที่เป็นคีย์ค้นหาไปด้วย ก็หยุดเกมได้
กฎมีแค่นั้น หาเอนจินของคุณ อ่านบรรทัดของมัน แล้วไปต่อ
- RPG Maker MV/MZ — ไม่มีความเสี่ยงเชิงโครงสร้าง ทั้ง JSON และ CSV ถูกเอสเคป และสิ่งที่ยื่นให้คุณก็เป็นชุดคำสั่งอีเวนต์ที่กำหนดไว้แล้ว ความเสี่ยงจริงอย่างเดียวคือปลั๊กอินที่เทียบชื่อผู้พูดแบบตรงตัวเป๊ะ ซึ่งการส่งออกก็แก้คีย์ในค่าตั้งของปลั๊กอินนั้นให้ตรงกันไปด้วย
- Ren'Py — แทบไม่มีเลย เราไม่เคยเขียนทับซอร์สโค้ดเดิม แม้สตริงที่เป็นคีย์ตรรกะก็ยังปลอดภัย
- Unreal Engine — เรายังไม่เคยเห็นความพังที่เกิดจากบรรทัดเดียว สตริงใน
.locresเป็นข้อความสำหรับแสดงผลโดยโครงสร้างอยู่แล้ว ความเสี่ยงตรงนี้คือข้อความหาย ไม่ใช่บิลด์ตาย - Unity — ร้ายแรงและเงียบ ชื่อฉาก คีย์ตัวแปร และคอลแบ็ก ถูกเก็บด้วยวิธีเดียวกับบทสนทนา เตรียมเจอโหลดไม่จบ ปุ่มกดไม่ติด และจอดำ
- Godot — ร้ายแรง พาธของโหนด StringName และการอ้าง
res://คือที่อยู่จริงที่เอนจินเดินตาม และจะถูกปฏิเสธตอนเขียนกลับ - Wolf RPG — เป็นรูปแบบที่เปราะที่สุดในที่นี้ ไบต์เดียวที่เพี้ยนทำให้สตรีมทั้งสายเลื่อน แล้วโปรเซสก็ยุติก่อนหน้าต่างจะโผล่ด้วยซ้ำ
- Kirikiri / KAG — ร้ายแรง วงเล็บเหลี่ยมคือไวยากรณ์ และชื่อสตอเรจคือชื่อไฟล์ แปลชื่อแท็ก แปลงวงเล็บ หรือแปลชื่อไฟล์ภาพ แต่ละอย่างหยุดเกมได้ทันที
- Electron VN — ร้ายแรง เพลสโฮลเดอร์ของเทมเพลตที่อยู่ในจาวาสคริปต์ที่ทำงานจริงใน
app.asarไม่ใช่คำแปลที่ไม่ดี แต่มันคือ syntax error - TyranoBuilder / TyranoScript — ตระกูลเดียวกับ Kirikiri แท็ก KAG คือมาร์กอัป การแปลแท็กจึงเท่ากับไปยุ่งกับไวยากรณ์ ส่วนการอ้างถึงตัวละครในบรรทัด เราไม่เคยเขียนทับ
- NScripter — ร้ายแรงและเป็นเอกลักษณ์
?%และ$เป็นสัญลักษณ์ตัวแปร ตัวเดียวที่หลุดผิดที่ก็เป็น syntax error - YU-RIS — ร้ายแรง เพราะสิ่งที่รูปแบบนี้เรียกว่าสตริงจำนวนมากแท้จริงแล้วคือโอเปอแรนด์ การแยกสองอย่างนี้ออกจากกันลดแถวที่ใช้งานจริงในเกมหนึ่งจาก 40,678 เหลือ 8,914 โดยไม่เสียบทสนทนาแม้บรรทัดเดียว
เอนจินอื่น ๆ มีหน้าและคำแนะนำของตัวเองอยู่ที่ เอนจิน
สามบรรทัดที่ฆ่าเกมไปแล้ว
ทุกกฎยกเว้นใน RuneTranslate แลกมาด้วยเกมที่เล่นไม่ได้อีกต่อไป สามเรื่องนี้แก้ไปแล้ว ทั้งสามกรณีบรรทัดที่เป็นเหตุดูปกติดีทุกประการ และการส่งออกก็จบด้วยเครื่องหมายถูกสีเขียว
Godot: เกมสร้างตัวละครที่ไม่มีอยู่จริงขึ้นมา บรรทัดหนึ่งเขียนว่า Warning: the door is locked ภาษาอังกฤษถูกต้องทุกอย่าง แต่ Dialogic เอสเคปทวิภาคทุกตัวในข้อความที่บันทึกไว้ เพราะทวิภาคที่ไม่ถูกเอสเคปคือสิ่งที่ใช้ตัดชื่อผู้พูดออกมา เมื่อประโยคนี้ถูกเขียนกลับตามตัว มันจึงถูกตีความใหม่ว่าเป็นตัวละครชื่อ Warning พูดว่า the door is locked แล้วแอดออนก็สร้างตัวละครนั้นขึ้นมาจริง ๆ
Kirikiri: เกมออกตามหาไฟล์ชื่อ `End` แท็กของปุ่มหนึ่งบรรจุทั้งชื่อไฟล์ภาพและป้ายปลายทางของการกระโดด แต่การมาสก์ไปต่อไม่ได้เมื่อเจอแท็กที่มีวงเล็บของตัวเองอยู่ข้างใน ทั้งสองอย่างจึงโผล่ออกมาและถูกแปล ตอนนี้ตัวสแกนเข้าใจวงเล็บแล้ว มันปิดที่วงเล็บคู่ที่ตรงกัน นิพจน์ซ้อนจึงยังอยู่ในแท็ก ส่วนแท็กธรรมดาก็จบที่ ] ตัวแรก
RPG Maker: ภาพหน้าอกหายไปเงียบ ๆ ปลั๊กอินภาพหน้าอกตัวหนึ่งเลือกภาพตัวละครด้วยการเทียบชื่อผู้พูดทีละอักขระกับตารางในค่าตั้งของมันเอง การแปลชื่อนั้นถูกต้อง และการไม่ไปแตะค่าตั้งที่เต็มไปด้วยคีย์ทรัพยากรก็ถูกต้อง แต่เมื่อสองอย่างนี้มาเจอกัน สมการก็พัง แล้วภาพหน้าอกของตัวละครนั้นก็หายไปโดยไม่มีอะไรถูกบันทึกไว้เลย
การส่งออกทั้งสามครั้งรายงานว่าสำเร็จ การส่งออกที่สะอาดไม่ใช่หลักฐานว่าเกมเล่นได้ ไม่ว่าเอนจินไหนก็ตาม หลักฐานเดียวคือการเปิดมันขึ้นมา
เมื่อสาเหตุไม่ใช่บรรทัดของคุณ
การแบ่งครึ่งหาเรื่องพวกนี้ไม่เจอ เพราะไม่มีครึ่งไหนเล่นได้เลย ปัญหาอยู่ที่ว่าไฟล์ที่ส่งออกไปลงตรงไหน เกม Wolf RPG อ่านอาร์ไคฟ์ .wolf ก่อนไฟล์ที่วางไว้ข้าง ๆ หน้าไตเติลจึงขึ้นมาโดยที่ข้อมูลที่แปลแล้วของคุณไม่เคยถูกอ่านจากดิสก์เลย ส่วน Addressables ของ Unity ปฏิเสธบันเดิลที่ไบต์ไม่ตรงกับเช็กซัมอีกต่อไป แล้วคืนจอดำมาให้โดยไม่ทิ้งร่องรอยในล็อกใด ๆ และเกม RPG Maker ที่แพ็กไว้ก็มองข้ามไฟล์ข้อมูลที่วางไว้ข้างไฟล์รันเลย ทั้งสามอย่างจัดการไปแล้ว ความพังในขั้นส่งมอบจึงควรค่าแก่การแจ้งมากกว่าการไล่ตามเอง
มีเครื่องหมายบอกไหมว่าบรรทัดไหนคือบทสนทนา
ไม่มี และควรระแวงคนที่บอกว่ามี
เคยมีผู้ใช้เล่าให้ฟังว่าเขาเจอเกม Godot ที่ครอบสตริงบทสนทนาทุกอันด้วย || เขาแปลเฉพาะพวกนั้น แล้วเกมก็เล่นได้ดี ในเกมนั้นมันได้ผลจริง แต่นั่นเป็นนิสัยของนักพัฒนาคนหนึ่ง ไม่ใช่ธรรมเนียมของ Godot และเกมถัดไปก็จะทำอีกอย่าง
ตัวอย่างค้านมาจาก YU-RIS ในเกมหนึ่ง ฝั่งที่ใช้เครื่องหมายแบ็กทิกบรรจุตารางสตริงของอินเทอร์เฟซทั้งชุด 687 จาก 692 แถวเป็นข้อความที่แสดงจริง กระนั้นแบ็กทิกก็ไม่มีความหมายอะไรตรงนั้น เครื่องหมายอ้างอิงทั้งสามแบบคอมไพล์ออกมาเหมือนกันหมด กฎที่ยึดตัวคั่นจึงไปติดธงประโยคจริงด้วย ตำแหน่งของค่าบอกทุกอย่าง ส่วนชนิดของเครื่องหมายอ้างอิงไม่บอกอะไรเลย
ให้พึ่งตำแหน่งกับรูปร่างแทน แล้วให้ตัวเกมสอนคุณเองว่าทั้งสองอย่างหน้าตาเป็นอย่างไร เปิดเกม อ่านบทสนทนาบรรทัดแรกที่โผล่ขึ้นมา แล้วไปหามันในตัวแก้ไข ไฟล์นั้น กลุ่มนั้น และเพื่อนบ้านของบรรทัดนั้น คือหน้าตาของบทสนทนาในเกมนี้ อะไรที่อยู่นอกนั้นคือผู้ต้องสงสัยว่าไม่ใช่บทสนทนา
แอปบอกอะไรคุณได้ และอะไรที่มันรู้ไม่ได้
RuneTranslate ติดป้าย ถูกยกเว้น ให้บรรทัดที่มันคิดว่าเป็นโค้ด พาธทรัพยากร หรือไอดี มันไม่ซ่อนบรรทัดเหล่านั้น แต่แสดงเป็นสีส้มหลังสวิตช์ แสดงรายการที่ถูกยกเว้น เพื่อให้คุณตรวจดุลพินิจของมันได้ และคุณดันบรรทัดไหนก็ได้ผ่านด้วย แปลอยู่ดี อีกทั้งเพิ่มแพตเทิร์นของคุณเองได้
และถ้าคุณเลือกบรรทัดที่ถูกยกเว้นแล้วสั่งเริ่ม มันจะหยุดถามว่า «12 จาก 340 บรรทัดที่เลือกถูกยกเว้นอยู่ — อาจถูกตัวกรองติดธง หรือ RuneTranslate ตัดสินว่าเป็นโค้ด พาธทรัพยากร หรือไอดี การแปลบรรทัดเหล่านี้อาจทำให้เกมพัง ข้ามไปจะคงสถานะยกเว้นไว้ แปลแล้วจะถูกรวมในรอบถัดไปด้วย»
จะดันต่อก็ไม่เป็นไร แค่จำไว้ว่าคุณทำ เพราะนั่นคือที่แรกที่ควรกลับไปดูเมื่อไฟล์ที่ส่งออกเริ่มเปิดไม่ขึ้น
และมีข้อจำกัดที่ควรพูดตรง ๆ การยกเว้นคือการเดาจากตัวสตริง มันจึงไม่มีทางรู้ว่าประโยคหนึ่งในเกมของคุณเป็นคีย์ค้นหาของปลั๊กอินตัวหนึ่งที่มากับเกมนั้นด้วย และเกมที่ภาษาต้นทางเป็นอังกฤษอยู่แล้วจะได้รับการปกป้องบางกว่า เพราะตัวกรองที่แข็งแรงที่สุดถามว่า สตริงนี้มีอักษรของภาษาต้นทางอยู่ไหม
คำถามที่พบบ่อย
ทำไมเกมถึงเปิดไม่ขึ้นหลังจากแปล
เกือบทุกครั้งเป็นเพราะบรรทัดหนึ่งที่คุณแปลเป็นไอดี พาธ ชื่อฉาก หรือแฟล็กที่เกมเทียบแบบตรงตัวเป๊ะ พอเปลี่ยนมัน การแจงไวยากรณ์หรือการค้นหาก็พัง
จะหาได้อย่างไรว่าบรรทัดแปลไหนทำเกมพัง
แบ่งครึ่ง รีเซ็ตคำแปลทั้งหมด แปลครึ่งหนึ่ง ส่งออกลงโฟลเดอร์ว่าง แล้วเปิด ครึ่งที่พังคือครึ่งที่มีบรรทัดนั้น แบ่งครึ่งแล้วทำซ้ำ ร้อยบรรทัดใช้หกถึงเจ็ดรอบ ห้าพันบรรทัดราวสิบสามรอบ
เกมที่แปลแล้วปิดตัวทันที หมายความว่าอะไร
เกิดข้อผิดพลาดร้ายแรงตอนเริ่มทำงาน ใน Kirikiri วิชวลโนเวลแบบ Electron และ NScripter มักเป็น syntax error วงเล็บ เครื่องหมายอ้างอิง หรือเพลสโฮลเดอร์ที่ถูกแปลหรือหายไป ส่วนใน Wolf RPG และ YU-RIS คือสตรีมข้อมูลที่เลื่อนออกจากตำแหน่ง
ทำไมเกมที่แปลแล้วเริ่มด้วยจอดำ
ส่วนใหญ่เป็นเพราะการโหลดล้มเหลวอยู่ในโค้ดที่กลืนข้อผิดพลาดไว้ ใน Unity คือบันเดิลที่เช็กซัมไม่ตรงกับรายการในแคตตาล็อกอีกต่อไป ลองบิลด์ที่แปลบรรทัดเดียวแบบไม่มีพิษภัยดู ถ้ายังดำอยู่ สาเหตุคือขั้นตอนส่งมอบ ไม่ใช่บรรทัดใดบรรทัดหนึ่ง
เกมที่แปลแล้วค้างที่หน้าโหลด เป็นเพราะการแปลไหม
ถ้าเป็น Unity ก็มีแนวโน้มสูง การโหลดไม่จบเป็นอาการคลาสสิกของการแปลชื่อฉากหรือคีย์ตัวแปร เกมรอชื่อที่ไม่ตรงกันอีกต่อไป และไม่มีข้อผิดพลาดใดโผล่ขึ้นมาเลย
บรรทัดแบบไหนที่ไม่ควรแปลเด็ดขาด
ทุกอย่างที่เกมใช้ค้นหาด้วยการเทียบข้อความแบบตรงตัวเป๊ะ ได้แก่พาธ ชื่อฉากและชื่อโหนด ชื่อตัวแปรและชื่ออีเวนต์ รหัสภาษา และอะไรก็ตามที่หน้าตาเป็น snake_case หรือ res:// ถ้านึกภาพผู้เล่นอ่านมันบนจอไม่ออก ก็ปล่อยไว้เถอะ
เกมเล่นได้แต่ข้อความเป็นสี่เหลี่ยมหรือเครื่องหมายคำถาม ใช่เรื่องเดียวกันไหม
ไม่ใช่ สี่เหลี่ยมที่เรียงเป็นระเบียบแปลว่าฟอนต์ไม่มีรูปอักขระตัวนั้น ส่วนเครื่องหมายคำถามจริง ๆ แปลว่าอักขระนั้นหายไปตอนเขียนไฟล์ ทั้งคู่เป็นเรื่องฟอนต์หรือการเข้ารหัส และแก้คนละแบบ
อ่านต่อ
ไม่ได้กำลังซ่อมอะไร แต่กำลังจะเริ่มแปลใช่ไหม วิธีทำแพตช์แปลเกม ครอบคลุมทั้งกระบวนการ
ถ้าเจอบรรทัดนั้นแล้ว ก็ปล่อยมันไว้เป็นภาษาต้นฉบับ แปลทุกอย่างรอบ ๆ ส่งออกลงโฟลเดอร์ว่างใหม่ แล้วเปิดเกม ผู้เล่นไม่ได้เสียอะไรเลยกับไอดีหนึ่งตัวที่ไม่ได้แปล
พร้อมลอง RuneTranslate ไหม
ระดับฟรีปลดล็อกทุกเอนจิน + ทุกผู้ให้บริการแปล Supporter ($3/mo) ปลดล็อกความเร็วเต็ม
ดาวน์โหลดสำหรับ Windows
