Files
GaCy-GO/docs/GLM-BETA-DATA.md
2026-10-28 18:54:43 +07:00

14 KiB
Raw Permalink Blame History

ชุดข้อมูล Client Beta สำหรับ GLM

อัปเดต 24 ตุลาคม 2026 (Asia/Bangkok)

เริ่มอ่านตรงนี้

ผู้ใช้ขอให้ช่วยหา event ของ Beta ที่ใช้จริง และส่งข้อมูลที่มีพร้อมวิธีเพิ่มตู้กาชาให้ GLM งานนี้จึงจัดทำ ดัชนีและชุดส่งต่อข้อมูล ไม่ได้เปิด event เพิ่ม เปลี่ยน backend หรือรีสตาร์ตเซิร์ฟเวอร์

ไฟล์ชุดส่งต่อ

.runtime/ ถูก ignore ถ้า GLM อยู่คนละเครื่องต้องส่ง ZIP ให้ด้วย การส่งเฉพาะ Git diff จะไม่มีชุดข้อมูลและ evidence เหล่านี้

1. รุ่นและขอบเขต

ตรวจโปรเซสที่รันจริงและ hash GameAssembly.dll ซ้ำในรอบนี้แล้ว Client ปัจจุบันเป็น Beta .54:

4aa08a0706f27d2cf9951b61920c179140ece9ea94f7e34422c18e46922939b6

ข้อมูล CW เดิมหลายชุดมาจาก Beta .53:

c5e02e6e984f7e5577c78b995a8efeee2d06ee22e67d484ad5e859c8bf21e144

ชุดนี้รวมข้อมูลที่มีอยู่ในโปรเจกต์และ capture ที่ระบุที่มาได้ ไม่ใช่การ dump ทุกตาราง/ทุก asset/ทุก script จาก Beta ทั้งเกมครบแล้ว ไฟล์ที่ไม่มี provenance ไม่ถูกเปลี่ยนชื่อหรือรับรองเป็น .54 เนื่องจากวางอยู่ในโปรเจกต์เดียวกัน

ข้อมูลดิบถูกคัดลอกเป็น bytes เดิม Python ใช้ integer ที่ไม่เสียความละเอียดในการสร้างดัชนี จึงเก็บ hash64 ได้ตรง ห้าม parse/re-serialize TextID hash64 ผ่าน JavaScript Number โดยไม่ใช้วิธีรักษาเลข 64-bit

2. ข้อมูลที่ตรงกับ capture ของ Client .54

ชุด จำนวน/ขอบเขต ไฟล์ต้นทาง
ActivityPanelRow 181 หน้า รวม condition, prefab, icon, TextID และ display items resources/PreviewGameplayCatalog.json → tables.panels
ActivityConfigRow 361 รายการ รวม module/resident/panel/early-access mapping ไฟล์เดียวกัน → tables.activities
GachaBasicInfoConfigRow 6 แถวของตารางปัจจุบัน ไฟล์เดียวกัน → tables.gacha
ParkourLevelConfigRow 13 แถว; ไม่ใช่ Stella Jump ด้านข้าง ไฟล์เดียวกัน → tables.parkour
ChenLingGameBoyCaseRow 16 cases resources/StellaJumpConfig.json
CW role flat config 140 rows; ไม่ใช่ทุกตารางของ CW resources/CurrencyWarsCurrentRoles.json
Event asset observations 290 prefab/icon paths; 146/181 panels มีทั้งสอง path resources/PreviewAssetAvailability.json
GachaGroupDataRow ดึง flat GetAll จบครบ 0 แถว ในรอบนี้ battle_diagnostics/glm-gacha-groups-current.json
Group presentation asset observations 3 path จาก Lua จริง ตรวจแล้วไม่มีทั้ง 3 battle_diagnostics/glm-gacha-group-assets.json

CW role compatibility .53→.54 แยกอยู่ใน resources/CurrencyWarsRoleCompatibility.json เป็น overlay หนึ่ง family/สาม star variants ไม่ใช่การ recapture CW ทั้งหมด

ระวัง ActivityConfig ชื่อคล้ายกัน

resources/ActivityConfig.json เดิมมี 360 รายการและไม่มี provenance .54 ของตัวเอง ส่วน PreviewGameplayCatalog.json.tables.activities มี 361 รายการที่ capture ตรงรุ่น

