CatGunner CookbookBardCat 1.1.59 · L1 ANALYSIS · tài liệu học
Trang chủTài liệu framework › 11 — Kiểm kê NỘI DUNG (content inventory) — cho hoạ sĩ ước lượng khối lượng công việc
Nguồn: 11-content-inventory.md · Cập nhật lần cuối: 2026-09-05 08:45 +07 · sha256 nguồn 6cd02a16cebb

11 — Kiểm kê NỘI DUNG (content inventory) — cho hoạ sĩ ước lượng khối lượng công việc

Nguồn: SOT com.Chodun.CatGunner 1.1.59 (tên nội bộ BardCat), build Android XAPK sha256 10ada66082387da2fd3ddcb35966f8daf9bf7f4170d7850c86833ac00ac0fbe6. Mọi C# ở đây là L1 ANALYSIS, không phải source gốc. Tài liệu này chỉ đếm và dẫn chứng. Nó KHÔNG ước lượng giờ công.

Đối tượng đọc: hoạ sĩ game của bạn. Mục tiêu: biết chính xác game đã ship có bao nhiêu thứ, mỗi thứ cần loại asset gì, để ước lượng công sức làm một game tương tự.


0. Nguồn & phương pháp (tái lập được)

Nguồn Đường dẫn Ghi chú
Scene SOT (đã giải mã) [export AssetRipper: Main.unity] 505,599,079 B · 142,626 object · KHÔNG BAO GIỜ mở cả file — chỉ awk/sed/grep theo dòng
Cây export asset .../ExportedProject/Assets/{Sprite,Texture2D,AudioClip,Font,TextAsset,Mesh,Material,AnimationClip,AnimatorController}
Metadata IL2CPP dump.cs (42 MB), stringliteral.json, game_types.csv khai báo field/enum, không phải access
Kiểm kê màn hình [liveops catalog: SCREEN_CATALOG.md], [liveops catalog: scene_canvas_tree.txt] tái dùng, không làm lại
Kiểm kê asset [report: asset_lane.md] tái dùng
Bằng chứng chạy thật [liveops catalog: PROBE_RESULT.md] + shots/*.png lane liveops, read-only; dùng để xác nhận/đính chính số đếm tĩnh

Ký hiệu mức bằng chứng: scene = đọc trực tiếp từ Main.unity (mạnh nhất cho nội dung); disasm = Hex-Rays tại RVA ghi rõ; metadata = dump.cs; asset = file trong cây export.

Ký hiệu trạng thái: SHIPPED = người chơi 1.1.59 chạm được · HIDDEN = có đủ code + asset trong build nhưng không có đường vào · R1-OUT = thuộc SDK ads/IAP/analytics, ghi nhận để hiểu nội dung nhưng không tích hợp (RULES §R1).


1. Nhân vật — mèo (Cat) + SKIN

1.1 Nhân vật

Mục Số lượng Bằng chứng Asset Trạng thái
Class nhân vật 1 (Cat, TypeDefIndex 8154, ~100 field) dump.cs:593002 SHIPPED
Mèo trong màn 3 (Cat_manager.Cat_list) — [0] = người chơi, [1..2] = AI follower scene Main.unity:20324824 (fileID 118406) SHIPPED
Tham số đàn (Cat_manager) FormationRadius 2.5 · SeparationRadius 1.8 · SeparationStrength 3 scene 20324828..20324830 SHIPPED
Mèo preview trong UI 3 (Cat_Demo) scene, đếm instance dùng lại sprite skin SHIPPED
Component Cat trong scene 3 scene SHIPPED
Animator mèo Cat.controller, Cat_UI.controller asset Assets/AnimatorController/ 2 controller SHIPPED
Clip mèo Idle, Idle_0, Walk, Walk_0, Walk_1, Attack, Death, Death_0, Spawn, Ready asset Assets/AnimationClip/ 10 .anim (trong tổng 21) SHIPPED

1.2 SKIN mèo — 25 skin

Skin_manager fileID 118440, scene dòng 20325750. Skin_list = 25 hàng; Skin_Unlock 25 bool; Price_Balance 25 int; Skin_Colors 25 màu; Skin_sprites 25; Skin_Bone_sprites 25; Skin_item_list 25.

Công thức chỉ số (đọc thẳng từ scene, tuyến tính theo index i): Damage = 16·i · Speed = 10·i · Money = 5·i · Price = 100·i (Dia).

# Damage Speed Money Price (Dia) Sprite thân Sprite "bone"
0 0 0 0 0 0_4 0_5
1 16 10 5 100 1_7 1_0
2 32 20 10 200 2_2 2_7
3 48 30 15 300 3_0 3_7
4 64 40 20 400 4_2 4_6
5 80 50 25 500 5_3 5_7
6 96 60 30 600 6_7 6_0
7 112 70 35 700 7_3 7_2
8 128 80 40 800 8_6 8_3
9 144 90 45 900 9_3 9_0
10 160 100 50 1000 10_4 10_2
11 176 110 55 1100 11_0 11_6
12 192 120 60 1200 12_7 12_5
13 208 130 65 1300 13_2 13
14 224 140 70 1400 14_3 14_2
15 240 150 75 1500 15_3 15
16 256 160 80 1600 16_0 16_1
17 272 170 85 1700 17_2 17_1
18 288 180 90 1800 18_3 18
19 304 190 95 1900 19_0 19_3
20 320 200 100 2000 20 20_1
21 336 210 105 2100 21 21_1
22 352 220 110 2200 22 22_1
23 368 230 115 2300 23_1 23
24 384 240 120 2400 24_1 24_0

Ghi chú cho hoạ sĩ: tên sprite trong build là số (0_4.asset, 12_7.asset…), không phải tên mô tả — đây là tên gốc do studio đặt, giữ nguyên. Mỗi skin = 2 sprite (thân + "bone"/nét) + 1 màu. ⇒ 50 sprite + 25 màu cho toàn bộ hệ skin.

Khối lượng skin: 25 skin × 2 sprite = 50 sprite, không có Spine, không có animation riêng (dùng chung Cat.controller).


2. PET

2.1 Bậc pet (Pet_manager.Pet_list) — 10 bậc SHIPPED / 13 bộ art

Pet_manager fileID 118377, scene dòng 20323954. Pet_list = 10 hàng · Pet_Collect 10 bool · Degree_Colors 13 · Pet_sprites 13. Kho pet: Owned_Pet_list 16 ô, Selected_items 3 ô (Pet_Slot_List 3).

Pet_manager.Balance_Reload (RVA 0x2B17E78) là DEAD CODExrefs_to chỉ có 1 data-xref (bảng con trỏ method IL2CPP), 0 code-xrefPet_list cố định 10 hàng từ scene, không nạp từ server.

Nhãn bậc lấy từ Pet_Info_UI.Degree_objs (13 GameObject tên chính là nhãn): D, C, B, A, S, SS, SSS, X, XX, XXX, Z, ZZ, ZZZ.

Bậc Nhãn Spine skeleton Sprite UI Money (InfVal) MoveSpeed Trạng thái
0 D Slime 0_7 2.0 2 SHIPPED
1 C Slime2 1_6 6 4 SHIPPED
2 B Frog 2_10 18 8 SHIPPED
3 A Acorn 3_10 55 14 SHIPPED
4 S PinkRabbit 4_5 170 22 SHIPPED
5 SS BlackCat 5_8 520 32 SHIPPED
6 SSS Chicken 6_6 1 600 44 SHIPPED
7 X Pigeon 7_4 4 900 58 SHIPPED
8 XX Dove 8_8 15 000 74 SHIPPED
9 XXX Bee 9_5 46 000 92 SHIPPED
10 Z Griffin 10_0 HIDDEN
11 ZZ Ghost 11_7 HIDDEN
12 ZZZ PillowGhost 12_6 HIDDEN

PHÁT HIỆN MỚI (G194): ánh xạ 13 skeleton Spine → bậc pet đã được giải (doc 05 §5 còn ghi UNKNOWN). Bằng chứng: mỗi GameObject Pet có node con Skin (New) với 13 con tên 0..12, mỗi con mang SkeletonAnimation (spine-unity) trỏ đúng 1 <Name>_SkeletonData. Đối chiếu 286 tham chiếu skeletonDataAsset trong scene → mỗi skeleton xuất hiện đúng 22 lần, luôn dưới node tên <index>.

PHÁT HIỆN MỚI (G195): Griffin / Ghost / PillowGhost có đủ Spine JSON + atlas + PNG + sprite UI + màu bậc + node scene, nhưng không có hàng Pet_Info ⇒ 3 bậc pet cao nhất (Z/ZZ/ZZZ) là nội dung chưa phát hành, giống Raid. Art đã xong, gameplay chưa bật.

2.2 Asset Spine (13 bộ, đều spine 4.1.24)

Asset Số lượng Đường dẫn
SkeletonData JSON 13 Assets/TextAsset/{Acorn,Bee,BlackCat,Chicken,Dove,Frog,Ghost,Griffin,Pigeon,PillowGhost,PinkRabbit,Slime,Slime2}.json
Atlas .atlas.txt 13 cùng thư mục
Texture atlas PNG 13 Assets/Texture2D/<Name>.png
*_SkeletonData.asset / *_Atlas.asset 13 + 13 Assets/MonoBehaviour/
Mesh runtime Spine 13 (26 file có bản _0) Assets/Mesh/Skeleton Prefab Mesh "0..12"
Component SkeletonAnimation trong scene 286 = 13 × 22 scene, đếm skeletonDataAsset

Khối lượng pet: 13 bộ Spine (rig + atlas + PNG) + 13 sprite UI + 13 màu. Trong đó 10 bộ dùng được ngay, 3 bộ là art thừa/chưa bật.

2.3 UI pet

Panel Bằng chứng
Canvas/Pet_manager/PetInfo_UI (Pet_Info_UI, 34 obj) panel tree
Canvas/Pet_manager/Draw_Info_UI (35 obj) — gacha pet panel tree
Canvas/SafeArea/Pet_UI (SafeArea)/Pet_UI (565 obj) — lưới 16 ô + 3 ô đã chọn panel tree
NewPet_UI (24 obj) — popup pet mới panel tree
Pet_Item_List: Pet_Item_Pool 16, SlotTransforms 16 scene 20429362
Pet_Dummy (19) — pet hiển thị trong Adventure_RenderTexture_Map scene
Bậc pet có màu riêng (Pet_manager.Degree_Color_return RVA index thẳng vào Degree_Colors) — 13 màu serialize, 10 bậc dùng được (§2.1) scene + disasm
Ảnh tham chiếu panel Pet [liveops catalog: 31_panel_Pet.png]

3. SÚNG (Gun)

3.1 Bảng bậc

Gun_manager fileID 118035, scene dòng 20307967. Gun_list = 65 hàng · Gun_sprites 65 · Gun_Collect 65 bool · Degree_Colors 13 · Owned_Gun_list 16 ô · Selected_items/Gun_Slot_List 3 ô · Weapon_Get_Counts 10 int (header nói "10등급" — sai lệch, thực tế 13 bậc).

Bậc = GunNum / 5, 13 bậc × 5 súng. disasm-proven: Gun_manager.DrawRandomGun RVA 0x2B0A278 gọi Random.Range(5*Degree, 5*Degree+5). Gun_manager.Has_S_Grade_Gun RVA 0x2B0C09C quét Gun_Collect[20..24]bậc 4 = "S". Nhãn 13 bậc lấy từ Gun_Info_UI.Degree_objs (scene 20420884..20420896): D, C, B, A, S, SS, SSS, X, XX, XXX, Z, ZZ, ZZZ.

AutoMerge_Exclude_Degree = 7 ⇒ tự-ghép không áp dụng cho bậc ≥ 7 (X trở lên). Tooltip tiếng Hàn trong dump.cs ghi "Z등급 이상" — tooltip sai/lỗi thời, code chặn từ bậc X. AutoMerge_Limit_Degree bị chặn cứng ≤ 6 (RVA 0x2B0ACE0).

Bảng súng "bậc cao" của MissionMission_manager.HighTier_Gun_Table = int[8] {16, 18, 20, 22, 24, 25, 27, 29} (static, .cctor 0x2A72888; blob metadata 0x9256C8, SHA-256 == tên field — G353). Đối chiếu Gun_list (§3.2):

GunNum Bậc Tên (nguyên bản) GunType
16 A 드럼 샷건 SHOTGUN
18 A 플라즈마 캐논 EXPLOSIVE
20 S 개틀링건 SINGLE
22 S 화염 캐논 EXPLOSIVE
24 S 전갈 미사일 MISSILE
25 SS 관통 SS PIERCE
27 SS 레이저 SS LASER
29 SS 폭발레이저 SS BLAST_SNIPER

Giá trị là metadata-proven; ánh xạ tên là derived từ scene; nơi dùng bảng này chưa đọc ⇒ ý nghĩa UNKNOWN (§13).

Súng thưởng StepUp (StepUp.Gun_Rewards {23, 28, 33, 39, 44}, blob SHA MATCH — G353), đối chiếu Gun_list: #23 유령 저격총 (S, LASER) ·

28 미사일 SS (SS, MISSILE) · #33 미사일 SSS (SSS, MISSILE) · #39 폭발레이저 X (X, BLAST_SNIPER) · #44 폭발레이저 XX (XX, BLAST_SNIPER)

— 5 bậc StepUp = 5 bậc súng tăng dần S → XX. Đóng UNKNOWN "tên súng StepUp" của doc 10 §10 (derived). Nền súng DailyGun GunNum_Base {20, 30, 35} = #20 개틀링건 (S) · #30 (SSS) · #35 (X) (blob SHA MATCH — G353).

3.2 65 khẩu súng — bảng đầy đủ

type: 0 SINGLE · 1 LASER · 2 PIERCE · 3 SHOTGUN · 4 EXPLOSIVE · 5 MISSILE · 6 BLAST_SNIPER. DamageInfVal (s_digits×10^s_exponent); ở bảng dưới ghi giá trị thập phân.

# Bậc Tên (nguyên bản) GunType Damage AtkSpeed Sprite FX trúng
0 D 초보자 권총 SINGLE 100 0.6 0_10 0_Normal
1 D 소형 권총 SINGLE 80 0.5 1_4 0_Normal
2 D 경량 기관총 SINGLE 50 0.3 2_4 0_Normal
3 D 단축 샷건 SHOTGUN 80 1.0 3_6 0_Normal
4 D 쌍열 샷건 SHOTGUN 90 1.1 4_3 0_Normal
5 C 리볼버 SINGLE 200 0.6 5_10 1_Normal
6 C 돌격 기관총 SINGLE 100 0.3 6_3 1_Normal
7 C 펌프 샷건 SHOTGUN 240 1.1 7_6 1_Normal
8 C 사냥꾼의 소총 PIERCE 150 1.0 8_2 1_Laser
9 C 정찰 소총 PIERCE 110 0.7 9 1_Laser
10 B 체인건 SINGLE 165 0.25 10_6 2_Normal
11 B 미니건 SINGLE 200 0.3 11_2 2_Normal
12 B 전투 샷건 SHOTGUN 250 1.0 12_0 2_Normal
13 B 레일건 PIERCE 250 0.7 13_0 2_Laser
14 B 유탄 발사기 EXPLOSIVE 120 0.7 14_1 2_Fireball
15 A 중화기 벌칸 SINGLE 300 0.2 15_0 3_Normal
16 A 드럼 샷건 SHOTGUN 350 0.8 16 3_Normal
17 A 매그넘 라이플 PIERCE 500 0.6 17_3 3_Laser
18 A 플라즈마 캐논 EXPLOSIVE 300 0.7 18_2 3_Fireball
19 A 전술 저격총 LASER 200 1.0 19_1 3_Laser
20 S 개틀링건 SINGLE 500 0.05 20_0 4_Normal
21 S 포스 라이플 PIERCE 1 000 0.2 21_2 4_Laser
22 S 화염 캐논 EXPLOSIVE 800 0.3 22_0 4_Fireball
23 S 유령 저격총 LASER 400 0.4 23_0 4_Laser
24 S 전갈 미사일 MISSILE 600 0.4 24_2 4_Missile
25 SS 관통 SS PIERCE 6 000 0.2 25 5_Laser
26 SS 폭발 SS EXPLOSIVE 2 800 0.3 26 5_Fireball
27 SS 레이저 SS LASER 1 400 0.3 27 5_Laser
28 SS 미사일 SS MISSILE 1 600 0.35 28 5_Missile
29 SS 폭발레이저 SS BLAST_SNIPER 1 600 0.35 29_0 5_Rocket
30 SSS 관통 SSS PIERCE 24 000 0.1 30_0 6_Laser
31 SSS 폭발 SSS EXPLOSIVE 11 200 0.15 31 6_Fireball
32 SSS 레이저 SSS LASER 5 600 0.15 32_0 6_Laser
33 SSS 미사일 SSS MISSILE 6 400 0.2 33 6_Missile
34 SSS 폭발레이저 SSS BLAST_SNIPER 6 400 0.2 34_0 6_Rocket
35 X 관통 X PIERCE 90 000 0.05 35 7_Laser
36 X 폭발 X EXPLOSIVE 42 000 0.07 36 7_Fireball
37 X 레이저 X LASER 21 000 0.07 37 7_Laser
38 X 미사일 X MISSILE 24 000 0.1 38 7_Missile
39 X 폭발레이저 X BLAST_SNIPER 24 000 0.1 39 7_Rocket
40 XX 관통 XX PIERCE 360 000 0.05 40 8_Laser
41 XX 폭발 XX EXPLOSIVE 168 000 0.07 41 8_Fireball
42 XX 레이저 XX LASER 84 000 0.07 42 8_Laser
43 XX 미사일 XX MISSILE 96 000 0.1 43 8_Missile
44 XX 폭발레이저 XX BLAST_SNIPER 96 000 0.1 44 8_Rocket
45 XXX 관통 XXX PIERCE 1 350 000 0.05 45 9_Laser
46 XXX 폭발 XXX EXPLOSIVE 630 000 0.07 46 9_Fireball
47 XXX 레이저 XXX LASER 315 000 0.07 47 9_Laser
48 XXX 미사일 XXX MISSILE 360 000 0.1 48 9_Missile
49 XXX 폭발레이저 XXX BLAST_SNIPER 360 000 0.1 49 9_Rocket
50 Z 관통 Z PIERCE 15 000 000 0.05 50 10_Laser
51 Z 폭발 Z EXPLOSIVE 7 000 000 0.07 51 10_Fireball
52 Z 레이저 Z LASER 3 500 000 0.07 52 10_Laser
53 Z 미사일 Z MISSILE 4 000 000 0.1 53 10_Missile
54 Z 폭발레이저 Z BLAST_SNIPER 4 000 000 0.1 54 10_Rocket
55 ZZ 관통 ZZ PIERCE 300 000 000 0.05 55 11_Laser
56 ZZ 폭발 ZZ EXPLOSIVE 140 000 000 0.07 56 11_Fireball
57 ZZ 레이저 ZZ LASER 70 000 000 0.07 57 11_Laser
58 ZZ 미사일 ZZ MISSILE 80 000 000 0.1 58 11_Missile
59 ZZ 폭발레이저 ZZ BLAST_SNIPER 80 000 000 0.1 59 11_Rocket
60 ZZZ 관통 ZZZ PIERCE 7 500 000 000 0.05 60 12_Laser
61 ZZZ 폭발 ZZZ EXPLOSIVE 3 500 000 000 0.07 61 12_Fireball
62 ZZZ 레이저 ZZZ LASER 1 750 000 000 0.07 62 12_Laser
63 ZZZ 미사일 ZZZ MISSILE 2 000 000 000 0.1 63 12_Missile
64 ZZZ 폭발레이저 ZZZ BLAST_SNIPER 2 000 000 000 0.1 64 12_Rocket

Tham số phụ theo GunType (mặc định giống nhau trừ khi ghi rõ): ShotgunPelletCount 2 (súng #12, #16 = 3) · ShotgunSpreadAngle 20 (SHOTGUN = 10) · ExplosionRadius 3 → 5 / 5.5 / 6 / 6.5 / 7 / 9 theo bậc EXPLOSIVE · MissileExplosionRadius 5 → 9 / 10 / 11 / 13 theo bậc MISSILE · MissileSpeed 35 hoặc 50 · MissileElevationMin/Max 1 / 3 · BlastSniperExplosionRadius 3 → 5.5 / 6.5 / 8 · PenetratingBulletLifetime 2 (mọi khẩu).

CẢNH BÁO nguồn: Gun_manager chứa const URL Google Sheet …/export?format=tsv&range=A2:I66 (65 hàng × 9 cột — đúng bằng kích thước Gun_list). Nhưng Gun_manager.Balance_Reload (RVA 0x2B0AB4C) là DEAD CODE (G144) ⇒ bảng súng thực tế đọc từ scene, không phải từ sheet. Bảng trên là bảng ship thật.

3.3 7 GunType + đạn/FX

enum GunType (TypeDefIndex 8226, dump.cs:596519): SINGLE=0, LASER=1, PIERCE=2, SHOTGUN=3, EXPLOSIVE=4, MISSILE=5, BLAST_SNIPER=6.

GunType Số khẩu Handler va chạm Họ FX trúng
SINGLE 8 HitSingle Normal
SHOTGUN 5 HitSingle (tán ở phía bắn) Normal
PIERCE 13 HitPierce Laser
LASER 13 HitLaser Laser
EXPLOSIVE 12 HitExplosive Fireball
MISSILE 10 HitExplosive + bay parabol Missile
BLAST_SNIPER 8 HitBlastSniper Rocket
Tổng 65

3.4 Đạn, FX nòng, FX trúng — KHỐI LƯỢNG VFX LỚN NHẤT CỦA GAME

Mục Số lượng Bằng chứng
Pool Bullet 27 GameObject Bullet (n) Polling_manager.Polling_List[0].Objects = 27, scene 20317279
Bullet.Skin_particles 65 (1 slot / khẩu) scene 20794906
Pool Bullet_FX 10 GameObject Polling_List[1].Objects = 10
Bullet_FX.Skin_particles 65 (1 slot / khẩu) scene 20808833
Biến thể FX trúng riêng biệt 45 45 GameObject con của Bullet_FX, tên <bậc>_<họ>
Bullet_Mesh (mesh đạn) 1 215 instance scene, đếm component
Gun (vật thể súng cầm tay, có Shoot_particle = muzzle) 345 instance; 65 slot / Cat.Gun_list scene, Cat fileID @20912670
ParticleSystem tên Muzzle 345 đếm từ scene

45 biến thể FX trúng (phủ theo bậc, không phải bậc nào cũng có đủ 5 họ):

Họ Bậc có FX Số biến thể
Normal 0–4 5
Laser 1–12 12
Fireball 2–12 11
Missile 4–12 9
Rocket 5–12 8
Tổng 45

Mỗi biến thể FX là 1 prefab-node có nhiều ParticleSystem con (Glow, Ring, Trail, SparkTrail, SemiCircles, SmokeTrail, InnerRing, WhiteGlobe, Mesh, Beam, CloudBurst, Nova, Sphere, FireBall, SmokeClouds, GlowFlare, Center, Circle…). ⇒ Đây là lý do scene có 7 718 ParticleSystem (§11).

3.5 UI súng

Panel / thành phần Số Bằng chứng
Canvas/Gun_manager/GunCollection_UI 1 702 obj, Gun_Item_Collection 65 panel tree + đếm instance
Canvas/Gun_manager/GunInfo_UI (Gun_Info_UI) 33 obj, Degree_objs 13 scene 20420869
Canvas/Gun_manager/Draw_Info_UI (gacha) 35 obj panel tree
Canvas/SafeArea/Gun_UI (SafeArea)/GunList_UI 669 obj panel tree
Gun_Item_List: Gun_Item_Pool 16, SlotTransforms 16 16 ô kho scene 20637063
NewGun_UI, Gun_Merge_Tutorial 1 + 1 panel tree

3.6 Súng thưởng quảng cáo — R1-OUT

Gun_manager: AD_Gun_SlotIndex, AD_Gun_Num, AD_Gun_EndUtcTicks, AD_GUN_EVENT_GUN_NUM = 14 (tức súng #14 유탄 발사기, EXPLOSIVE bậc B), AD_GUN_EVENT_COOLTIME = 1800 s. Bật/tắt bằng cờ remote weapon_02_ad_onoff (ServerConfig, 15 field). Method: AddAdRewardGun, AdRewardGun_TryWatch/Acquire/Expire, CheckAdGunEvent. Trạng thái: R1-OUT — cơ chế được ghi nhận, SDK ads không tích hợp.


4. BOOSTER / BUFF / RELIC / UPGRADE

4.1 AD_Type — 10 vị trí thưởng quảng cáo (R1-OUT)

dump.cs:584959. Mỗi giá trị = một chỗ game mời xem quảng cáo lấy thưởng.

# AD_Type Gate cái gì
0 Money_Buff buff tiền ×3
1 Power_Buff buff sát thương ×3
2 SpeedRun_Bonus thưởng thêm chế độ Play
3 Mine_Bonus thưởng thêm Mine
4 Boss_Bonus thưởng thêm Boss
5 Monster_Bonus thưởng thêm Hunt
6 Mission_Reward thưởng nhiệm vụ
7 Fish_Gacha quay cá miễn phí
8 Upgrade_Rebirth rebirth cường hoá ×3
9 AD_Reward_Gun súng thưởng quảng cáo (§3.6)

4.2 Buff

Mục Giá trị Bằng chứng
Số nút buff 2 (PowerBuff_Btn, MoneyBuff_Btn, class Buff_Btn) scene Buff_manager.Buff_Btn_list = 2 @20339104
BUFF_DURATION 300 s / lần dump.cs:592886
BUFF_MAX 900 s trần dump.cs:592886
Buff vĩnh viễn IsPermanentBuff (mua IAP) metadata
Panel Canvas/Buff_manager/Buff_UI 60 obj; Buff_Panel ×2 panel tree
Icon HUD On_obj / Off_obj mỗi nút scene Btn_list

4.3 Relic — 15 relic (Relic_manager, scene 20345666)

3 loại lõi (Core_Type: Forest=0, Desert=1, Tundra=2, ALL=3) × 5 relic. Bảng nâng cấp: Damage_Balance / Money_Balance / CriDmg_Balance mỗi mảng 300 phần tửcấp tối đa 300. DrawPrice = 20. Relic_Item_List 15 UI item.

# Relic_Type Lõi Tác dụng
0 Dmg_0 Forest sát thương
1 Dmg_1 Forest sát thương
2 Dmg_2 Forest sát thương
3 Rebirth (11) Forest hệ số thưởng rebirth
4 Skip (12) Forest bỏ qua màn
5 Money_0 (3) Desert tiền
6 Money_1 (4) Desert tiền
7 Money_2 (5) Desert tiền
8 Offline (10) Desert thu nhập offline
9 Skip (12) Desert bỏ qua màn
10 CriDmg_0 (6) Tundra chí mạng
11 CriDmg_1 (7) Tundra chí mạng
12 CriDmg_2 (8) Tundra chí mạng
13 MoveSpeed (9) Tundra tốc chạy
14 Skip (12) Tundra bỏ qua màn

Static tích luỹ: Dmg_Value, Money_Value, CriDmg_Value (InfVal), MoveSpeed_Value, Offline_Value, Rebirth_Value, Skip_Value (int).

Bảng giá trị relic (đợt 4, disasm-proven — G360/G361): Balance_Reload (0x2ADFE20) xây một đường cong InfVal[300] seed 105, arr[i] = ToPrecision(arr[i-1] × 1.05, 3) − 100, dùng chung cho Damage / Money / CriDmg (⇒ 300 cấp mỗi relic, khớp 3 mảng 300 phần tử). Value_Reload (0x2ADF8F0): baseline Dmg/Money/CriDmg = 100, Rebirth = 100, MoveSpeed/Offline/Skip = 0; bậc _0 / _1 / _2 cùng loại = đường cong ×1 / ×1.5 (bỏ thập phân) / ×2; relic đơn lẻ tuyến tính: MoveSpeed & Skip = 2·Lv+2, Offline = 10·Lv+10 (phút), Rebirth = 5·Lv+5. ⇒ Cho artist: 15 icon relic, 3 lõi, 5 mẫu tác dụng — số liệu không cần thêm asset. Panel: Relic_Info_UI (33 obj), Relic_Draw_Popup (196 obj), Relic_DownPanel, Draw_Relic_Btn ×2, Relic_DrawMode_Btn ×4, Relic_Item_Demo ×27.

4.4 Upgrade thường — 3 dòng

Upgrade_manager scene 20353393. Upgrade_list = 3: Power, Speed, Money. Upgrade_Anim_objs 3. MaxLv = 10000. Bảng serialize trong scene: Price_balance 10 001 · Power_balance 10 001 · Money_balance 10 001 · Speed_balance 10 001 int. (Xem doc 01/09 cho công thức; G138a: các bảng này là iterated truncation, không phải 1.08^lv.)

4.5 Upgrade rebirth — 3 dòng

Rebirth_manager scene 20451280. Upgrade_list = 3: Power (@20451293), Speed (@20491302), Money (@20531311); mỗi dòng có MaxLv 20000 + Value_balance riêng. Price_balance 20 001 (@20571320). Panel: RubyUpgrade_UI (81 obj), Rebirth_Popup_UI, Rebirth_Popup_UI (AD), Rebirth_Popup_UI (IAP), Rebirth_FX (11 obj), Rebirth_Upgrade_Item ×3.

Phần tử UI đếm được trên panel chạy thật ([liveops catalog: 31_panel_Rebirth.png]): 3 thẻ nâng cấp (Power Increase / Speed Increase / Money Increase, mỗi thẻ Lv.0 +0%, giá 3 Ruby) · 1 icon tiền tệ Ruby · 1 ô "Phần thưởng khả dụng" · 1 nút Rebirth · 1 khối "Super Rebirth! ×3" kèm nút quảng cáo 1/1. ⇒ art cần: 1 icon Ruby + 3 icon nâng cấp + 1 badge ×3 + nền panel.

4.6 Các gói/booster liveops (lịch cố định trong binary, xem [liveops catalog: LIVEOPS_SURFACE.md] §6)

Hệ Số item Panel (obj) Trạng thái
StepUp 5 bậc, 7 ngày Shop_manager/StepUp 208 SHIPPED (IAP = R1-OUT)
DailyGun 3 sản phẩm, xoay theo tuần Shop_manager/DailyGun 124 SHIPPED
WeeklyShop / VIP 4 vị trí (hud, auto_weapon, auto_pet, auto_fish) Shop_manager/WeeklyShop 226 SHIPPED
PlusPack 3 loại (auto/reward/time), 7 ngày Shop_manager/PlusPack SHIPPED
DiaPig tick 60 s Shop_manager/DiaPig 57 SHIPPED
DailyCheck 7 phần thưởng, Dia 70,200,400,600,800,1000,1500 SafeArea/DailyCheck 127 SHIPPED
OfferWall (Tapjoy) remote-gated Shop_manager/OfferWall R1-OUT
FreeCash (Almedia) remote-gated Canvas/FreeCash_manager 29 R1-OUT
AutoUpgrade_UI nút Auto Shop_manager/AutoUpgrade_UI 32 SHIPPED

5. KẺ ĐỊCH (Enemy)

5.1 Enemy.Type — 6 loại

dump.cs:595437: Tree=0, Tree_SpeedRun=1, BossMonster=2, Monster=3, Ore=4, RaidBoss=5. Class chung Enemy (Health_Now/Max, Money, Enemy_Slider, Bounce_Custom) — 1 933 instance trong scene.

Loại Class Instance trong scene Sprite Trạng thái
0 Tree Tree 501 (5 Tree_Grid × 100 + Boss_tree 1) 40 (§5.2) SHIPPED
1 Tree_SpeedRun Tree_SpeedRun 190 (SpeedRun_manager.Tree_list) dùng lại Tree_sprites SHIPPED
2 BossMonster Boss 1 (9 skin) 9×3 head (§5.4) SHIPPED
3 Monster Monster 240 (NonSpawned_Monster) 20 (§5.3) SHIPPED
4 Ore Ore 1 000 (Mine_manager.Ore_list) 2 (0_2, 1_dia) SHIPPED
5 RaidBoss Raid_Boss 1 (5 skin) 5 texture worm HIDDEN

5.2 Cây (Tree) — 4 bậc × 10 chủ đề map = 40 sprite

Tree_manager fileID 119647, scene dòng 20614875. Tree_sprites = 40 (0_9, 1_10, 2_5, 3_5, 4_0, 5_9, 6_1, 7_8, 8_5, 9_1, 10_5, 11, 12_1, 13_1, 14_0, 15_1, 16_2, 17_0, 18_0, 19_2, 20_2, 21_0, 22_2, 23_2, 24, 25_0, 26_0, 27_0, 28_0, 29, 30, 31_0, 32, 33_0, 34, 35_0, 36_0, 37_0, 38_0, 39_0).

Bậc cây = 4 — disasm-proven tại Tree_manager..cctor RVA 0x2B46094: - Degree_Health_Balance = { 1, 1.8, 3, 35 } - Degree_Money_Balance = { 1, 1.8, 3, 100 }

Đây là giải một UNKNOWN của doc 05 §5 (trước ghi "công thức chưa biết"): bản thân hai mảng hệ số nay đã đọc được từ .cctor. Công thức stage cũng đã đọc (G395): Balance_Reload xây Stage_Health_Balance / Stage_Money_Balance từ seed 250 / 20, mỗi stage ×3 cắt về 2 chữ số có nghĩa — mảng scene 5 000 mục khớp (250, 750, 2200, 6600, 19000…).

Tree_Grid.degreeRatesfloat[5,4]5 level/stage × 4 bậc cây, kích thước đọc từ xmmword_105CBF0 = [5,4] (Tree_Grid..cctor RVA 0x2B44288). Bốc bậc bằng Degree_Random_return(Level) = roulette 0..100 trên hàng Level (RVA 0x2B440D8).

Giá trị 20 float — ĐÃ ĐỌC (G353 / G701, blob metadata 0x92ABF8, SHA-256 == tên field, hàng-chính):

Level bậc 0 bậc 1 bậc 2 bậc 3
0 80 % 20 % 0 0
1 50 % 45 % 5 % 0
2 20 % 55 % 25 % 0
3 5 % 35 % 60 % 0
4 0 15 % 85 % 0

Mỗi hàng cộng đúng 100. Cột bậc 3 (hệ số ×35 máu / ×100 tiền) luôn 0 ⇒ cây bậc cao nhất không bao giờ được bốc ngẫu nhiên từ lưới — nó chỉ có thể là Boss_tree (1 instance riêng). Cùng blob khởi tạo OfflineProgressSimulator.DegreeRates nên mô phỏng offline dùng đúng phân bố này. Đóng G199. Thêm hai bảng Monster_manager (G353): MonsterCountPerLevel {90, 120, 160, 200, 240}, SpawnIntervalPerLevel {0.35, 0.2, 0.17, 0.12, 0.08} s — chỉ số hàng chưa đọc (§13).

5.3 Quái (Monster / chế độ Hunt) — 20 sprite, 10 màu

Monster_manager fileID @scene 20297237. Monster_sprites 20 (0_3,1_8,2_8,3_3,4_9,5_1,6_4, 7_5,8_7,9_7,10_7,11_1,12,13_3,14,15_2,16_3,17,18_1,19), Monster_Colors 10, Health_Balance 2 000 wave, pool NonSpawned_Monster 240.

Chọn sprite — disasm-proven Monster_manager.SkinSprite_return RVA 0x2AFB480: index = (Wave_Now % 10) * 2 + (is_boss ? 1 : 0) Chọn màu — MonsterColor_return RVA 0x2AF9250: Monster_Colors[Wave_Now % 10]. ⇒ 10 chủ đề wave × 2 biến thể (thường / quái-boss) = 20 sprite. Cả 20 đều dùng.

Monster không có Animator — chuyển động/nhấp nháy bằng MaterialPropertyBlock (ID_TimeOffset, ID_AnimSpeed, ID_ScaleAmount), 2 cỡ Size_Big / Size_Small.

5.4 Boss — 9 con rồng

Boss_manager scene 20443894: Boss_Head_sprites 9, Boss_Head_Die_sprites 9, Boss_Head_Idle_sprites 927 sprite đầu (3 trạng thái × 9 boss). Health_Balance 1 000 stage. SweepEfficiencyPct = 70.

Boss.Skin_obj = 9 GameObject (scene 20655096..20655104): BlackDragon, EmeraldDragon, GoldenDragon, GreenDragon, GreyDragon, IceDragon, MechanicalDragon, PurpleDragon, RedDragon. Texture: Assets/Texture2D/<Name>.png9 sheet 2048×1024, ASTC 8×8 (asset_lane §0). Boss Animator (khác Monster/Pet).

5.5 Raid Boss — HIDDEN (chưa phát hành)

Raid_Boss.Skin_obj = 5 (scene 21128970..21128974): GreenWorm, IceWorm, MechanicalWormTypeB, MosquitoWorm, VolcanoWorm. Texture tương ứng có mặt trong Assets/Texture2D/ (5 file) + Raid.png. Raid_manager (root m_IsActive: 0): BossCount = 5, GameTime_Max = 30, BossReward_Value = 10, Gun_List/Gun_Index_List 3 ô. Mọi mảng serialize đều RỖNG trong scene (Health_Balance: [], Slot_list: [], gunSelect_panel: {fileID: 0}) ⇒ chế độ chưa được cân bằng/nối dây. UI thì đủ: Canvas/Contents_UI/Raid_UI 690 obj (Raid_Start_UI 134, Raid_GunSelect_Popup 501, GameEnd_obj 54) + Canvas/SafeArea/Raid_UI 19 obj.

Xác nhận CHẠY THẬT 2 lần: quét Stage_Value_Max lên 1000 (mở toàn bộ 7 cổng) ở cả ⇒ Raid là nội dung chưa phát hành, đã được chứng minh cả tĩnh lẫn động. Xem G153, G177.

Giá trị ước lượng cho hoạ sĩ: nếu làm chế độ tương tự thì phần UI đã có sẵn quy mô tham chiếu — 690 GameObject UI + 5 skin boss (5 texture) + Raid.png. Đây là "chi phí một chế độ chơi" đo thật.

Luật đã đọc (G406, doc 07 §2.12): 5 boss = 5 tuần xoay vòng (tuần kể từ 2024-01-01 mod 5) ⇒ mỗi worm là "boss của tuần"; mỗi tuần một loại súng được buff (EXPLOSIVE / LASER / MISSILE / BLAST_SNIPER / PIERCE) ⇒ hoạ sĩ cần icon/badge cho 5 loại súng buff; loadout 3 ô; màn 30 s; boss hồi sinh sau mỗi lần giết. Art cần: 5 worm + 5 badge súng + panel chọn súng (501 obj đã có).

5.6 Thanh máu & phụ trợ kẻ địch

Component Instance Vai trò
Enemy 1 933 thân chung
EnemyColl 1 933 collider chuyển tiếp
Enemy_Slider 1 931 thanh máu (2 tầng, xem doc 06)
SpriteFill 1 931 tô thân địch khi trúng
Bounce_Custom 1 939 squash-stretch khi trúng
SlicedFilledImage 93 thanh UI (không phải máu địch)

6. STAGE / MAP / BACKGROUND

6.1 Stage chính (chặt cây)

Mục Giá trị Bằng chứng
Stage tiền-tính 5 000 (PrecomputedStageCount) dump.cs:602135; scene Stage_Health_Balance / Stage_Money_Balance mỗi mảng 5 000
Level / stage 5 (Level_Now 0..4) Tree_manager.StageAdvance RVA 0x2B45820; degreeRates [5,4]
Hiển thị "Stage {Stage+1}-{Lv+1}" GameSlider.Stage_Reload RVA 0x2B156E4
Chủ đề map 10 Ground_sprite_list 10 (scene 20634957)
Sprite nền đất 10 (0_6, 1_1, 2_0, 3_4, 4_8, 5_4, 6g, 7g, 8_1, 9g) scene
Map_Grid 12 ô lưới map scene Map_Grid_list @20634943
Mỗi Map_Grid Border_Up_sprite_list 10 · Border_Down_sprite_list 10 · Upper_sprite_Color_list 10 scene 20825393
Sprite cây 40 = 10 chủ đề × 4 bậc scene 20614886
Tree_Grid 5, mỗi cái 100 Tree scene

Bộ art 1 map = 1 nền đất + 1 border trên + 1 border dưới + 1 màu upper + 4 sprite cây. 10 map × 7 asset = 70 asset cho toàn bộ stage chính.

6.2 Các chế độ khác

Chế độ Nút HUD Bảng độ khó Map / pool Panel (obj) Trạng thái
Main (chặt cây) 5 000 stage 10 map, 501 Tree Main_UI 199 SHIPPED
Play (SpeedRun) SpeedRun_Btn clamp(15·Stage + 20, 20, 190) cây × bậc 1 / 1.8 / 3 trên đường cong stage; 60 s; thưởng 30 dia (×4 auto) — G406 vòng tròn (ring, bán kính scene 22 / 70), 190 Tree_SpeedRun, map = Ground_sprite_list[Stage % 10] Contents_UI/SpeedRun_UI 301 SHIPPED
Mine Mine_Btn – (điểm = Dia) 1 000 Ore, 2 sprite quặng, Perlin noise (noiseScale 0.085, noiseThreshold 0.517) Contents_UI/Mine_UI 235 SHIPPED
Hunt (Monster) Monster_Btn 2 000 wave; mỗi wave 5 level, giết 90/120/160/200/240 con, spawn mỗi 0.35/0.2/0.17/0.12/0.08 s; máu wave 500 → 1 500 → 4 500 (×3); quái to (xác suất Lv × 0.2) máu ×3; rào HP = 1 (một lần xuyên = thua); thưởng 30 PetCoin/level — G408 20 sprite, 10 màu, 240 pool; spawn theo ellipse xoay 45° Contents_UI/Monster_UI 253 SHIPPED
Boss Boss_Btn 1 000 stage; máu 50 000 → 250 000 → 1.2 M (×5); 60 s; thưởng 150 dia — G408 9 rồng × 3 sprite đầu, skin = Stage % 9 (xoay 9 rồng) Contents_UI/Boss_UI 304 SHIPPED
Trip (Adventure) Adventure_Btn Exp_balance 15 cấp 3 bối cảnh map (Forest/Desert/Glacier), 5 bậc mở, 3 slot pet Adventure_manager 955 + Adventure_UI (SafeArea) 573 SHIPPED
Fish Fish_Btn 13 bậc cá bể 20 ô (Fish_item 0..19) Fish_manager 110 + Fish_UI 190 SHIPPED
Raid (không có nút) rỗng trong scene; code: boss của tuần = tuần kể từ 2024-01-01 mod 5 (vd 2026-09-05 = tuần 139 → index 4, BLAST_SNIPER), 30 s, súng buff theo tuần, 3 ô loadout tối thiểu 2, 10 dia (20 auto); boss raid không rơi tiền (Spawn(Health, 0)) — G406, G412 5 worm xoay theo tuần Contents_UI/Raid_UI 690 HIDDEN

Stage mở từng chế độ (cho hoạ sĩ lên lịch content — đọc từ 7 handler Content_Btn_*, G395): Stage_Value_Max đếm 10 mỗi stage, ngưỡng là bội của 10 ⇒ mở ở level 1 của stage hiển thị:

Chế độ Ngưỡng Stage_Value_Max Mở ở stage hiển thị Ghi chú cho hoạ sĩ
Rebirth 20 3-1 panel prestige phải sẵn sàng rất sớm
Mine 30 4-1 màn 60 s, quặng trong vành r 8..20 (nhiễu Perlin), chỉ 100 quặng đầu có sprite dia (quirk SOT)
Fish 50 6-1 13 bậc cá, bể 20 ô
Boss 90 10-1 9 rồng
Pet 110 12-1 13 Spine
Hunt (Monster) 110 12-1 20 sprite quái, 10 màu
Trip (Adventure) 340 35-1 3 bối cảnh map

Chưa đủ ⇒ alert bản địa hoá "mở ở stage N" qua UI_manager.Alert (round-robin 3 Alert). Máu/tiền cây theo stage: seed 250 / 20, ×3 mỗi stage cắt 2 chữ số (§5.2, G395). Chủ đề map = Stage_Now % 10 (10 chủ đề lặp mỗi 10 stage — stage 2 là candy, G406); Play dùng lại cùng bảng.

6.3 Trip / Adventure — 3 bối cảnh map, 5 bậc mở, 4 tiền tệ

Cho hoạ sĩ, con số quan trọng nhất là 3 — không phải 15. Panel Trip chạy thật ([liveops catalog: 31_panel_Trip.png], mở bằng Tree_manager.Content_Btn_* sau khi đặt Stage_Value_Max = 1000) hiển thị đúng 3 map, mỗi map một bối cảnh art riêng và một loại Core riêng:

Map (tên UI) Tên trong code Core "Ngày mở" (xoay theo THỨ)
Forest Forest xanh lá T2, T5, CN
Desert Desert cam T3, T6, CN
Glacier Tundra xanh dương T4, T7, CN

Bẫy đặt tên: vùng thứ 3 tên Tundra trong code (Core_Type.Tundra, Map_list[2].Name) nhưng hiển thị là "Glacier" trong UI. Hoạ sĩ đặt tên file theo UI sẽ lệch với code.

Lớp gate thứ 2 — LỊCH THỨ TRONG TUẦN — hoàn toàn không thấy được bằng phân tích tĩnh; chỉ lộ ra khi chạy thật. Nghĩa là art của 1 map chỉ dùng được 3 ngày/tuần ⇒ luân phiên nội dung mà không cần thêm asset. Xem G191.

Số liệu (kết hợp scene + đọc bộ nhớ thật):

Mục Giá trị Nguồn
Map_list 3 nhóm (Forest, Desert, Tundra) scene 20323787
Map_info_list mỗi nhóm 5 bản ghi { is_Enter, Enter_dateTime } scene
Adventure_PetSlot_Unlock_Balance [0, 2, 7]3 slot pet, mở ở Trip Lv 0 / 2 / 7 runtime
Adventure_Duration_Balance [1, 2, 4, 8, 16] giờ — 5 lựa chọn thời lượng chuyến đi. Xác nhận tĩnh: blob .ctor 0x2ADD07C, SHA MATCH (G353) runtime + metadata (blob)
Exp_balance 15 bậc: 10,60,100,130,180,230,280,340,400,470,550,630,720,820,920bảng SỐNG (scene lưu dạng hex blob dòng 20323823 + bộ nhớ runtime khớp). Exp_Balance_Reload (0x2ADAABC, sinh 50,73,…,918) chỉ là fallback khi mảng null/rỗng (G361, đóng G901) scene-YAML (hex blob) + runtime + disasm
MaxLv 15 metadata
Ticket_Max = 20 (quan sát 20/20), nạp 1 vé / 4 h — tĩnh: Ticket_Charge_Interval = TimeSpan.FromHours(4) (RVA 0x2ADAC44); Ticket_Refresh: dưới trần mốc nạp tiến theo số khoảng nguyên, dư mang sang; tại trần mốc đặt về NOW, dư bỏ (G321) scene + runtime + disasm
Tiền tệ Trip 4 icon: Core xanh lá / cam / xanh dương + PrismCore (sao tím) — khớp Currency_Core 4 int + Core_sprites 4 scene + 31_panel_Trip.png
Tab 2: Trip / Ability 31_panel_Trip.png
Banner promo "Mọi Ability đều có thể upgrade!" + nút Mua → PrismCore_Purchase_popup 31_panel_Trip.png

Thưởng: Adventure_Reward_Core_perHour = 20 · Adventure_Reward_Exp_perHour = 10 · Adventure_Reward_Core_PetDegree = 0.1 · PlusPack_Auto_Reduce_Hours = 16.

Panel con: Adventure_Enter_Popup 131 · Adventure_Reward_UI 23 · Adventure_PetSelect_Popup 463 · Adventure_Map_Popup 222 · PrismCore_Purchase_popup 94 · AdventureExit_panel 21 · Adventure_Panel 572. Adventure_RenderTexture_Map (A=0) chứa 19 Pet_Dummy (pet render vào RenderTexture để hiện trên map).

KHÔNG khẳng định "15 map". Scene có 3 × 5 = 15 bản ghi Adventure_Map_Info, nhưng bản chạy thật chỉ vẽ 3 map. Chưa xác định 5 bản ghi/vùng là 5 slot chuyến đi hay 5 map con. Cách chốt: xem §13.

6.4 Fish — 13 bậc, bể 20 ô

Fish_manager scene 20930271. MAX_FISH = 20, MAX_GRADE = 12 (⇒ 13 bậc D..ZZZ), FreeGacha_MaxCount = 5, FreeGacha_NoAdCount = 3, PremiumGachaCost = 200 Dia, GachaChances = [60, 30, 10, 0] (scene; mặc định .ctor 0x2B01D08{40, 30, 20, 10} — G353 — nhưng field serialize nên scene thắng lúc chạy; 4 phần tử = 4 bậc gacha). Bể cá khi nạp save (Fish_Tank.ReloadAll, G327): tank ẩn ⇒ hoãn (_pendingReload); refill ≤ min(Inventory, pool 20); text "{0}<size=25>/{1}" với trần 20; rồi auto-merge chain. Fish_info_list 13 · Fish_sprites 13 · Fish_Real_sprites 13 · Fish_Outline_sprites 1339 sprite cá. Fish_Tank.fishPool 20. Fish_Item component 20.

Bậc Damage CriPer CriVal
0 4 1 8
1 12 2 20
2 36 6 50
3 110 16 120
4 320 39 310
5 970 98 780
6 2 900 100 2 000
7 8 700 100 4 900
8 26 000 100 12 000
9 79 000 100 31 000
10 240 000 100 76 000
11 710 000 100 UNKNOWN¹
12 UNKNOWN¹ UNKNOWN¹ UNKNOWN¹

¹ hai hàng cuối nằm ngoài đoạn đã trích; lấy bằng sed -n '20930340,20930360p' Main.unity.


7. MÀN HÌNH / PANEL UI

Đơn vị đếm: con của Canvas, Canvas/SafeArea, Canvas/Contents_UI (không đếm Canvas component — xem đính chính G152: chỉ 1 Canvas UI thật, 20 cái còn lại là Canvas lồng để override sorting cho Fish_item (0..19)).

Chỉ số Giá trị Bằng chứng
Nhánh gốc dưới Canvas 18 cây scene
Panel cấp 1 78 cây scene
Panel/nhóm cấp 2 73 cây scene
Định danh script duy nhất (fileID+guid) 221 grep -o 'm_Script: {fileID: …, guid: …}' \| sort -u \| wc -l
Trong đó class Assembly-CSharp được instance 191 ánh xạ guid → .cs.meta
Instance UnityEngine.UI 7 991 đếm theo guid
Instance Unity.TextMeshPro 4 957 đếm theo guid
Nút trên HUD chính (Main_UI/Btn_list) 27 cây scene
Sprite trong atlas _UI 374 ar-primary-v1/export/Assets/SpriteAtlas/_UI.json
Sprite trong atlas Cat 125 …/Cat.json
Tổng Sprite asset (export decrypted) 650 ls Assets/Sprite/*.asset

7.1 Cây màn hình đầy đủ (18 nhánh)

A = m_IsActive trong scene · obj = tổng GameObject của nhánh (kể cả chính nó).

Nhánh / panel A obj Class
Gun_manager 1 1 771 Gun_manager
Draw_Info_UI 0 35
GunInfo_UI 0 33 Gun_Info_UI
GunCollection_UI 0 1 702 Gun_Collection_UI
Shop_manager 1 667 Shop_manager
OfferWall 1 1 OfferWall_manager (R1-OUT)
Loading_UI (Inapp Purchasing) 0 17 – (R1-OUT)
PlusPack 1 1 PlusPack
StepUp 1 208 StepUp
DailyGun 1 124 DailyGun
WeeklyShop 1 226 WeeklyShop
DiaPig 1 57 DiaPig
AutoUpgrade_UI 0 32 AutoUpgrade_UI, Mute_Panel
Adventure_manager 1 955 Adventure_manager
Adventure_Enter_Popup 0 131 Adventure_Enter_popup
Adventure_Reward_UI 0 23 Adventure_Reward_popup
Adventure_PetSelect_Popup 0 463 Adventure_PetSelect_popup
Adventure_Map_Popup 0 222
PrismCore_Purchase_popup 0 94
AdventureExit_panel 0 21 Adventure_Exit_Panel
Pet_manager 1 70 Pet_manager
PetInfo_UI 0 34 Pet_Info_UI
Draw_Info_UI 0 35
SafeArea 1 6 593 – (21 con, xem §7.2)
Skin_manager 1 263 Skin_manager
SkinInfo_UI 0 33 Skin_Info_UI
SkinList_UI 0 229 Mute_Panel
FreeCash_manager 1 29 FreeCash_manager (R1-OUT)
FreeCash_UI 0 28
Buff_manager 1 61 Buff_manager
Buff_UI 0 60 Mute_Panel
Relic_manager 1 230 Relic_manager
Relic_Info_UI 0 33 Relic_Info_UI
Relic_Draw_Popup 0 196 Relic_Draw_Panel
Upgrade_manager 1 1 Upgrade_manager (UI ở SafeArea/Ingame/Upgrade_List)
Rank_manager 1 293 Rank_manager
Nickname_Change_UI 0 13 Nickname_Change_UI
Rank_UI 0 279 Rank_UI, Mute_Panel
Info_manager 1 55
Info_UI 0 54 Info_UI (3 Info_Item)
Rebirth_manager 1 138 Rebirth_manager
Rebirth_Popup_UI (AD) 0 15
Rebirth_Popup_UI 0 14
RubyUpgrade_UI 0 81 Rebirth_Panel_UI, Mute_Panel
Rebirth_Popup_UI (IAP) 0 16
Rebirth_FX 0 11 Rebirth_FX
Contents_UI 1 1 784 – (5 con, xem §7.3)
Review 1 12 Review_manager
UI_manager 1 154 UI_manager
Update_Panel / Update_Panel (Forced) 0 21 + 21 – (remote version gate)
Error_UI 0 18
DataLoadExit_UI 0 17
Loading_UI 0 17
Alert_list 1 3 Alert
SpeedBuff_Explain_UI 0 7
Banner_Place_Holder 0 1 R1-OUT
Loading_UI (AD) 0 17 R1-OUT
DiaAttraction 1 3 Dia_Attraction
NewGun_UI 0 20 NewGun_UI, Destroy
GameExit_panel 0 8
Setting 1 82 Setting
DataLoad_UI / DataSave_UI 0 15 + 15 DataLoad_UI / DataSave_UI
Redeem_UI 0 11 Redeem_UI
Setting_UI 0 40
Fish_manager 1 110 Fish_manager
FishDelete_UI 0 26 Fish_DeletePopup
Fishnfo_UI 0 43 Fish_Info_UI
Draw_Info_UI 0 40

7.2 Canvas/SafeArea — 21 nhánh

Panel A obj Class / con
Boss_UI 0 19 HUD in-game Boss: Time_Slider(Boss_Slider), HP_Slider, Exit_Btn, Currency
Pet_UI (SafeArea) 1 590 NewPet_UI 24 · Pet_UI 565
Main_UI 1 199 Loading_UI 17 · EcoMode_Panel_UI 7 · GameFail_obj 5 · GameSkip_obj 5 · Game_Slider 19 · GameWin_obj 9 · Btn_list 121 · Value_Slider 5 · Time_Slider 3 · Currency 7
Adventure_UI (SafeArea) 1 573 Adventure_Panel 572
Tutorial_manager 1 12 4 bước: 0, 2, 3, 4_hand(TutorialArrow_UI)
Ads_Remove (Forced) 0 27 Remove_ForceAds_UI (R1-OUT)
Fish_UI (SafeArea) 1 191 Fish_UI 190
Mission_maanger (sic) 1 3 725 LuxuryPass_Purchase_UI 53 · VipPass_Purchase_UI 71 · NewSeason_UI 153 · NewSeason_UI (forced) 153 · Mission_UI 3 294
Mine_UI 0 14 HUD Mine
Offline 1 44 Offline_Panel_UI 43
SpeedRun_UI 0 19 HUD Play
Ingame 1 42 Upgrade_List 40 (Upgrade_list, 3 Upgrade_Ingame)
Raid_UI 0 19 HUD Raid — HIDDEN
Monster_UI 0 37 HUD Hunt
Gun_UI (SafeArea) 1 670 GunList_UI 669
Shop_UI 0 169 Panel 167
DailyCheck 1 127 DailyCheck_empty 126
Floating Joystick 1 3 FloatingJoystick

7.3 Canvas/Contents_UI — 5 chế độ

Panel obj Con
Monster_UI 253 GameEnd_obj 65 · Monster_Start_UI 122 · GameSweep_obj 65
SpeedRun_UI 301 GameSweep_obj 65 · SpeedRun_Start_UI 123 · GameFail_obj 47 · GameWin_obj 65
Boss_UI 304 Boss_Start_UI 126 · GameWin_obj 65 · GameFail_obj 47 · GameSweep_obj 65
Mine_UI 235 MinePack_Purchase_UI 22 · GameEnd_obj 65 · GameSweep_obj 65 · Mine_Start_UI 82
Raid_UI 690 GameEnd_obj 54 · Raid_GunSelect_Popup 501 · Raid_Start_UI 134 — HIDDEN

7.4 27 nút HUD (Main_UI/Btn_list)

Boss_Btn(+Locked) · DailyGun_Btn(A=0) · OfferWall_Btn(A=0, +Event_obj) · PowerBuff_Btn · SpeedRun_Btn · Mission_Btn(+Mission_Alert_obj) · Gun_Btn · FreeCash_Btn(A=0) · Monster_Btn(+Locked) · WeeklyShop_Btn(A=0) · EcoMode_Btn · Skin_Btn · Mine_Btn(+Locked) · SpeedBuff_Active_obj(A=0) · Rank_Cheat_objRank_Btn · Shop_Btn · Adventure_Btn(+Locked) · Rebirth_Btn(+Locked) · DailyCheck_Btn · Fish_Btn(+Locked) · Pet_Btn(+Locked) · Setting_Btn · StepUp_Btn(A=0, StepUp_Hud) · Info_Btn(A=0) · MoneyBuff_Btn · DiaPig_Btn · Auto_Btn.

7 nút có Locked_obj = 7 cổng mở khoá, khớp 100 % thang G151: Rebirth ≥20 · Mine ≥30 · Fish ≥50 · Boss ≥90 · Pet ≥110 · Hunt ≥110 · Trip ≥340 (biến cổng: Tree_manager.Stage_Value_Max = Level_Now + 10·Stage_Now).

LỚP GATE THỨ BA — TUTORIAL (chỉ thấy khi chạy thật, G192). Trên save mới, HUD chỉ hiện 2 nút: SpeedRun_BtnSetting_Btn. Các nút Shop, Gun, Skin, Mission, DailyCheck, Auto, Eco, DiaPig, buff ×2 do TUTORIAL mở, không phải do Stage_Value_Max. ⇒ Với hoạ sĩ: HUD phải được thiết kế để mọc dần — bố cục không được vỡ khi chỉ có 2 nút.

Ảnh tham chiếu đầy đủ 27 nút trên save đã mở hết: [liveops catalog: 30_all_unlocked_hud.png].

7.5 IAP / shop — 34 product id (R1-OUT)

Con số thẩm quyền là 34 — disasm-proven Shop_manager.ItemIdxFromProductId RVA 0x2B2DE44 (xem doc 10 §6.1 để biết mỗi id trao gì). Lane này bổ sung nguồn thứ hai độc lập: Assets/Resources/IAPProductCatalog.json (8 264 B) khai báo 32 product cho Unity Codeless IAP. Hai nguồn khớp nhau:

34 (code) − 32 (catalog) = 2 = catgunner_luxury_pass + catgunner_luxury_upgrade — hai id này có trong code (ApplyLuxuryPass 0x2B32AA4 / ApplyLuxuryUpgrade 0x2B328F8) nhưng không khai báo trong catalog codeless ⇒ chúng được mua qua đường code, không qua CodelessIAPStoreListener. Đây là thông tin mới, không mâu thuẫn với doc 10.

32 product trong IAPProductCatalog.json:

Nhóm Product id Type
Bỏ quảng cáo remove_forced_ads, remove_all_ads NonConsumable
Gói tiện ích autoupgrade_pack, buff_pack, dia_pack, mine_pack NonConsumable
Kim cương dia_0dia_4 (5) Consumable
VIP vip_pass, vip_pass_2 Consumable
Core (Trip) catgunner_core_100/500/1050/3300, catgunner_core_daily_750, catgunner_core_weekly_1750, catgunner_core_weekly_6000 (7) Consumable
Rebirth catgunner_rebirth_single Consumable
StepUp catgunner_stepup_0..4 (5) Consumable
DailyGun catgunner_dailygun_0..2 (3) Consumable
PlusPack catgunner_pluspack_time/reward/auto (3) Consumable

ĐÍNH CHÍNH RULES §R10 / G149 ("24 IAP"): con số 24 là sai. Đúng là 34 product id (ItemIdxFromProductId 0x2B2DE44, doc 10 §6.1), trong đó 32 khai báo ở IAPProductCatalog.json2 (catgunner_luxury_pass, catgunner_luxury_upgrade) chỉ có ở đường code. mine_ticket, fish_free, banner_enter, banner_reward, banner_weapon, sp_iap, reward_hub, f_cash KHÔNG phải product id — chúng là chuỗi place / khoá analytics / tên màn Almedia (doc 10 đã đính chính LIVEOPS_SURFACE §6.1). Xem G196.

Panel liên quan (đếm instance trong scene): IAP_PriceText 58 · Core_Purchase_Panel 7 · Inapp_Purchase_Panel 6 · Inapp_Purchase_Popup 5 · Dia_Purchase_Panel 5 · VIP_Purchase_Ingame 5 · RemoveAds_Purchase_BannerReward 11 · PlusPack_Inapp_item 7 · Purchase_Btn 3 · VIP_Purchase_popup 2 · SaleValue_UI 12 · BuffPack_Purchase_BannerReward 1 · FreeCash_Banner 13.


8. NHIỆM VỤ / MÙA / BẢNG XẾP HẠNG

8.1 Mission_Type — 4 loại, 23 nhiệm vụ

dump.cs:587114: TreeCount=0, StageClear=1, Rebirth=2, PlayMine=3. Mission_manager scene 20427316: Mission_list 23 · Mission_Item_UI_List 23 · Reward_Normal_list 25 · Reward_Epic_list 25 · Mission_Reward_Slot_List 25 · NormalReward_Get/EpicReward_Get 25 bool · Max_Lv = 25 · Exp_balance = 100/cấp.

# Tên (nguyên bản) Type MissionValue Exp VIP
0–5 0..5.나무 부수기 TreeCount 100 / 300 / 700 / 2 000 / 10 000 / 20 000 10
6–11 6..11.스테이지 클리어 StageClear 5 / 15 / 25 / 50 / 100 / 200 10
12–17 12..17.환생하기 Rebirth 1 / 2 / 3 / 4 / 5 / 6 10
18–19 18..19.광산 플레이 PlayMine 1 / 2 10
20 20.나무 부수기 TreeCount 50 000 20
21 21.나무 부수기 TreeCount 100 000 20
22 22.스테이지 클리어 StageClear 300 20

20 nhiệm vụ thường + 3 nhiệm vụ VIP. Mission_manager.is_Vipstatic (restore từ save bằng một word store chung với is_SeasonStart — G329); HighTier_Gun_Table {16, 18, 20, 22, 24, 25, 27, 29} là static của cùng class (§3.1; nơi dùng chưa đọc).

8.2 Hai tuyến thưởng battle-pass (25 cấp mỗi tuyến)

MissionReward_Type: Dia=0, Gun=1, Core=2. Reward_Degree: Normal=0, Epic=1. RewardStatus_Type: NonClear=0, GetAble=1, Get=2, LuxuryBonus=3.

Cấp Normal Epic
0 Dia 200 Dia 600
1 Dia 240 Dia 720
2 Gun #10 Gun #15
3 Dia 320 Dia 960
4 Dia 360 Dia 1 080
5 Gun #14 Gun #19
6 Dia 440 Dia 1 320
7 Dia 480 Dia 1 440
8 Gun #15 Gun #20
9 Dia 560 Dia 1 680
10 Dia 600 Dia 1 800
11 Gun #19 Gun #24
12 Dia 680 Dia 2 040
13 Dia 720 Dia 2 160
14 Gun #20 Gun #25
15 Dia 800 Dia 2 400
16 Dia 840 Dia 2 520
17 Gun #24 Gun #29
18 Dia 920 Dia 2 760
19 Dia 960 Dia 2 880
20 Gun #25 Gun #30
21 Dia 1 040 Dia 3 120
22 Dia 1 080 Dia 3 240
23 Gun #29 Gun #34
24 Dia 1 160 Dia 3 480

(8/25 cấp mỗi tuyến thưởng súng; còn lại thưởng Dia. Cột type = GunRewardValueGunNum.)

Quy tắc nhận thưởng = TUẦN TỰ, không phải ngưỡng số — disasm-proven Mission_manager.is_Reward_SequenceLocked(Reward_Degree, int Lv) RVA 0x2A71E5C: mốc Lv bị khoá chừng nào còn bất kỳ mốc thấp hơn chưa nhận (claimed[i] == false). Mảng claimed[] đo được 25 phần tử trên save mới ⇒ battle-pass đúng 25 bậc (khớp Max_Lv = 25 và 2 mảng Reward_*_list 25 phần tử trong scene). Nguồn runtime: [liveops catalog: PROBE_RESULT.md] §3.1 (đóng G178 mục 3b).

8.3 Mùa (Season) & xếp hạng

Mục Giá trị Bằng chứng
Season_Num, is_GunSeason, SeasonEnd_Date có trong Mission_manager scene 20427316
Panel mùa mới NewSeason_UI ×2 (thường + forced), 153 obj mỗi cái cây scene
Bảng xếp hạng (PlayFab) 3: StageRanking, BossRanking, MonsterRanking G143 / LIVEOPS_SURFACE.md
UI rank Rank_UI 279 obj · User_Info_UI ×31 · User_BossRank_UI ×12 · User_MonsterRank_Info ×6 · Nickname_Change_UI scene
Achievement KHÔNG CÓ hệ thành tựu riêng không tìm thấy class/enum nào; nhiệm vụ + battle-pass thay thế

9. ÂM THANH

16 AudioClip trong build, tất cả Vorbis .ogg (asset_lane §5). Sound_manager scene 20661551: sfxEntries 15 (đúng 15 SfxType), BGM_main, BGM_contents, blockSameFrameDuplicate = 1, blockCooldownDuplicate = 1, cooldownSeconds = 0.05.

# SfxType Clip Dài
0 Pop Popup1.ogg 0.16 s
1 Button Pop 6.ogg 0.30 s
2 Spawn Special & Powerup 45.ogg 1.86 s
3 Fusion Prize Wheel Spin 2 Reward.ogg 2.43 s
4 Upgrade Special & Powerup 43.ogg 1.50 s
5 Dont ClickyButton5a.ogg 0.27 s
6 Rebirth etfx_explosion_chargeup2.ogg 3.80 s
7 Purchase Prize Wheel Spin 2 Reward.ogg (dùng lại #3) 2.43 s
8 Shoot etfx_explosion_sharp.ogg 0.53 s
9 Select Click.ogg 0.10 s
10 Enter Transition_In.ogg 0.99 s
11 Win Positive.ogg 2.07 s
12 Fail Fail.ogg 0.40 s
13 UnSelect Click.ogg (dùng lại #9) 0.10 s
14 Tick GenericButton14.ogg 0.06 s
BGM_main Relaxed_7_BlossomDrift.ogg 121.26 s
BGM_contents Cute_5_MilkShake.ogg 105.00 s

Clip riêng biệt được dùng: 15 (13 SFX + 2 BGM). Clip KHÔNG dùng: 1espannol.ogg (2.38 s), nằm ở Assets/Resources/references/sounds/ cùng references/sprites/{L_EN,L_ES,L_FR}.pngasset mẫu của SDK (AlmediaLink/Adx), 0 tham chiếu trong Main.unity. R1-OUT.

Khối lượng âm thanh của cả game: 13 SFX + 2 nhạc nền. Đây là con số nhỏ đáng ngạc nhiên — game không có nhạc theo chế độ, không có voice, không có ambience.


10. FONT & BẢN ĐỊA HOÁ

10.1 Font — 13 = 9 TTF thật + 4 BITMAP FONT

A. 9 font TTF thật (dùng qua TextMeshPro / SDF — HUD, panel, mọi text UI):

Font Kích thước binary Ghi chú
NotoSansSC-Bold.ttf 10 549 020 B Trung giản thể
NotoSansJP-Bold.ttf 5 468 188 B Nhật
MPLUSRounded1c-Black.ttf 3 625 868 B
Mitme.ttf 1 520 240 B font chính (Latin/Hàn)
Thai.ttf 754 920 B Thái
ARIAL.ttf 778 552 B trong Resources/
LiberationSans.ttf 350 200 B fallback TMP
Inconsolata-SemiBold.ttf 98 400 B
PerfectDOSVGA437.ttf 81 192 B debug

B. 4 BITMAP FONT — KHÔNG phải TTF hỏng. Chúng là font ảnh: một bảng ký tự 42 glyph + một atlas PNG, vẽ bằng hệ mesh riêng (DamageTextManager.ShowDamageTextDamageTextObject.InitSprites RVA 0x2A544C8DamageTextSprite.InitChar 0x2A55EB8DamageTextSpriteManager.GetSpriteInfo 0x2A560EC), không qua TextMeshPro. m_FontData dài 0 là đúng thiết kế — bảng + PNG chính là cả font.

Font asset Style text (ShowDamageText(key,…)) Dùng ở đâu Glyph Atlas PNG Prefab
Damage "damage" (literal 0x5EA0338) số sát thương thường bay lên 42 Texture2D/Damage.png 512×512 (60 414 B) GameObject/Damage.prefab
Damage (Cri) "critical" (0x5EA0068) sát thương chí mạng ("+" + str) 42 Texture2D/Damage (Cri).png 512×512 (55 278 B) GameObject/Damage (Cri).prefab
Money_Cri "money" (0x5EA4B18) tiền rơi ("+" + Money_str) 42 Texture2D/Money_Cri.png 512×512 (59 857 B) GameObject/Money_Cri.prefab
Dia "dia" (0x5EA0898) kim cương rơi ("+{0}") 42 Texture2D/Dia.png 256×256 (32 312 B) GameObject/Dia.prefab

Bộ 42 glyph (giống hệt nhau ở cả 4 font):

+ . 0 1 2 3 4 5 6 7 8 9 B K M T a b c d e f g h i j k l m n o p q r s t u v w x y z

= 10 chữ số · + · . · 4 đơn vị thang-ngắn cũ B K M T · 26 chữ thường az.

26 chữ az chính là các CHỮ CÁI ĐƠN VỊ mà InfVal_change() sinh ra (a, b, c… = 10³, 10⁶, 10⁹…). Nét vẽ (artwork) của chúng lại là CHỮ HOA. Đó là lý do text sát thương hiện 3.12A trong khi HUD hiện 3.12a từ đúng cùng một chuỗi: chuỗi luôn viết thường, chỉ khác font vẽ nó. Có đúng 1 formatter trong game (InfVal_change RVA 0x44E47D4, 29 caller; mọi overload ToString khác có 0 caller game), và không có ToUpper nào trên đường floating-text. Nguồn: [evidence codegen: UPPERCASE_FINDING.md]; đã xác minh lại độc lập ở lane này (đọc Assets/Font/Damage.assetm_FontData rỗng, 42 index: = đúng bộ trên; 4 PNG có thật).

QUY TẮC BẮT BUỘC CHO HOẠ SĨ / RESTORE — phải giữ nguyên dạng ATLAS. Thay 4 font này bằng một TTF thường sẽ âm thầm làm sai hai thứ: (1) chữ đơn vị chuyển từ nét-HOA sang nét-thường, (2) metric glyph đổi ⇒ số bay lên lệch khoảng cách/kích thước. Cũng KHÔNG được thêm .ToUpper() trong code — chuỗi SOT vốn viết thường. Bài test đúng cho lớp này là so ảnh render với atlas, không phải so chuỗi. ⚠ [SOT: DevXProject] có 4 file .ttf 0 byte bịa ra cho đúng 4 tên này — phải loại bỏ, không được mang vào project.

ĐÍNH CHÍNH G012: báo cáo asset ghi "Font Texture không giải mã được" (10 lỗi export ở ar-primary-v1). Trong bản ar-project-decrypted-v1 thì cả 4 atlas ĐÃ xuất thành công (Texture2D/{Damage, Damage (Cri), Dia, Money_Cri}.png). ⇒ font ảnh không phải gap về nội dung; chỉ là gap về định dạng/đường xuất. Xem G197.

Khối lượng font cho hoạ sĩ: 9 TTF là font mua/miễn phí sẵn có (0 công vẽ); 4 bitmap font = 4 atlas × 42 glyph = 168 glyph phải VẼ TAY (3 atlas 512×512 + 1 atlas 256×256). Đây là hạng mục art dễ bị bỏ sót nhất khi ước lượng.

TMP SDF atlas riêng: ARIAL SDF, LiberationSans SDF (+fallback), MPLUSRounded1c-Black Atlas, Mitme Atlas, NotoSansJP-Bold Atlas, NotoSansSC-Bold Atlas, Thai Atlas, Poppins-{Bold,Medium,Regular,SemiBold} SDF Atlas, Inconsolata-SemiBold Atlas20 texture Alpha8.

10.2 Bản địa hoá — I2 Localization

Chỉ số Giá trị Bằng chứng
Nguồn Assets/Resources/I2Languages.asset (196 775 B) asset
Ngôn ngữ 14 mLanguages
Term 317 đếm - Term:
Component Localize trong scene 819 đếm theo guid
Đồng bộ Google Sheet I2Loc Cat Gunner Localization, key [id đã lược bỏ] asset

14 ngôn ngữ: English en · Korean ko · Japanese ja · Chinese (Simplified) zh-CN · Chinese (Taiwan) zh-TW · Portuguese (Brazil) pt-BR · German de · French (France) fr-FR · Spanish (Spain) es-ES · Thai th · Indonesian id · Malay ms · Vietnamese vi · Russian ru.

2 term đặc biệt là term chọn font theo ngôn ngữ: fontfont (outline) (giá trị: Thai / Mitme SDF / JP / CN …) ⇒ font được hoán theo ngôn ngữ qua I2, không hard-code.


11. VFX

Chỉ số Giá trị Bằng chứng
ParticleSystem trong scene 7 718 (+7 718 ParticleSystemRenderer) đếm type !u!198/!u!199
Biến thể FX trúng đạn 45 (§3.4) 45 con của Bullet_FX
Pool Bullet_FX 10 Polling_manager
Pool Bullet 27 Polling_manager
Particle_Polling (pool hạt) 3: Slime_Polling, Dust_Polling, Money_Polling cây scene
ParticleImage (hạt trên UI) 52 đếm theo guid ParticleImage.dll
Bullet_Mesh 1 215 đếm component
FXThrottle MIN_INTERVAL 0.05 · MIN_DIST_SQ 2.25 · MAX_PER_FRAME 3 dump.cs:596485

11.1 Phân bố ParticleSystem theo tên GameObject (top)

Số Tên Vai trò
1 034 Glow lõi sáng
597 Ring vòng xung
567 Trail vệt
459 SparkTrail tia lửa
345 Muzzle chớp nòng — 1 / vật thể Gun
324 SemiCircles
297 SmokeTrail
297 vfx_ToonProjectile_Fireball01Purple asset gốc gói Toon Projectiles
297 InnerRing
243 WhiteGlobe
216 Mesh mesh đạn
190 Circle / Beam / CloudBurst mỗi loại 190
135 Normal
120 GlowFlare / Center
90 Sphere / Nova / FireBall / SmokeClouds
37 × 45 <bậc>_<họ> 45 gốc FX, mỗi cái pool 37
27 FireFlies
18 GroundSpikes
9 Z Degree FX · shadow FX riêng bậc Z
1–2 GibletExplodeDirt, PortalDust, Slime, Tinysparkles, BasicZoneWhite, GlowCircle, Money

Tổng: 78 tên GameObject-VFX riêng biệt (45 gốc <bậc>_<họ> + 33 tên con/độc lập). Texture VFX gốc trong export: UniqueToonProjectilesVol1_10X10_8K_part1.png, nova_6x3.png, explosion_round_3x3.png, magic_line.png, magic_orb2.png, ice_spikes.png, decal_gibs.png, ToonCircle02_3x3.png, cloud_2x2_soft.png, cloud_2x2_hardshadow.png, sparkle3.png, ring.png, glow1.png, Circle{02,05,_0,_1}.png, rocket_gradient.png, triangle_curve.png, drop.png, HalfCircle.png, Star.png, Pattern.png, Cards.png, CardsLightBeams.png, Coin1..4.png, Fx_Cash.png30 texture VFX.

Mesh VFX: ETFX_AuraVertical, ETFX_Rocket2, Ring02, RingMesh02 (4) — gói gốc EpicToonFX (Assets/Scripts/Assembly-CSharp/EpicToonFX, 13 script).


12. BẢNG TỔNG (dashboard ước lượng khối lượng)

Cột "asset" chỉ loại và số lượng. Không có giờ công — chủ ý theo yêu cầu.

12.1 Theo lớp nội dung

Lớp nội dung Số đơn vị Sprite 2D Spine Texture riêng Audio Prefab/Node Trạng thái
Mèo (nhân vật) 1 class / 3 instance Cat_Foot 2 animator + 10 clip SHIPPED
Skin mèo 25 50 (2/skin) + 25 màu 25 Skin_Item_UI SHIPPED
Pet 10 bậc dùng được (13 bộ art) 13 13 (JSON+atlas+PNG) 13 13 node Skin (New) 10 SHIPPED / 3 HIDDEN
Súng 65 (13 bậc × 5) 65 65 slot Cat.Gun_list, 345 Gun SHIPPED
GunType 7 SHIPPED
FX đạn (trúng) 45 biến thể ~30 texture VFX 45 node + 10 pool SHIPPED
Đạn 27 pool Bullet + 1 215 Bullet_Mesh 4 mesh ETFX SHIPPED
Muzzle 345 Muzzle PS SHIPPED
Cây (Tree) 4 bậc × 10 chủ đề 40 501 instance SHIPPED
Quái (Hunt) 10 chủ đề × 2 20 + 10 màu 240 pool SHIPPED
Quặng (Mine) 2 2 1 000 pool SHIPPED
Boss rồng 9 27 (9 × idle/normal/die) 9 sheet 2048×1024 9 Skin_obj + Animator SHIPPED
Raid worm 5 5 + Raid.png 5 Skin_obj + Animator HIDDEN
Cá (Fish) 13 bậc 39 (3 bộ × 13) 20 ô bể SHIPPED
Map chính 10 chủ đề 10 nền + 10 border-up + 10 border-down + 10 màu 12 Map_Grid SHIPPED
Trip map 3 bối cảnh (Forest/Desert/Glacier) 3 nền map + 4 icon tiền tệ (3 Core + PrismCore) RenderTexture map, 3 slot pet, 5 bậc mở, 5 mốc thời lượng SHIPPED
Relic 15 15 Relic_Item 300 cấp × 3 bảng SHIPPED
Upgrade 3 + 3 (rebirth) 10 001 / 20 001 hàng bảng SHIPPED
Buff 2 icon On/Off SHIPPED
Nhiệm vụ 23 (20 + 3 VIP) 23 Mission_Item_UI SHIPPED
Thưởng pass 25 × 2 tuyến 25 Mission_Reward_Slot SHIPPED
Điểm danh 7 7 DailyCheck_Reward SHIPPED
Gói liveops StepUp 5 · DailyGun 3 · PlusPack 3 · WeeklyShop 4 vị trí · DiaPig 4 panel SHIPPED (IAP R1-OUT)
Màn hình UI 18 nhánh / 78 panel / 73 panel con atlas _UI 374 + Cat 125 2 atlas 4096² ASTC 6×6 221 script identity SHIPPED
IAP 34 product id (32 ở catalog + 2 chỉ có ở code) 58 IAP_PriceText R1-OUT
Âm thanh 15 dùng / 16 có 16 .ogg 15 SHIPPED, 1 R1-OUT
Font TTF 9 20 SDF atlas SHIPPED (font có sẵn, 0 công vẽ)
Font BITMAP (vẽ tay) 4 × 42 glyph = 168 glyph 4 atlas PNG (512² ×3, 256² ×1) 4 prefab text bay SHIPPED — phải giữ nguyên atlas
Ngôn ngữ 14 / 317 term 819 Localize SHIPPED
VFX 7 718 ParticleSystem · 78 tên riêng · 52 ParticleImage ~30 3 pool hạt SHIPPED

12.2 Tổng asset toàn build (từ asset_lane.md + export decrypted)

Loại Số (export decrypted) Số (ar-project-v1) Ghi chú
Scene 1 (Main) 1 505 MB, 142 626 object
Sprite 650 .asset 364 tên duy nhất / 657 object tên gốc là số
SpriteAtlas 2 (Cat 125, _UI 374) packing table ở ar-primary-v1 JSON (G013) 4096×4096 ASTC 6×6
Texture2D 135 .png 134 +9 dragon 2048×1024 ASTC 8×8
AudioClip 15 (+1 ở Resources/references) 16 Vorbis
Font 12 trong Font/ + ARIALResources/ = 13 13 9 TTF + 4 bitmap font (bitmap = bảng 42 glyph + atlas PNG, m_FontData rỗng là đúng thiết kế)
TextAsset 27 (13 Spine JSON + 13 atlas + package.json) 33 +3 TMP + 4 SDK
AnimationClip 21 .anim 15 tên duy nhất
AnimatorController 15 .controller 13 tên duy nhất
Mesh 30 trong Mesh/ (26 Spine + 4 FX) + 20 Shapes primitive 50
Material 76 74
Prefab 32 (28 URP DebugUI + 4 damage-text) 44
Shader 186 .shader dựng lại (234 object) phải qua shader gate
ParticleSystem 7 718 7 718 trong scene, không phải file

13. KHÔNG ĐẾM ĐƯỢC / UNKNOWN (không bịa)

Mục Vì sao Cách lấy
~~Giá trị 20 float của Tree_Grid.degreeRates~~ ĐÃ GIẢI (G353 / G701): đọc blob tại offset metadata, SHA-256 == tên field; bảng ở §5.2. Kỹ thuật này đóng mọi bảng InitializeArray (448/448 toàn build) đóng, xem §5.2
Mission_manager.HighTier_Gun_Table dùng để làm gì Giá trị đã đọc (§3.1) nhưng consumer chưa decompile DataRefsTo slot metadata của field → người gọi
MonsterCountPerLevel / SpawnIntervalPerLevel — "level" là gì 5 phần tử, consumer chưa đọc Decompile spawner của Monster_manager
~~Bảng XP Trip nào sống sau khi nạp save~~ ĐÃ GIẢI (G361): mảng scene (hex blob) sống; generator chỉ chạy khi mảng null đóng, xem §6.3
~~Công thức Tree_manager.GetStageHealth / GetStageMoney~~ ĐÃ GIẢI (G395): seed 250 / 20, ×3 mỗi stage, cắt 2 chữ số có nghĩa (§5.2) đóng
Bảng độ khó chế độ Play (SpeedRun_manager) Class không có field Health_Balance; độ khó suy từ Tree_manager Disasm SpeedRun_manager.Game_Cor
~~Ngưỡng SequenceLocked của Mission~~ ĐÃ GIẢI: không phải ngưỡng số mà là quy tắc nhận tuần tự (0x2A71E5C) đóng, xem §8.2
Ngưỡng LuxuryLocked / VIPLocked của Mission static, chưa đo G147 — probe tiếp
5 bản ghi Map_info_list mỗi vùng Trip là gì Scene có 3 vùng × 5 = 15 bản ghi, nhưng panel chạy thật chỉ vẽ 3 map. Chưa rõ 5 = 5 slot chuyến đi hay 5 map con. KHÔNG được đếm 15 bối cảnh art. Mở panel Trip ở Trip Lv ≥ 10 (mọi bậc Adventure_Unlock_Balance đã mở) rồi đếm thẻ map; hoặc decompile Adventure_Panel.Reload + Adventure_Map_item
Lịch "ngày mở" của Trip nằm ở đâu trong code Quan sát được T2/T5/CN · T3/T6/CN · T4/T7/CN nhưng chưa tìm ra hàm sinh lịch G191 — grep DayOfWeek quanh Adventure_manager
2 hàng cuối Fish_info_list (bậc 11 CriVal, bậc 12) ngoài đoạn đã trích trong lần chạy này sed -n '20930340,20930365p' Main.unity
Tên hiển thị (đã dịch) của từng súng/pet/skin Gun_list[].Nametiếng Hàn thô; bản dịch nằm trong 317 term I2 nhưng chưa nối term↔index Đọc I2Languages.asset và khớp key Gun/…
Backend xác thực Redeem code không thấy endpoint G149 — probe
Vì sao Weapon_Get_Counts chỉ 10 phần tử trong khi có 13 bậc súng header nói "10등급"; có thể là log AppsFlyer chỉ theo dõi 10 bậc đầu Disasm Gun_manager.OnWeaponAcquired RVA 0x2B0A720
Monster có bao nhiêu "biến thể hành vi" biết Size_Big/Size_Small, Freeze(), Barrier_Touched() nhưng chưa dựng hành vi doc 05 §5

14. Raw evidence

Scene (Main.unity, export decrypted) — dòng bắt đầu MonoBehaviour: Monster_manager 20297237 · Gun_manager 20307967 · Raid_manager 20310101 · Polling_manager 20317279 · Shop_manager 20322307 · Adventure_manager 20323786 · Pet_manager 20323954 · Cat_manager 20324813 · Skin_manager 20325750 · Relic_manager 20345666 · Buff_manager 20339104 · Upgrade_manager 20353393 · Rank_manager 20417404 · Gun_Info_UI 20420869 · Pet_Info_UI 20418831 · Mission_manager 20427316 · Pet_Item_List 20429362 · StepUp 20430536 · SpeedRun_manager 20440285 · Boss_manager 20443894 · Mine_manager 20449982 · Rebirth_manager 20451280 · DailyGun 20652226 · Boss 20655082 · Sound_manager 20661551 · Gun_Item_List 20637063 · Tree_manager 20614875 · Bullet_Mesh 20668857 · Bullet 20794906 · Bullet_FX 20808833 · Map_Grid 20825393 · Cat 20912670 · Fish_manager 20930271 · Fish_Tank 21000328 · DailyCheck 21037794 · Raid_Boss 21128955 · Fish_Info_UI 21129831

  • 0x2B0A278 Gun_manager.DrawRandomGunRandom.Range(5·Degree, 5·Degree+5)5 súng/bậc
  • 0x2B0C09C Gun_manager.Has_S_Grade_Gun → quét Gun_Collect[20..24]bậc 4 = S
  • 0x2B0ACE0 Gun_manager.get_AutoMerge_Limit_Degree → trần 6
  • 0x2B0BD90 Gun_manager.Degree_Color_return → index thẳng vào Degree_Colors
  • 0x2B46094 Tree_manager..cctorDegree_Health_Balance {1, 1.8, 3, 35}, Degree_Money_Balance {1, 1.8, 3, 100}
  • 0x2B44288 Tree_Grid..cctordegreeRatesfloat[5,4] (xmmword_105CBF0); giá trị: [evidence codegen: TABLE.md] hàng 14 (G353)
  • [evidence codegen: TABLE.md] — 22 bảng InitializeArray (HighTier_Gun_Table, MonsterCount/SpawnInterval, Adventure Unlock/Duration, GachaChances, DiaRewards, StepUp, DailyGun, Raid) — SHA MATCH 448/448
  • 0x2B440D8 Tree_Grid.Degree_Random_return → roulette 0..100 theo hàng Level
  • 0x2AFB480 Monster_manager.SkinSprite_return(Wave % 10)·2 + is_boss
  • 0x2AF9250 Monster_manager.MonsterColor_returnMonster_Colors[Wave % 10]
  • xrefs_to 0x2B17E78 Pet_manager.Balance_Reload1 data-xref, 0 code-xref = DEAD CODE

dump.cs: :584959 AD_Type · :587114 Mission_Type · :587125 MissionReward_Type · :590227 SfxType · :590250 SfxEntry · :591540 Core_Type · :591551 Adventure_Map_Info · :592149 Relic_Type · :592170 Relic_Info · :592886 Buff_manager · :593002 Cat · :595437 Enemy.Type · :596333 Bullet · :596439 Bullet_Mesh · :596457 Bullet_FX · :596485 FXThrottle · :596504 Gun · :596519 GunType · :596533 Gun_Info · :596609 Gun_manager · :597791 Map_Grid · :602021 Tree_Grid · :602135 Tree_manager

Bitmap font (§10.1 B): [evidence codegen: UPPERCASE_FINDING.md] · [evidence codegen: text_spawn.cs.evidence] (4 style key: "damage" 0x5EA0338, "critical" 0x5EA0068, "money" 0x5EA4B18, "dia" 0x5EA0898) · RVA 0x2A544C8 DamageTextObject.InitSprites · 0x2A55EB8 DamageTextSprite.InitChar · 0x2A560EC DamageTextSpriteManager.GetSpriteInfo · 0x44E47D4 InfVal_change (29 caller, formatter duy nhất) · xác minh lại ở lane này: Assets/Font/{Damage, Damage (Cri), Dia, Money_Cri}.asset (mỗi file 42 index:, m_FontData rỗng) + Assets/Texture2D/{…}.png (512×512 ×3, 256×256 ×1) · gap G012 / G141 / G197

Asset: Assets/Resources/I2Languages.asset (14 ngôn ngữ / 317 term) · Assets/Resources/IAPProductCatalog.json (32 product) · Assets/SpriteAtlas/{Cat,_UI}.json trong ar-primary-v1 (125 / 374) · [report: asset_lane.md] §0/§4/§5

Runtime (lane liveops, read-only — dùng để xác nhận/đính chính số đếm tĩnh): [liveops catalog: PROBE_RESULT.md] §2.1 (Trip: 3 map Forest/Desert/Glacier + lịch thứ + 4 tiền tệ), §2.2 (Rebirth: 3 nâng cấp + Ruby + Super Rebirth ×3), §3 (Adventure_Unlock_Balance [0,1,3,6,10], Adventure_PetSlot_Unlock_Balance [0,2,7], Adventure_Duration_Balance [1,2,4,8,16]), §3.1 (is_Reward_SequenceLocked 0x2A71E5C, claimed[] 25 phần tử) · ảnh: [liveops catalog: 30_all_unlocked_hud.png] (27 nút HUD) và 31_panel_{Boss,Fish,Hunt,Mine,Pet,Rebirth,Trip}.png (7 panel late-game)

Lane khác: [liveops catalog: SCREEN_CATALOG.md] · [liveops catalog: UNLOCK_GATES.md] · [liveops catalog: LIVEOPS_SURFACE.md] · gap list (nội bộ) G012/G013/G139–G154, G170–G193 (lane liveops/monetization), G194–G202 (lane này)