[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"install-game-shadow-gambit-the-cursed-crew":3,"$fXkM5jeKxHf3gqCEAh7dzKB11i3ombXtiSohiWKrqBac":133},{"game":4,"isPreview":132},{"id":5,"slug":5,"title":6,"shortTitle":7,"tagline":8,"synopsis":9,"poster":10,"heroImage":11,"logo":12,"gameVersion":13,"year":14,"featured":15,"status":16,"progressPercent":17,"wipStatus":18,"progressNote":19,"externalLinks":20,"platforms":21,"downloadFiles":34,"installSteps":39,"modSpec":49,"nerdInfo":68,"tags":87,"gallery":92,"localization":111,"license":126,"credits":128},"shadow-gambit-the-cursed-crew","Shadow Gambit: The Cursed Crew","Shadow Gambit","Stealth Tactics แนว Pirate จาก Mimimi Games เรื่องราวของเหล่าโจรสลัดในทะเลแคริบเบียน","\u003Cp>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ทะเลแคริบเบียนกับเรื่องโจรสลัด อู้วววว ผมหละโคตรซอบเลยยย ต้องบอกว่าจริงๆแล้วโปรเจ็คนี้เป็นโปรเจ็คแรกที่ลอง Mod เลย เกิดจากการที่เล่นแล้วรู้สึกว่าคำศัพท์ที่ใช้ในเกมมันค่อนข้างแปลก น่าจะเพราะเป็นธีมโจนสลัดเก่าๆบวกกับการใช้สำนวนภาษาอังกฤษที่ค่อนข้างเฉพาะตัวทำให้อ่านไปด้วยเล่นไปด้วยแล้วปวดหัว ฮาๆๆๆๆ\u003Cbr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ไปหาส่องเพจแปลเกมก็มีปรมาจารย์อยู่ท่านหนึ่งที่ระบุว่ากำลังทำอยู่ แต่ไอ้ครั้นเราจะไปถามก็กระไรอยู่เลยลองทำใช้เองซะเลย โดยผมใช้ Tool ช่วยเป็น BepInEx ทำเป็น plugin สรุปสนุกอยู่กับการใช้เครื่องมือและการ Optimize AI Model กว่าจะเสร็จทำไป 2 อาทิตย์โดยประมาณ โดยตัวม็อดนี้แปลข้อความในเกมประมาณ 20,000 บรรทัด (จริงๆ รวมพวก Action Key ต่าง ๆ ด้วย รวม ๆ ไปมันจะได้ดูเยอะ ๆ)\u003Cbr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;แปลด้วย AI Translation และต้อง Manual Review ด้วยบางส่วน (เพราะเจอว่ามันแปล Close เป็น ใกล้ เลยต้องไล่ดู เฮ้อ แต่เอาจริงๆ ตอนเขียนอยู่นี่ก็ยังไม่ได้เล่นไปไหนไกลเลยนะ ฮาๆ) ด้วยความที่ตัว AI มันแปลได้ไม่สมบูรณ์ 100% ตอนแรกกะจะใช้ Google gemini แต่ไม่ไหวมั้ง มันจะเปลือง Token มากเกินไปเลยต้องมารันแบบ Local การ์ดจอ RTX 4070 TI Super (ไหวแบบพอประมาณ) โดย Model แรกที่ลองใช้คือ Qwen แต่ให้ตายพอมันหลอนๆ มันพ่นภาษาจีนมาเต็มเลยพระเจ้าช่วยทอดกล้วย ก็เลยต้องหาอันใหม่จนมาได้ Google Gemma 4 ซึ่งก็แปลได้ค่อนข้างดีเลยทีเดียว ได้โทนภาษาที่เข้ากับบรรยากาศโจรสลัดย้อนยุค หากท่านใดเจอคำแปลก ๆ แล้วมีเวลาจด รบกวนแจ้งมาที่ email อีกทีนะครับ คนเดียวไล่ไม่ไหวจริงๆ\u003Cbr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;และส่วนสุดท้าย ฟอนต์ หลังจากที่งมอยู่กับวรรณยุกค์จมอยู่นาน ลองฟอนต์หลากหลายมากกะจะเอาแบบที่เข้ากับธีมเกมลงแล้วลงอีกจนในที่สุดก็ยอมแพ้แต่ก่อนหน้าจะยอมแพ้ขอใช้ฟอนต์ที่ดูทางการที่สุดก่อน TH Sarabun New สรุปจบทุกปัญหาไม่มีลอยไม่มีจมมีอย่างเดียวตัวบางไปหน่อยขนาดเรื่องใช้ตัวหน้าแล้ว\u003C\u002Fp>","https:\u002F\u002Fcdn.modnerd.link\u002Fposters\u002Fmpgm2kou-rihmov-cropped.png","https:\u002F\u002Fcdn.modnerd.link\u002Fhero\u002Fmpgm30cm-vcndkd-cropped.png","https:\u002F\u002Fcdn.modnerd.link\u002Flogos\u002Fmpgm3d8x-lrx5s2-cropped.png","1.2.133",2023,true,"released",0,"planned",null,{"download":19},[22,26,30],{"name":23,"icon":24,"link":25},"Steam","ri-steam-line","https:\u002F\u002Fstore.steampowered.com\u002Fapp\u002F1545560",{"name":27,"icon":28,"link":29},"Epic Games Store","ri-store-2-line","https:\u002F\u002Fwww.epicgames.com\u002Fstore\u002Fen-US\u002Fp\u002Fshadow-gambit-the-cursed-crew",{"name":31,"icon":32,"link":33},"GOG","ri-shopping-bag-line","https:\u002F\u002Fwww.gog.com\u002Fen\u002Fgame\u002Fshadow_gambit_the_cursed_crew",[35],{"label":36,"description":37,"url":38},"ShadowGambitThaiMod","v1.6.4 : 2026-06-15","https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1L_x-uYv6tvWvFbdysueOOzyqnQx6v4kP\u002Fview?usp=sharing",[40,43,46],{"title":41,"detail":42},"ติดตั้ง BepInEx","\u003Cp>ดาวน์โหลด \u003Ca target=\"_blank\" rel=\"noopener\" href=\"https:\u002F\u002Fbuilds.bepinex.dev\u002Fprojects\u002Fbepinex_be\">BepInEx Unity (IL2CPP) for Windows (x64) games\u003C\u002Fa> ดาวโหลด build  #755 [3fab71a] BepInEx-Unity.IL2CPP-win-x64-6.0.0-be.755+3fab71a.zip แตกไฟล์ลงในโฟลเดอร์ติดตั้งของเกม เช่น \u003Ccode>Steam\\steamapps\\common\\Shadow Gambit The Cursed Crew\\\u003C\u002Fcode>\u003C\u002Fp>",{"title":44,"detail":45},"ติดตั้ง Mod","\u003Cp>แตกไฟล์ zip ของ Mod จะพบโฟลเดอร์ BepInEx ให้นำไปวางในโฟลเดอร์เกม\u003C\u002Fp>\u003Cp>\u003Ccode>Steam\\steamapps\\common\\Shadow Gambit The Cursed Crew\\\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>หากเป็นการวางครั้งแรกจะไม่มีหน้าต่างแจ้งเตือนไฟล์ซ้ำ แต่หากเป็นการวางเผื่ออัพเดท อาจมีหน้าต่างแจ้งเตือนให้กด Replace ... ทับไฟล์เดิมได้เลย\u003C\u002Fp>",{"title":47,"detail":48},"เปิดเกมและเพลิดเพลิน","\u003Cp>เปิดเกมตามปกติผ่าน Steam \u002F Epic \u002F GOG - ข้อความทั้งหมดจะเปลี่ยนเป็นภาษาไทยโดยอัตโนมัติ จริงๆต้องบอกว่าตอนทำทดสอบแค่ Steam หากพบปัญหาสามารถส่งรายงานมาที่ report@modnerd.link แต่ก็นะ ไม่มีเงินจะเอาไปซื้อแพลทฟอร์มอื่นเพื่อทดสอบอยู่ดี ผ่าม!!!\u003C\u002Fp>",[50,54,57,61,65],{"name":51,"type":52,"version":53},"BepInEx","framework","6.0.0-pre.2",{"name":36,"type":55,"version":56},"plugin","1.6.4",{"name":58,"type":59,"version":60},".NET 6.0","runtime","1.6.0",{"name":62,"type":63,"version":64},"Unity","unity","2021.3.25f1",{"name":66,"type":67,"version":60},"MiLocalization","hookPoint",[69,72,75,78,81,84],{"title":70,"body":71},"IL2CPP สิ่งที่สร้างความยากกว่า Mono","Unity เกมส่วนใหญ่ build แบบ \u003Cstrong>Mono\u003C\u002Fstrong> ซึ่ง bytecode ยังอยู่ในรูปที่อ่านได้ง่าย แต่ Shadow Gambit เลือก build แบบ \u003Cstrong>IL2CPP\u003C\u002Fstrong> - C# ทั้งหมดถูกแปลงเป็น native C++ และคอมไพล์ก่อน ship ทำให้ runtime ที่คุ้นเคยหายไป และต้องใช้ interop layer พิเศษในการคุยกับ managed .NET จากฝั่ง plugin นั่นคือเหตุที่ต้องใช้ BepInEx \u003Ccode>6.0.0-be.755\u003C\u002Fcode> (IL2CPP build) แทน stable 5.x ที่คนส่วนใหญ่รู้จัก",{"title":73,"body":74},"One Hook to Rule Them All","แทนที่เราจะแก้ไฟล์ข้อความในเกมโดยตรง mod นี้ใช้ \u003Cstrong>HarmonyX postfix patch\u003C\u002Fstrong> เพื่อดัก method ตัวเดียวที่เกมเรียกทุกครั้งที่ต้องการแสดงข้อความ ผลคือไม่มีการแตะ game files เลย ไม่มีการแงะที่ยุ่งยากตอนจะ pack กลับเข้าไป ทำงานได้กับทุก version ของเกมโดยอัตโนมัติ (คิดว่านะ)\u003Cbr>\u003Cbr>ระบบ lookup ทำงาน \u003Cstrong>2 ชั้น\u003C\u002Fstrong> - ชั้นแรกค้นจาก ID ตัวเลขที่แม่นยำที่สุด ถ้าไม่เจอค่อย fallback ไปจับคู่จากข้อความภาษาอังกฤษ รองรับกรณีที่ game update แล้ว ID เปลี่ยนได้โดยไม่พัง",{"title":76,"body":77},"Font Injection ใน IL2CPP - ไม่ง่ายอย่างที่คิด","\u003Cp>Unity IL2CPP ไม่ยอมให้สร้าง MonoBehaviour ใหม่ตรงๆ ต้องใช้ \u003Ccode>ClassInjector.RegisterTypeInIl2Cpp&lt;T&gt;()\u003C\u002Fcode> เพื่อบอก runtime ก่อนว่า type นี้มีอยู่จริง จากนั้น font replacer จะทำงานใน \u003Ccode>LateUpdate()\u003C\u002Fcode> ทุก frame สแกนและเปลี่ยน font ทุก Text component บนหน้าจอ\u003Cbr>Font ถูกแพ็คเป็น \u003Cstrong>Unity AssetBundle\u003C\u002Fstrong> แยกไฟล์ ทำให้ swap font ได้โดยไม่ต้อง rebuild plugin รองรับ subtitle scaling แบบ rule-based ผ่าน GameObject path matching\"\u003C\u002Fp>",{"title":79,"body":80},"Hot-reload - แก้คำแปลโดยไม่ต้องปิดเกม","ระบบ \u003Cstrong>FileSystemWatcher\u003C\u002Fstrong> 3 ตัวคอยฟัง file changes แบบ real-time - ไฟล์แปล, font config, subtitle config แก้ไขไฟล์บนดิสก์แล้วเปลี่ยนทันทีในเกม ทำให้ review cycle เร็วขึ้นมาก ไม่ต้อง restart เกมทุกครั้งที่แก้คำแปล",{"title":82,"body":83},"AI Pipeline - และบทเรียนจาก CJK Contamination","\u003Cp>ปัญหาที่เจอไม่ใช่แค่เลือก model แต่คือ \u003Cstrong>data contamination\u003C\u002Fstrong> - model แรกที่ลองพ่น CJK characters ปนมาในผลลัพธ์ภาษาไทย ทำให้ต้องสร้าง validation layer ที่ reject output อัตโนมัติทุกครั้งที่เจอตัวอักษรจีน\u002Fญี่ปุ่น\u002Fเกาหลี ก่อนจะย้ายมาใช้ Gemma 4 ที่รัน local บนเครื่อง\u003Cbr>นอกจากนี้ยังมี \u003Cstrong>glossary lock\u003C\u002Fstrong> - ชื่อตัวละครและคำศัพท์เฉพาะถูก inject เข้า system prompt ให้ model รู้ว่าห้ามแปล รวมถึง forbidden terms เพื่อรักษาโทนภาษาโจรสลัดย้อนยุค\"\u003C\u002Fp>",{"title":85,"body":86},"Auto-merge Detection","ระบบตรวจจับ string ใหม่ทำงานผ่าน \u003Cstrong>reflection\u003C\u002Fstrong> อ่าน internal dictionary ของเกมโดยตรงตอน runtime ถ้า entry count เพิ่มขึ้นจากที่รู้จัก ระบบจะ flag อัตโนมัติว่ามี string ใหม่รอแปล ทำให้ติดตาม game update ได้โดยไม่ต้องเปรียบ file ด้วยตาเอง\n        ",[88,89,90,51,91],"Stealth","Tactics","Pirate\"","Thai Localization",[93,95,97,99,101,103,105,107,109],{"url":94,"alt":19},"https:\u002F\u002Fcdn.modnerd.link\u002Fgallery\u002Fmpgra2zb-mmsze9-cropped.webp",{"url":96,"alt":19},"https:\u002F\u002Fcdn.modnerd.link\u002Fgallery\u002Fmpgra943-kretqt-cropped.webp",{"url":98,"alt":19},"https:\u002F\u002Fcdn.modnerd.link\u002Fgallery\u002Fmpgrahvw-z4kiv3-cropped.webp",{"url":100,"alt":19},"https:\u002F\u002Fcdn.modnerd.link\u002Fgallery\u002Fmpgranxq-gtl7e6-cropped.webp",{"url":102,"alt":19},"https:\u002F\u002Fcdn.modnerd.link\u002Fgallery\u002Fmpgrat54-xlbo7r-cropped.webp",{"url":104,"alt":19},"https:\u002F\u002Fcdn.modnerd.link\u002Fgallery\u002Fmpgrstvt-qmpy6s-cropped.webp",{"url":106,"alt":19},"https:\u002F\u002Fcdn.modnerd.link\u002Fgallery\u002Fmpgrt2e0-5ykdjn-cropped.webp",{"url":108,"alt":19},"https:\u002F\u002Fcdn.modnerd.link\u002Fgallery\u002Fmpgrtafq-ryyik4-cropped.webp",{"url":110,"alt":19},"https:\u002F\u002Fcdn.modnerd.link\u002Fgallery\u002Fmpgrtf8v-f89ore-cropped.webp",{"language":112,"method":113,"model":114,"stringCount":115,"persona":116,"features":117,"rules":121},"Thai (ภาษาไทย)","AI Translation + Manual Review","google\u002Fgemma-4-26b-a4b","20,000+","\u003Cp>ให้สะท้อนอารมณ์ของโจรสลัดที่ดูย้อนยุคและดุดัน บังคับใช้สรรพนาม \"ข้า\" และเรียกอีกฝ่ายว่า \"เจ้า\" ห้ามใช้คำลงท้ายหรือสรรพนามสมัยใหม่ (ครับ\u002Fค่ะ\u002Fผม\u002Fดิฉัน) โดยเด็ดขาด ครอบคลุมถึงหน้าต่าง System UI ด้วย\u003C\u002Fp>",[118,119,120],"Hot-reload","Font Injection","Auto-merge",[122,123,124,125],"ใช้ภาษาไทยเป็นหลัก","ห้ามแปลชื่อตัวละคร สถานที่ และคำศัพท์เฉพาะ ให้คงรูปภาษาอังกฤษตามต้นฉบับ","กฎเหล็ก: ห้ามมีตัวอักษร CJK (จีน\u002Fญี่ปุ่น\u002Fเกาหลี) ปะปนโดยเด็ดขาด","รักษาอักขระพิเศษ สัญลักษณ์ และโครงสร้างโค้ดต่างๆ ไว้ตามเดิมทุกประการ",{"type":127,"customNote":19},"cc-by-nc-nd-4.0",[129],{"name":130,"role":131,"url":19},"ACiT","ผู้พัฒนาม็อด (Mod Developer)",false,{"success":15,"donations":134},[135,141],{"id":136,"name":137,"accountName":138,"accountValue":139,"imageUrl":140,"sortOrder":17},2,"PromptPay","นายอมรินทร์ เข็มทอง","004666007208519","https:\u002F\u002Fcdn.modnerd.link\u002Fpages\u002Fmqcklbpu-k8znzl-cropped.webp",{"id":142,"name":143,"accountName":138,"accountValue":144,"imageUrl":145,"sortOrder":146},3,"TrueMoney","08*-***-8454","https:\u002F\u002Fcdn.modnerd.link\u002Fpages\u002Fmqckmay7-q1lyo0-cropped.webp",1]