เปรียบเทียบ key ได้ว่าใน capture ปัจจุบันมี ActivityID 10196, 50157 เพิ่ม และไม่มี 50136 ที่อยู่ในไฟล์เดิม ใน ID ร่วมกัน main/resident module lists ตรงกันจากการเทียบครั้งนี้ แต่ไม่ได้ทำให้ไฟล์เก่ากลายเป็น current native dump

ให้เริ่มหา event ใหม่จาก PreviewGameplayCatalog อย่ายึดเฉพาะ ActivityConfig เดิมหรือค้น type ที่เดาชื่อแล้วสรุปว่าไม่มีข้อมูล

3. Event ที่หาเจอแล้ว

ตัวอย่างด้านล่างใช้ ชื่อเทคนิคจาก prefab ยังไม่ใช่ localized title ที่ถอดแล้ว และไม่ได้พิสูจน์ว่าเป็น official active schedule ของวันนี้

Panel ระบบ/Prefab Main modules Resident modules Prefab + icon
50132 QuestMechCraftPanel 5013201 5013202 มี
50142 QuestComicDessertPanel 5014201 5014202 มี
50143 QuestRealityShowPanel 5014301–5014305 5014311–5014315 มี
50125 QuestFinalityBattlePanel 5012501–5012505 — มี
50114 QuestTeamTowerPanel 5011401 5011402 มี
50112 QuestPixAirPanel 5011201 5011202 มี
50111 QuestB51RacingPanel 5011101 5011102 มี
50107 QuestChenLingFesPanel 5010701 — มี
50092 QuestChenLingBattlePanel 5009201 5009202 มี
50134 QuestBlindBoxPanel ดู raw mapping ดู raw mapping prefab ไม่มี

Source ปัจจุบันเปิดเพียง policy-selected families และตัดหน้าที่มี dependencies/handler ยังไม่ครบ จึงต่างจาก “Beta ไม่มี event” รายละเอียดและแนวทางต่อ callback อยู่ใน GLM-BETA-EVENTS.md

จุดเชื่อมสำคัญ: ใน wire ActivityScheduleData.ActivityId ใช้ moduleID ส่วน PanelId ใช้ panelID ห้ามนำ ActivityConfig.ActivityID ใส่แทน moduleID โดยไม่ตรวจ

4. ข้อมูลเก่าและข้อมูลที่ยังไม่ยืนยัน revision

ชุด ZIP รวม resources ทั้งหมดที่มีและไฟล์ข้อมูล root ที่เกี่ยวข้อง โดยแยก provenance ไว้ใน manifest:

  • CW .53/reference: divisions/routes/role defaults/variants/camps/levels/equipment/spotlights/monster recipes/rewards/craft/initial runs/node transitions/trials
  • .53-identified scene, navigation, cosmetics, technique/world-battle resources
  • External data: Eidolon/Inventory จาก Dimbreath, BattleRules/Profile จาก PearlSR, ทีม Prydwen, AhaHelp จากภาพที่ผู้ใช้ให้ ไม่ใช่ native .54 dump
  • Unversioned/server data: Avatar/SkillTree/Quest/MainMission/Stage/Map/Tutorial ฯลฯ ซึ่งห้ามรับรองว่าทุก ID ใช้ได้กับ .54
  • Root res.json กับ resources/res.json เป็นคนละ schema และคนละชุด ห้ามทับหรือย้ายแทนกันเพราะชื่อเหมือนกัน
  • mission_unlocks.json เป็นรายการที่ server เปิดให้ ไม่ใช่หลักฐานว่า Client มี config ทุก ID; ดู MissionCompatibility และ missing-config evidence ประกอบ

5. Protocol และเครื่องมือ

รวม .proto, named command maps/pairs และ source revision ไว้ใน bundle โดยไม่รวม .pb.go ซ้ำทั้งชุด

Command source revision ที่ใช้อยู่:

005d2c12db4781071f4b5b68e8f364587886a710

