Files
GaCy-GO/AGENTS.md
T

16 lines
4.6 KiB
Markdown
Raw Normal View History

# Repository rules
## ห้าม hardcode ค่าที่เปลี่ยนตามการใช้งาน
- ห้ามใส่ path ของเครื่อง, ชื่อผู้ใช้, Desktop, ไดรฟ์ติดตั้ง, path ของเกม/Proxy/Go, IP, port, URL ของ deployment หรือเวอร์ชัน Client ลงใน source code หรือ startup scripts
- ค่ารันระบบต้องมาจาก `server.json` โดย override ผ่าน `server.local.json` หรือ environment ได้ ใช้ตัวโหลดร่วมกันและตรวจค่าก่อนเริ่มทำงาน ห้ามมี fallback ที่ซ่อนค่าคงที่ไว้ในโค้ด
- ค่าเฉพาะเครื่องต้องอยู่ในไฟล์ local ที่ถูก ignore หรือ environment ห้าม commit ข้อมูลเฉพาะเครื่อง ห้ามเดาตำแหน่งโปรแกรมจากชื่อโฟลเดอร์หรือเลขเวอร์ชัน
- ค่าจากระบบเกม เช่น StageID, MonsterID, floor, group, anchor, level, buff และรายการปลดล็อก ต้องอ่านจาก resource/config ที่ตรงกับ Client เมื่อมีตารางรองรับ ห้ามเพิ่มการแก้บัคแบบเจาะจง ID โดยไม่มีข้อมูลรองรับ
- main affix ของ relic ต้องตรวจในกลุ่ม MainAffixGroup ของชิ้นนั้น ห้ามใช้ ID ข้ามกลุ่มหรือเดาจากเลข stat ทั่วไป และห้ามแก้ converter ให้บังคับเปลี่ยน ID เฉพาะตัวละครเพื่อกลบข้อมูล inventory ที่ผิด
- ค่าคงที่ที่เป็นนิยามของ protocol, enum, schema, โครงสร้างโปรเจกต์ และขอบเขตของชนิดข้อมูลใช้ได้เมื่อมีที่มา ตรวจสอบได้ และระบุชื่อที่สื่อความหมาย ห้ามใช้ข้อยกเว้นนี้แทนค่าตั้งระบบ
- ห้ามอ้างว่าเอา hardcode ออกทั้ง repository หากตรวจหรือแก้เพียงบางส่วน ต้องบอกขอบเขตและส่วนที่ยังเหลือจริง
- เมื่อแก้ startup/config ต้องตรวจว่าทั้ง SDK dispatch, game gateway และ launcher ใช้ค่าเดียวกัน พร้อมอัปเดต README และทดสอบ config override/ค่าผิดก่อน build
- ห้ามอ้างว่า build/test ผ่านแล้วแปลว่า Client เข้า battle หรือโหลดฉากได้ ต้องยืนยันจาก Client หรือรายงานว่ายังรอตรวจ
- handler ต้อง resolve CmdID จากชื่อในตาราง protocol ที่มี revision อ้างอิง ห้ามรับ alias เลขจากหลายเวอร์ชันหรือส่ง response หลายเลขเพื่อเดา callback; ถ้า schema ยัง obfuscated ต้องบันทึกข้อสันนิษฐานและข้อจำกัดไว้
- อย่าเปลี่ยนค่า protocol เช่น ClientDownloadData Lua format ตามเลข patch ของ Client โดยไม่มีต้นฉบับรองรับ และอย่าเปลี่ยนแค่ข้อความเวอร์ชันเพื่ออ้างว่าอัปเดต handler แล้ว
- SDK และ game server ที่เปิดผ่าน launcher ต้องแสดงคอนโซลและ log ให้ผู้ใช้เห็น ห้ามซ่อนหน้าต่างหรือ redirect จนคอนโซลว่าง เว้นแต่ผู้ใช้ขอเอง เมนูแบบ interactive ปิดหลังทำรายการเสร็จ 5 วินาที โดยไม่ปิดเซิร์ฟเวอร์ตามไปด้วย