Word Vocabularyเบื้องหลังการสร้าง
จากไอเดีย ภาพ และเสียง สู่ตัวเกมและการเผยแพร่ เลือกดูแต่ละช่วง พร้อมปัญหาที่เจอและวิธีที่ใช้แก้
ภาพประกอบContact sheet ของภาพที่ซ่อม พร้อมความหมายที่ใช้ตรวจ อ่านรายละเอียดได้เมื่อเปิดภาพเต็ม
สื่อประกอบ
ภาพสวยยังไม่พอ ต้องตรงกับคำที่สอน
เริ่มจากอะไร
เริ่มจากคำศัพท์และภาพใบ้ 3,000 คำ ตรวจว่าภาพแต่ละใบสื่อความหมายเดียวกับคำที่ต้องการสอน
ปัญหาที่เจอ
บางภาพดูสวย แต่สื่อผิดสิ่ง เช่น ภาพลิงผิดชนิด หรือภาพข้าวฟ่างที่ดูเหมือนข้าวโพด ผู้เล่นจึงอาจจำความหมายผิด
วิธีแก้
ตรวจภาพทั้งชุด แล้วซ่อมเฉพาะคำที่ผิด โดยคงรหัสคำศัพท์และตำแหน่งภาพเดิมไว้ ภาพที่ไม่เกี่ยวข้องต้องไม่เปลี่ยนตาม
- เทียบภาพแต่ละช่องกับ literal sense และ stable ID ของคำ ไม่ตรวจแค่ว่ามีไฟล์ครบ
- สร้างภาพสีต้นฉบับทดแทนเฉพาะรายการที่ผิด แล้ว pack กลับลงช่องเดิม 128×128 โดยไม่เปลี่ยน ID
- ผูกสถานะผ่าน visual QA กับทั้งความหมายและ hash ของภาพ เพื่อให้ภาพที่เปลี่ยนต้องตรวจใหม่
รายละเอียดเทคนิคและผลตรวจ
กระบวนการพัฒนา
งานเริ่มจากคลังคำศัพท์ 3,000 คำและภาพใบ้บน sprite sheets สิ่งที่ต้องเชื่อมให้ตรงกันคือคำสะกด ความหมายเฉพาะของคำ และรูปที่ผู้เล่นเห็น
- เทียบภาพแต่ละช่องกับ literal sense และ stable ID ของคำ ไม่ตรวจแค่ว่ามีไฟล์ครบ
- สร้างภาพสีต้นฉบับทดแทนเฉพาะรายการที่ผิด แล้ว pack กลับลงช่องเดิม 128×128 โดยไม่เปลี่ยน ID
- ผูกสถานะผ่าน visual QA กับทั้งความหมายและ hash ของภาพ เพื่อให้ภาพที่เปลี่ยนต้องตรวจใหม่
ปัญหาที่บันทึกไว้
ภาพบางคำสื่อคนละสิ่ง เช่น BABOON ใช้หน้าลิง mandrill และ MILLET ดูเหมือนข้าวโพด ภาพที่สวยจึงอาจทำให้เรียนรู้ความหมายผิด
วิธีแก้ในระบบ
ตรวจภาพจริงครบทั้งชุด แก้เป็นรายคำ และใช้ deterministic packing ตรวจว่าภาพที่ไม่ได้สั่งแก้ยังมี pixel เหมือนเดิม
ผลและขอบเขตการตรวจ
บันทึก 1 ต.ค. 2026 ระบุตรวจครบ 3,000 ภาพ แก้สะสม 72 คำ และไม่เหลือ visual finding ที่ค้างอยู่ เป็นการตรวจภาพโดย AI ไม่ใช่การรับรองจากผู้เชี่ยวชาญทุกสาขา
อ้างอิง: Docs/ArtQA/README.md · Shipping clue art review · 1 Oct 2026
ให้เพลงอยู่เบื้องหลัง และคำอ่านอยู่ข้างหน้า
เริ่มจากอะไร
ใช้เพลงพื้นหลังเดียวต่อเนื่องระหว่างหน้า และลดเพลงลงเมื่อเริ่มอ่านคำศัพท์ เพื่อให้ได้ยินคำชัดเจน
โจทย์ที่ต้องรับมือ
เมื่อกดฟังซ้ำหรือเสียงอ่านซ้อนกัน เพลงต้องไม่กลับมาดังก่อนคำสุดท้ายจบ และต้องไม่ค้างเบาหลังปิดเสียง
วิธีแก้
ให้เสียงที่กำลังเล่นจริงควบคุมการลดเพลง เมื่อคำสุดท้ายจบจึงค่อยคืนระดับ พร้อมพักเพลงเมื่อออกจากแอป
- บันทึกที่มาและ license ของเพลง ใช้ไฟล์ Ogg เดียวและ AudioSource ที่มีอายุเท่าตัวแอป
- ลดระดับเพลงจาก 0.12 เป็น 0.018 ตอนเสียงอ่านเริ่ม แล้วค่อยคืนระดับหลังเสียงสุดท้ายจบ
- จัดการการกดซ้ำ การอ่านซ้อน การปิดเสียง และการออกจากแอปด้วยสถานะ voice จริง
รายละเอียดเทคนิคและผลตรวจ
กระบวนการพัฒนา
เกมคำศัพท์ต้องฟังคำอ่านได้ชัด พร้อมกับมีเพลงที่ต่อเนื่องระหว่างหน้า จึงใช้ lofi loop เดียวและให้ระบบเสียงอ่านเป็นผู้ควบคุมการลดเพลง
- บันทึกที่มาและ license ของเพลง ใช้ไฟล์ Ogg เดียวและ AudioSource ที่มีอายุเท่าตัวแอป
- ลดระดับเพลงจาก 0.12 เป็น 0.018 ตอนเสียงอ่านเริ่ม แล้วค่อยคืนระดับหลังเสียงสุดท้ายจบ
- จัดการการกดซ้ำ การอ่านซ้อน การปิดเสียง และการออกจากแอปด้วยสถานะ voice จริง
ข้อจำกัดในการออกแบบ
ถ้าใช้เวลาที่เดาเอาเพื่อคืนเสียงเพลง เพลงอาจกลับมาดังก่อนคำอ่านจบ หรือค้างเบาหลังยกเลิกเสียง ส่วนการสร้าง player ใหม่ทุกหน้าจะทำให้เพลงเริ่มต้นซ้ำ
วิธีแก้ในระบบ
นับ pronunciation player ที่กำลังอ่านจริง ใช้ fade แบบ unscaled time และปล่อยการ duck เมื่อ mute, disable หรือเสีย focus พร้อมหยุด–เล่นต่อเพลงจากตำแหน่งเดิม
ผลและขอบเขตการตรวจ
LOFI_BGM และ DECISIONS บันทึกกลไกนี้ไว้ชัดเจน แต่การตรวจค่าและ playback boundary ไม่แทนการฟังจากลำโพงเครื่องจริง
อ้างอิง: Docs/Audio/LOFI_BGM.md + DECISIONS.md · 2 Oct 2026
ภาพประกอบจุดตัดเส้นเขียว–ชมพูจากคลิป Unity PlayMode หลังแก้การผสมสี ไม่ใช่ภาพก่อนแก้
สื่อประกอบ
เส้นลากสองสีต้องซ้อนกันอย่างอ่านออก
เริ่มจากอะไร
สร้างกระดานด้วยกติกาของเกมจริง แล้วลากคำเพื่อทดสอบทั้งการรับนิ้ว สีของเส้น และการบันทึกคำที่ค้นพบ
ปัญหาที่เจอ
เมื่อเส้นลากสองคำซ้อนกัน สีชนกันจนแยกทางได้ยาก การระบายเส้นเดิมซ้ำยังทำให้สีเข้มขึ้นโดยไม่ตั้งใจ
วิธีแก้
เก็บสีของแต่ละคำไว้ แล้วผสมสีเฉพาะจุดที่ตัดกัน แต่ละเส้นถูกวาดครั้งเดียว จึงยังอ่านทางได้โดยสีไม่เข้มขึ้นทุกเฟรม
- สร้างด่านด้วย production generator แล้วลากผ่าน input ของเกมจริง
- เก็บสีของคำที่แก้แล้วตามลำดับการค้นพบ เพื่อให้ลองผิด โหลดใหม่ หรือเล่นต่อแล้วยังได้สีเดิม
- จับภาพจุดตัดของเส้นและทดสอบการ blend บน GPU แล้วถ่ายคลิปใหม่หลังแก้ runtime
รายละเอียดเทคนิคและผลตรวจ
กระบวนการพัฒนา
จาก Python reference lab กติกาถูกนำมาทำเป็น C# และตัวตรวจคำตอบอิสระ การลากจริงต้องเก็บ Gem ที่ผ่าน แล้วนำสถานะคำตอบไปแสดงสีและเอฟเฟกต์โดยไม่เปลี่ยนกติกาเพื่อถ่ายคลิป
- สร้างด่านด้วย production generator แล้วลากผ่าน input ของเกมจริง
- เก็บสีของคำที่แก้แล้วตามลำดับการค้นพบ เพื่อให้ลองผิด โหลดใหม่ หรือเล่นต่อแล้วยังได้สีเดิม
- จับภาพจุดตัดของเส้นและทดสอบการ blend บน GPU แล้วถ่ายคลิปใหม่หลังแก้ runtime
ปัญหาที่บันทึกไว้
คลิปรอบแรกเผยให้เห็นเส้นลากชนสีของคำที่แก้แล้ว และบริเวณหมึกซ้อนเลือกเพียงสีที่แรงกว่า การลงสีซ้ำตาม input frame ยังเสี่ยงทำให้หมึกเข้มขึ้นโดยไม่ตั้งใจ
วิธีแก้ในระบบ
ให้แต่ละเส้นคงสีของตัวเอง ผสม pigment ที่จุดตัด composite ทั้งเส้นครั้งเดียว และรวมพื้นที่ dab ของเส้นเดิมโดยไม่เพิ่มความเข้มทุกเฟรม
ผลและขอบเขตการตรวจ
บันทึกคลิป 4 ต.ค. ระบุชุดตรวจ GPU crossing, retry/reload, production scene และ Continue ผ่าน 5/5 ภาพนี้เป็นจุดตรวจจากคลิปหลังแก้
อ้างอิง: Docs/Release/DragPromo-2026-10-04/README.md
ขยายพื้นที่ตามข้อความ แทนการบีบทั้งหน้าจอ
เริ่มจากอะไร
จัดกระดาน คำใบ้ ข้อความสรุป และโฆษณาให้อยู่ร่วมกัน พร้อมหน้าทบทวนคำที่เลื่อนดูได้ทั้งคลัง
ปัญหาที่เจอ
กล่องขนาดตายตัวไม่พอกับข้อความยาว และ scrollbar บางส่วนดูเหมือนใช้ได้ แต่ยังรับการลากไม่ถูกต้อง
วิธีแก้
วัดข้อความด้วยฟอนต์จริงก่อนจัดพื้นที่ และแก้ scrollbar ที่ส่วนกลาง เพื่อให้หลายหน้าเลื่อนด้วยพฤติกรรมเดียวกัน
- วัดข้อความด้วยฟอนต์และขนาดจริง แล้วเพิ่มความสูง review/completion card ก่อนจัดกระดานใหม่
- คำนวณตำแหน่งปุ่ม Play จากขอบ banner จริง และแยก safe-area ของปุ่มออกจากฉากหลังเต็มจอ
- ใช้ ListView recycle แถวของ Collection พร้อมพื้นที่รับ pointer สำหรับ scrollbar
รายละเอียดเทคนิคและผลตรวจ
กระบวนการพัฒนา
UI ต้องวางกระดาน ภาพใบ้ ข้อความสรุป และ banner ในพื้นที่เดียวกัน พร้อม Collection ที่ทบทวนคำศัพท์ได้ครบ ไม่สร้างภาพ 3,000 ใบพร้อมกัน
- วัดข้อความด้วยฟอนต์และขนาดจริง แล้วเพิ่มความสูง review/completion card ก่อนจัดกระดานใหม่
- คำนวณตำแหน่งปุ่ม Play จากขอบ banner จริง และแยก safe-area ของปุ่มออกจากฉากหลังเต็มจอ
- ใช้ ListView recycle แถวของ Collection พร้อมพื้นที่รับ pointer สำหรับ scrollbar
ปัญหาที่บันทึกไว้
ข้อความยาวและขนาดฟอนต์ทำให้ card ต้องการพื้นที่มากกว่าค่าคงที่เดิม ส่วน scrollbar ที่มีแต่รูปโดยไม่มีโครงสร้างรับ input ทำให้เลื่อนตามที่เห็นไม่ได้
วิธีแก้ในระบบ
ใช้ความสูงตาม text metrics แทนค่าคงที่ ไม่ขยายไอคอนตาม card จนเกิดวงจรขยายซ้ำ และแก้ slider structure ใน shared theme เพื่อให้ Settings, Collection และ map ใช้พฤติกรรมเดียวกัน
ผลและขอบเขตการตรวจ
DECISIONS วันที่ 12–13 ต.ค. บันทึกการปรับ layout และ panel-pointer regressions ผ่าน 4 กรณี โดยไม่เปลี่ยนปริศนาหรือคำตอบที่บันทึกไว้
อ้างอิง: DECISIONS.md · measured cards, Collection, shared scrollbar · 12–13 Oct 2026
เมื่อ iOS export ล้มใน compiler
เริ่มจากอะไร
หลังแก้เกม ต้องสร้างไฟล์ iOS ใหม่ ตรวจเวอร์ชันและลายเซ็นให้ตรงกับโค้ดที่กำลังส่ง
ปัญหาที่เจอ
เครื่องมือแปลงโค้ดของ Unity ล้มระหว่างทำงานหลายส่วนพร้อมกัน ทำให้ยังไปต่อถึงไฟล์พร้อมส่ง Store ไม่ได้
วิธีแก้
เก็บหลักฐานของรอบที่ล้ม แล้วลดงานแปลงโค้ดให้ทำครั้งละหนึ่งส่วน วิธีนี้สร้างสำเร็จโดยไม่เปลี่ยนกติกาหรือรุ่น Unity
- เก็บ log และ export ที่ล้มไว้ ก่อนเปลี่ยนเงื่อนไขการ build
- เพิ่มตัวเลือกจำนวน worker สำหรับ IL2CPP conversion โดยไม่เปลี่ยน Unity version หรือ logic ของเกม
- ตรวจเวอร์ชันและข้อมูล archive/IPA หลังสร้างสำเร็จ แล้วคืนค่าพารามิเตอร์ชั่วคราว
รายละเอียดเทคนิคและผลตรวจ
กระบวนการพัฒนา
หลังแก้ UI ต้องสร้าง artifact ใหม่และยืนยันว่าเป็น source รุ่นที่แก้จริง ปัญหาระหว่าง build จึงต้องแยกจากข้อผิดพลาดของ gameplay
- เก็บ log และ export ที่ล้มไว้ ก่อนเปลี่ยนเงื่อนไขการ build
- เพิ่มตัวเลือกจำนวน worker สำหรับ IL2CPP conversion โดยไม่เปลี่ยน Unity version หรือ logic ของเกม
- ตรวจเวอร์ชันและข้อมูล archive/IPA หลังสร้างสำเร็จ แล้วคืนค่าพารามิเตอร์ชั่วคราว
ปัญหาที่บันทึกไว้
iOS build 7 ล้มใน IL2CPP ระหว่าง parallel collection ของ ReadOnlyHashSet/generics ทำให้ไปต่อถึง archive ไม่ได้
วิธีแก้ในระบบ
build 8 จำกัด conversion ให้ใช้หนึ่ง worker แล้วแยก native compilation เป็นอีกขั้น โดยเก็บ checks ของ compiler/runtime ไว้ครบ
ผลและขอบเขตการตรวจ
conversion ด้วยหนึ่ง worker สำเร็จตามบันทึก 12 ต.ค. แต่ผลสำเร็จของวิธีลด concurrency ยังไม่พิสูจน์ root cause ภายใน compiler
อ้างอิง: DECISIONS.md · iOS build-7 IL2CPP failure and build-8 single-worker conversion · 12 Oct 2026
รวมทุกส่วน ก่อนส่งถึงมือผู้เล่น
จากงานแต่ละส่วนสู่แอปเดียว
สร้าง Android code 15 และ iOS build 9 จาก source ที่แก้ UI แล้ว ตรวจลายเซ็น เวอร์ชัน และ symbols ให้ตรงกับไฟล์ที่จะส่ง
ตัวแอปและหน้าร้านต้องตรงกัน
iOS Simulator บันทึกผ่าน 63 จาก 72 รายการ อีก 9 รายการยังต้องใช้เครื่องจริง บัญชี หรือ Store ส่วน Android code 15 ไม่มีผลทดสอบบนมือถือรอบใหม่
สถานะในบันทึกการเผยแพร่
Android ส่งตรงเข้า Production review พร้อม symbols ส่วน iOS ส่ง build 9 และ Remove Ads เข้าตรวจ บันทึกวันที่ 13 ต.ค. ยังไม่ใช่ผลอนุมัติหรือยืนยันเปิดดาวน์โหลด
อ้างอิงวันที่ในบันทึก ไม่ใช่สถานะ Store แบบเรียลไทม์
รายละเอียด Build และหลักฐาน
การรวมระบบ
- เริ่มจาก Python lab V2.3 เป็นตัวอ้างอิง แล้วย้ายกติกาไป C# พร้อมตัวตรวจคำตอบอิสระ ไม่ใช้ตัวสร้างกระดานตรวจตัวเอง
- ทำ manifest ภาพตาม stable ID สำหรับคำศัพท์ 3,000 คำ ตรวจความหมาย ภาพ และการแมปก่อนนำเข้า Unity
- บันทึกกระดานทั้งชุด รวมเส้นทางที่แก้แล้ว ใช้ temp/backup/replace เพื่อกลับมาเจอปริศนาเดิมหลังปิดเกม
ผลตรวจ
บันทึก 13 ต.ค. 2026 ระบุ simulator journeys ของ iOS build 9 รวม 63 Passed จาก 72 รายการ โดยอีก 9 รายการติดเงื่อนไขเครื่องจริง บัญชี หรือ Store ยังไม่ถือว่าผ่านครบทุก release gate และไม่มีผล handset acceptance ใหม่ของ Android code 15
การส่งขึ้น Store
Android 0.1.14 (15) ส่งตรงเข้า Production review พร้อม native symbols ส่วน iOS 0.1.13 (9) และ Remove Ads อยู่ในสถานะ Waiting for Review โดยตั้งปล่อยอัตโนมัติหลังอนุมัติ บันทึกนี้ยังไม่ยืนยันผลอนุมัติหรือการเปิดดาวน์โหลดของรุ่นดังกล่าว
บันทึกอ้างอิง
- Docs/ArtQA/README.md · Shipping clue art review · 1 Oct 2026
- Docs/Audio/LOFI_BGM.md + DECISIONS.md · 2 Oct 2026
- Docs/Release/DragPromo-2026-10-04/README.md
- DECISIONS.md · measured cards, Collection, shared scrollbar · 12–13 Oct 2026
- DECISIONS.md · iOS build-7 IL2CPP failure and build-8 single-worker conversion · 12 Oct 2026
- README.md
- PRODUCTION_PLAN.md
- Docs/Release/PLAY-V15-2026-10-13.md
- Docs/StoreListing/iOS-0.1.13/BUILD-9.md
- Docs/StoreListing/iOS-0.1.13/STORE-STATUS.md