นี่ไม่ใช่ full native protocol dump ของ .54 ทุก packet บางคำสั่งถูกตรวจซ้ำกับ Client แล้ว แต่ส่วนที่ยัง obfuscated/ไม่ตรวจต้องเก็บข้อจำกัดไว้ ใช้ name resolver ของ repository อย่าฝัง CmdID หรือส่งหลาย aliases เพื่อเดา callback

เครื่องมือที่รวมเป็น source สำหรับอ่านต่อ ไม่ได้ถูกรันโดย packaging helper:

  • preview_flat_tables.js: สี่ named flat tables; ตรวจ prologue/ขอบเขต; 16 rows ต่อ managed marker
  • preview_gameboy_tables.js: ChenLing GameBoy flat table
  • glm_beta_gacha_groups.js: named gacha group GetAll; 8 rows ต่อ marker; เก็บกรณีตารางว่างอย่างชัดเจน
  • named metadata probes และ bounded trigger ที่พักเมื่ออยู่ Battle
  • inspect_luau_v4.py และ GachaMainPage bytecode/parsed prototypes
  • static PE range/call-reference readers และ protocol tooling ที่เกี่ยวข้อง

ก่อนใช้ native tools ต้องตรวจ process path/hash ใหม่ เพราะ PID, MethodHandle และ base address เปลี่ยนหลัง restart การอ่าน metadata ครั้งนี้พบว่า RPG.Client.TextID อยู่ใน assembly RPG.GameCore.Foundation ไม่ใช่ Assembly-CSharp; lookup ใน assembly ผิดแล้วได้ nil ไม่ได้แปลว่า type หาย

6. ส่งต่อให้ GLM ทำต่อ

ข้อความพร้อมใช้:

อ่าน docs/GLM-BETA-DATA.md, docs/GLM-BETA-EVENTS.md และ docs/GLM-GACHA-GUIDE.md ก่อน ข้อมูล event ของ Beta มีแล้ว 181 panels/361 activities ใน PreviewGameplayCatalog ไม่ใช่ไม่มี event ให้ใช้ event-index เชื่อม panel/module/conditions/assets และต่อ named data handlers ตามแต่ละระบบ กาชามีตารางจริง 6 แถว แต่ limited 4 prefab และ generic group 3 prefab ไม่มีใน manifest; flat GachaGroupDataRow ดึงครบได้ 0 แถว จึงยังไม่มี GroupIDs ให้ใช้ อย่าเดาตัวเลขหรือเปิด path ที่ไม่มีเพื่อกลบอาการ ต้องสร้าง compatible custom presentation จาก asset ที่มีจริงและให้ผลสุ่มตรงภาพตู้ รักษาเซฟ/rank/EX/Traces และอย่ารบกวน Battle ที่กำลังเล่น อ่าน manifest เพื่อแยก .54, .53/reference, external policy และ unversioned ห้ามอ้างว่าชุดนี้เป็น dump ทุกอย่างของ Beta ครบแล้ว

สิ่งที่ยังต้องหาเพิ่ม: localized title text, config/asset dependencies และ data/proxy callbacks ของ event ใหม่, ตารางอื่นของ Client ที่ยังไม่ได้ capture, gacha presentation/binding และ semantics ของ grouping fields ที่ยัง obfuscated

7. ขอบเขตการทำงานรอบนี้

  • อ่าน source/resource และวิเคราะห์ config/capture เพื่อส่งต่อ
  • ตรวจ hash ของ module จริง และอ่าน named gacha group table/metadata กับ asset existence เฉพาะ path ที่มีหลักฐานจาก Lua
  • ถอด probe ที่เพิ่มในรอบนี้แล้ว และปิด Frida sessions ของรอบนี้
  • ไม่แตะ probes ของ GLM ที่มีอยู่ ไม่แก้ gameplay backend ไม่เปลี่ยนเซฟ ไม่ build/deploy/restart และไม่รัน tests
  • ชุดข้อมูลไม่รวม persistent, freesr-data.json, server.local.json, บัญชี/token logs หรือ game binaries ของผู้ใช้
  • Snapshot เป็นการอ่านไฟล์ทีละไฟล์ขณะที่มีงานอื่นทำอยู่ ไม่ใช่ atomic snapshot ของ repository ทุกไฟล์ ณ nanosecond เดียว ค่า SHA ใน manifest อ้างอิง bytes ที่คัดลอกเข้าชุดจริง