CatGunner CookbookBardCat 1.1.59 · L1 ANALYSIS · tài liệu học
Trang chủCookbook › 13 — Checklist content cho artist
Nguồn: 13-checklist-content-artist.md · Cập nhật lần cuối: 2026-09-05 08:45 +07 · sha256 nguồn 95f4e7026a35

13 — Checklist content cho artist

Nguồn framework: docs/framework/11-content-inventory.md §1–§13 (kiểm kê đếm từng dòng), docs/framework/03-particles-vfx.md §2, docs/framework/04-sound.md §2, docs/framework/05-characters-pets-enemies.md §2, docs/framework/06-juice-game-feel.md §2, docs/framework/08-architecture-and-scale.md §2, docs/framework/10-monetization-iaa-iap.md §6, [liveops catalog: SCREEN_CATALOG.md]. Cấp bằng chứng: L1 ANALYSIS — dựng lại clean-room từ disasm + metadata + quan sát runtime; không phải source gốc. Mỗi dòng bên dưới mang nhãn bằng chứng riêng. Nhãn của doc 11: scene = đọc thẳng từ Main.unity (kèm số dòng), disasm = Hex-Rays tại RVA, metadata = dump.cs, asset = file trong cây export. Trạng thái: SHIPPED = người chơi 1.1.59 chạm được · HIDDEN = có đủ code + asset nhưng không có đường vào · R1-OUT = thuộc SDK ads/IAP, chỉ ghi nhận · UNKNOWN = chưa đếm được.

Mục tiêu

Artist cần biết một game idle thương mại thật ship bao nhiêu content mỗi loại, và mỗi loại cần asset gì (sprite tĩnh, Spine, atlas, màu, âm thanh, font ảnh) để ước lượng khối lượng cho game tương tự. Trang này gom toàn bộ con số đã đếm trong doc 11 thành bảng theo lớp content, mỗi dòng kèm nguồn và trạng thái. Doc 11 chỉ đếm, không ước lượng giờ công — phần "Việc của artist" ở cuối là hướng dẫn suy ra từ các con số, không phải sự thật SOT.

Game gốc làm gì

Tổng quan quy mô (doc 08 §2.2, doc 11 §12.2, SCREEN_CATALOG §1):

Chỉ số Con số Mức bằng chứng Nguồn
Scene trong build 1 (Main), 505 MB export đã giải mã, 142 626 object asset-census doc 11 §12.2
MonoBehaviour instance / định danh script duy nhất / class Assembly-CSharp được instance 30 082 / 221 / 191 scene doc 11 §7
ParticleSystem 7 718 (+7 718 renderer) scene doc 11 §11
Sprite .asset (export) / atlas 650 / 2 (Cat 125, _UI 374; 4096×4096 ASTC 6×6) asset doc 11 §12.2
Texture2D 135 .png asset doc 11 §12.2
AudioClip 16 .ogg (15 dùng, 1 là mẫu SDK) asset doc 11 §9
Spine skeleton 13 (spine 4.1.24, JSON) asset doc 11 §2.2
Font 13 = 9 TTF + 4 font ảnh asset doc 11 §10.1
Ngôn ngữ / term I2 14 / 317 asset doc 11 §10.2

Nhân vật mèo + skin (doc 11 §1)

Tên / id Số lượng Bằng chứng Trạng thái
Class Cat (~100 field) 1 class, 3 instance (Cat_list[0] người chơi, [1..2] AI follower) metadata dump.cs:593002; scene Main.unity:20324824 SHIPPED
Tham số đàn Cat_manager FormationRadius 2.5 · SeparationRadius 1.8 · SeparationStrength 3 scene 20324828..20324830 SHIPPED
Animator mèo Cat.controller, Cat_UI.controller; 10 clip (Idle, Idle_0, Walk, Walk_0, Walk_1, Attack, Death, Death_0, Spawn, Ready) asset SHIPPED
Skin mèo 25 (Skin_list 25; Skin_Unlock, Price_Balance, Skin_Colors, Skin_sprites, Skin_Bone_sprites đều 25) scene 20325750 SHIPPED
Asset mỗi skin 2 sprite (thân + "bone"/nét) + 1 màu; tên sprite là số (0_4, 12_7…) scene SHIPPED
Chỉ số skin (tuyến tính theo index i) Damage = 16·i, Speed = 10·i, Money = 5·i, Price = 100·i Dia scene SHIPPED
Mèo preview UI (Cat_Demo) 3 scene SHIPPED

⇒ Hệ skin = 50 sprite + 25 màu, không Spine, không animation riêng (dùng chung Cat.controller).

Pet (doc 11 §2)

Tên / id Số lượng Bằng chứng Trạng thái
Bậc pet trong Pet_manager.Pet_list 10 hàng; Degree_Colors 13; Pet_sprites 13 scene 20323954 SHIPPED
Kho pet / ô đã chọn 16 ô / 3 ô scene SHIPPED
Nhãn bậc (Pet_Info_UI.Degree_objs) 13: D, C, B, A, S, SS, SSS, X, XX, XXX, Z, ZZ, ZZZ scene SHIPPED
Ánh xạ bậc → Spine 0 Slime · 1 Slime2 · 2 Frog · 3 Acorn · 4 PinkRabbit · 5 BlackCat · 6 Chicken · 7 Pigeon · 8 Dove · 9 Bee · 10 Griffin · 11 Ghost · 12 PillowGhost scene (286 tham chiếu skeletonDataAsset = 13 × 22, node con Skin (New)/0..12) 10 SHIPPED / 3 HIDDEN (G160, G161)
Bộ Spine mỗi pet JSON + .atlas.txt + PNG + _SkeletonData.asset + _Atlas.asset (13 mỗi loại) asset SHIPPED
Money / MoveSpeed bậc 0..9 2.0/2 · 6/4 · 18/8 · 55/14 · 170/22 · 520/32 · 1 600/44 · 4 900/58 · 15 000/74 · 46 000/92 scene SHIPPED
Pet_manager.Balance_Reload DEAD CODE (0 code-xref) ⇒ bảng cố định từ scene disasm RVA 0x2B17E78
UI pet PetInfo_UI 34 obj · Draw_Info_UI 35 · Pet_UI 565 (lưới 16 + 3) · NewPet_UI 24 · Pet_Dummy 19 scene SHIPPED

13 bộ Spine + 13 sprite UI + 13 màu; Griffin / Ghost / PillowGhost có đủ art nhưng không có hàng Pet_Info — art đã xong, gameplay chưa bật.

Súng, đạn, FX đạn (doc 11 §3)

Tên / id Số lượng Bằng chứng Trạng thái
Gun_list 65 khẩu = 13 bậc × 5 (bậc = GunNum / 5); Gun_sprites 65; Degree_Colors 13 scene 20307967; disasm DrawRandomGun RVA 0x2B0A278 SHIPPED
Nhãn 13 bậc (Gun_Info_UI.Degree_objs) D, C, B, A, S, SS, SSS, X, XX, XXX, Z, ZZ, ZZZ scene 20420884..20420896 SHIPPED
Kho súng / ô trang bị 16 ô (-1 trống) / 3 ô scene SHIPPED
GunType 7: SINGLE 8 khẩu · SHOTGUN 5 · PIERCE 13 · LASER 13 · EXPLOSIVE 12 · MISSILE 10 · BLAST_SNIPER 8 metadata dump.cs:596519; scene SHIPPED
Tên súng tiếng Hàn thô trong Gun_list[].Name (ví dụ 초보자 권총, 관통 ZZZ); bản dịch nằm trong 317 term I2, chưa nối term↔index scene SHIPPED (tên hiển thị: UNKNOWN)
Damage bậc thấp → cao 100 (#0) … 7 500 000 000 (#60); AtkSpeed 0.05 – 1.1 scene SHIPPED
Pool Bullet / Bullet_FX 27 / 10 GameObject scene 20317279 SHIPPED
Bullet.Skin_particles / Bullet_FX.Skin_particles 65 / 65 (1 slot mỗi khẩu) scene 20794906, 20808833 SHIPPED
Biến thể FX trúng riêng biệt 45 node <bậc>_<họ>: Normal 5 (bậc 0–4) · Laser 12 (1–12) · Fireball 11 (2–12) · Missile 9 (4–12) · Rocket 8 (5–12) scene (45 con của Bullet_FX) SHIPPED
Bullet_Mesh (mesh đạn) 1 215 instance scene SHIPPED
Vật thể Gun cầm tay (có Shoot_particle = muzzle) 345 instance; 65 slot Cat.Gun_list; 345 PS tên Muzzle scene SHIPPED
UI súng GunCollection_UI 1 702 obj (65 Gun_Item_Collection) · GunInfo_UI 33 · Draw_Info_UI 35 · GunList_UI 669 · kho 16 ô · NewGun_UI, Gun_Merge_Tutorial scene SHIPPED
Súng thưởng quảng cáo gun #14 (유탄 발사기, EXPLOSIVE bậc B), hạn 1 800 s metadata R1-OUT
Tự-ghép AutoMerge_Exclude_Degree = 7 ⇒ không ghép bậc ≥ X metadata + disasm RVA 0x2B0ACE0 SHIPPED
Súng "bậc cao" của Mission (HighTier_Gun_Table) 8 khẩu: #16 드럼 샷건 (A) · #18 플라즈마 캐논 (A) · #20 개틀링건 (S) · #22 화염 캐논 (S) · #24 전갈 미사일 (S) · #25 관통 SS · #27 레이저 SS · #29 폭발레이저 SS metadata (blob SHA-256, G353) + scene Gun_list SHIPPED (nơi dùng bảng: UNKNOWN)
Súng thưởng StepUp / nền DailyGun StepUp 5: #23 유령 저격총 (S) · #28 미사일 SS · #33 미사일 SSS · #39 폭발레이저 X · #44 폭발레이저 XX; DailyGun nền: #20 (S) · #30 (SSS) · #35 (X) metadata (blob SHA-256, G353) + scene SHIPPED (offer R1-OUT, súng là content thật)

Mỗi biến thể FX trúng là một node có nhiều ParticleSystem con (Glow, Ring, Trail, SparkTrail, SemiCircles, SmokeTrail…) — đây là lý do scene có 7 718 ParticleSystem. Đây là khối lượng VFX lớn nhất của game.

Kẻ địch, boss, raid (doc 11 §5)

Tên / id Số lượng Bằng chứng Trạng thái
Enemy.Type 6: Tree=0, Tree_SpeedRun=1, BossMonster=2, Monster=3, Ore=4, RaidBoss=5; Enemy 1 933 instance metadata dump.cs:595437; scene SHIPPED
Cây Tree 501 (5 Tree_Grid × 100 + Boss_tree 1); sprite 40 = 10 chủ đề map × 4 bậc scene 20614875 SHIPPED
Hệ số bậc cây Degree_Health_Balance = {1, 1.8, 3, 35} · Degree_Money_Balance = {1, 1.8, 3, 100} disasm Tree_manager..cctor RVA 0x2B46094 SHIPPED
Tỉ lệ bốc bậc (Tree_Grid.degreeRates float[5,4]) hàng = level 0..4, cột = bậc 0..3: 80/20/0/0 · 50/45/5/0 · 20/55/25/0 · 5/35/60/0 · 0/15/85/0 (%) — bậc 3 không bao giờ bốc từ lưới, chỉ là Boss_tree ⇒ artist: 3 bậc cây thường + 1 boss metadata (blob SHA-256, G353) + disasm consumer SHIPPED
Đặt cây trên lưới 10 × 10 ô, chọn theo đường cong Morton + lấy mẫu cách đều ⇒ phủ đều, tất định; jitter nhỏ disasm (G343) SHIPPED
Tree_SpeedRun 190, dùng lại Tree_sprites scene SHIPPED
Quái Monster (Hunt) 20 sprite (10 chủ đề wave × 2 thường/quái-boss) + 10 màu; pool 240; Health_Balance 2 000 wave; mật độ MonsterCountPerLevel [90, 120, 160, 200, 240], nhịp spawn [0.35, 0.2, 0.17, 0.12, 0.08] s scene 20297237; disasm SkinSprite_return RVA 0x2AFB480, MonsterColor_return 0x2AF9250; blob G353 SHIPPED
Quái không có Animator nhấp nháy bằng MaterialPropertyBlock, 2 cỡ Size_Big / Size_Small metadata dump.cs:594503 SHIPPED
Quặng Ore 1 000 pool; 2 sprite (0_2, 1_dia) scene SHIPPED
Boss rồng 9 (BlackDragon, EmeraldDragon, GoldenDragon, GreenDragon, GreyDragon, IceDragon, MechanicalDragon, PurpleDragon, RedDragon); 27 sprite đầu (idle/normal/die × 9); 9 sheet 2048×1024 ASTC 8×8; có Animator; Health_Balance 1 000 stage scene 20443894, 20655096..20655104 SHIPPED
Raid worm 5 (GreenWorm, IceWorm, MechanicalWormTypeB, MosquitoWorm, VolcanoWorm) + Raid.png; Raid_manager A=0, mọi mảng serialize rỗng; UI Raid_UI 690 obj scene 21128970..21128974 HIDDEN (G153)
Thanh máu / phụ trợ EnemyColl 1 933 · Enemy_Slider 1 931 · SpriteFill 1 931 · Bounce_Custom 1 939 · SlicedFilledImage 93 (UI, không phải máu địch) scene SHIPPED

Stage, map, chế độ chơi (doc 11 §6)

Tên / id Số lượng Bằng chứng Trạng thái
Stage chính 5 000 stage tiền-tính (Stage_Health_Balance / Stage_Money_Balance 5 000); 5 level/stage; hiển thị Stage {S+1}-{L+1} metadata dump.cs:602135; disasm RVA 0x2B45820, 0x2B156E4 SHIPPED
Chủ đề map chính 10 (Ground_sprite_list 10); mỗi Map_Grid (12 ô) có Border_Up 10 · Border_Down 10 · Upper_sprite_Color 10 scene 20634957, 20825393 SHIPPED
Bộ art 1 map 1 nền đất + 1 border trên + 1 border dưới + 1 màu + 4 sprite cây ⇒ 10 map × 7 asset = 70 asset scene SHIPPED
Play (SpeedRun) 190 cây Tree_SpeedRun xếp vòng tròn (bán kính scene 22 / 70), số cây clamp(15·stage+20, 20..190), bậc 1/1.8/3, 60 s, map dùng lại 10 chủ đề (stage % 10); thưởng 30 dia (×4 auto) — G406 scene + disasm SHIPPED
Mine 1 000 Ore, 2 sprite, Perlin noise (noiseScale 0.085, noiseThreshold 0.517), vành r 8..20; màn 60 s; chỉ 100 quặng đầu có sprite dia (quirk game gốc) scene + disasm (G393) SHIPPED
Hunt / Boss Hunt: 2 000 wave × 5 level, 90–240 quái/level, spawn ellipse xoay 45°, quái to máu ×3, rào HP 1; Boss: 1 000 stage, skin = Stage % 9 (9 rồng xoay vòng — đủ art cho mọi stage), 60 s, đĩa HP vẽ bằng Shapes — G408 scene + disasm SHIPPED
Stage mở từng chế độ (lịch content cho hoạ sĩ) Rebirth 3-1 · Mine 4-1 · Fish 6-1 · Boss 10-1 · Pet 12-1 · Hunt 12-1 · Trip 35-1 (ngưỡng 20/30/50/90/110/110/340, Stage_Value_Max đếm 10 mỗi stage; chưa đủ ⇒ cảnh báo "mở ở stage N") disasm (7 handler nút, G395) SHIPPED
Máu / tiền cây theo stage seed 250 / 20, ×3 mỗi stage cắt 2 chữ số (250, 750, 2200, 6600, 19000…) — hoạ sĩ không cần asset thêm, chỉ 4 bậc sprite × 10 map disasm + scene (G395) SHIPPED
Trip (Adventure) 3 bối cảnh map (Forest, Desert, Tundra — UI gọi "Glacier") × 5 bản ghi/vùng (ý nghĩa 5 bản ghi chưa chốt — không đếm 15 bối cảnh art); 5 bậc mở theo Trip Lv [0,1,3,6,10], 5 thời lượng chuyến [1,2,4,8,16] h (blob SHA, G353); MaxLv 15, Exp_balance 15 cấp (scene 10 … 920 là bảng sống — hex blob; công thức trong code chỉ là fallback, G361); vé 20, nạp 1/4 h (xác nhận tĩnh, G321); 4 Core_sprites scene 20323786; doc 11 §6.3, doc 07 §2.9 SHIPPED
Fish 13 bậc (MAX_GRADE 12), bể 20 ô; 39 sprite cá (Fish_sprites + Fish_Real_sprites + Fish_Outline_sprites × 13); GachaChances [60, 30, 10, 0] (scene; mặc định ctor [40, 30, 20, 10] — scene thắng, G353) = 4 bậc gacha, PremiumGachaCost 200 Dia; bể nạp save: hoãn khi ẩn, ≤ 20 con scene 20930271; G327 SHIPPED (2 hàng cuối bảng chỉ số: UNKNOWN)
Raid 5 worm = 5 boss xoay theo tuần (tuần kể từ 2024-01-01 mod 5); mỗi tuần một loại súng được buff (EXPLOSIVE / LASER / MISSILE / BLAST_SNIPER / PIERCE ⇒ cần 5 badge súng); loadout 3 ô; 30 s; boss hồi sinh sau mỗi lần giết; 10 dia (20 auto). Bảng scene rỗng, không có nút HUD — G406 scene + disasm HIDDEN

Màn hình / panel UI (doc 11 §7; SCREEN_CATALOG §3)

Tên / id Số lượng Bằng chứng Trạng thái
Nhánh gốc dưới Canvas / panel cấp 1 / panel cấp 2 18 / 78 / 73 scene SHIPPED
Nút HUD chính (Main_UI/Btn_list) 27, trong đó 7 có Locked_obj = 7 cổng mở khoá (Rebirth ≥20 · Mine ≥30 · Fish ≥50 · Boss ≥90 · Pet ≥110 · Hunt ≥110 · Trip ≥340) scene; G151 SHIPPED
Nhánh lớn nhất Mission_maanger (sic) 3 725 obj (Mission_UI 3 294) · Gun_manager 1 771 · Contents_UI 1 784 · Adventure_manager 955 · Shop_manager 667 scene SHIPPED
Mỗi chế độ chơi (Contents_UI) Monster_UI 253 · SpeedRun_UI 301 · Boss_UI 304 · Mine_UI 235 — mỗi cái có *_Start_UI + GameEnd/Win/Fail/Sweep_obj (~47–65 obj mỗi cái) scene SHIPPED
HUD in-game từng chế độ (SafeArea/{Boss,Mine,SpeedRun,Monster}_UI) 19 / 14 / 19 / 37 obj scene SHIPPED
Raid UI Contents_UI/Raid_UI 690 (Raid_GunSelect_Popup 501) + SafeArea/Raid_UI 19 scene HIDDEN
Instance UnityEngine.UI / TextMeshPro 7 991 / 4 957 scene (đếm theo guid) SHIPPED
Tutorial 4 bước (0, 2, 3, 4_hand) scene SHIPPED
Hệ thống Setting_UI 40 · DataLoad/DataSave_UI 15+15 · Redeem_UI 11 · Update_Panel ×2 · Error_UI · Alert_list · Info_UI 54 · Review scene SHIPPED

Shop, IAP, gói liveops (doc 11 §4.6, §7.5; doc 10 §6)

Tên / id Số lượng Bằng chứng Trạng thái
Product id IAP 34 (32 trong IAPProductCatalog.json + 2 chỉ có ở code: catgunner_luxury_pass, catgunner_luxury_upgrade) — đính chính con số 24 cũ (G162) disasm ItemIdxFromProductId RVA 0x2B2DE44; asset R1-OUT
Nhóm product bỏ quảng cáo 2 · gói tiện ích 4 · kim cương 5 · VIP 2 · Core 7 · Rebirth 1 · StepUp 5 · DailyGun 3 · PlusPack 3 asset R1-OUT
Panel IAP (instance) 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 · SaleValue_UI 12 · FreeCash_Banner 13 scene R1-OUT
StepUp / DailyGun / PlusPack / WeeklyShop / DiaPig 5 bậc, 7 ngày (208 obj) / 3 sản phẩm xoay tuần (124) / 3 loại, 7 ngày / 4 vị trí (226) / tick 60 s (57) scene; metadata SHIPPED (IAP R1-OUT)
DailyCheck 7 phần thưởng Dia 70, 200, 400, 600, 800, 1000, 1500 (127 obj) scene SHIPPED
Buff 2 nút (PowerBuff_Btn, MoneyBuff_Btn), icon On_obj/Off_obj; 300 s / trần 900 s; Buff_UI 60 obj scene 20339104; metadata dump.cs:592886 SHIPPED
AD_Type 10 vị trí thưởng quảng cáo metadata dump.cs:584959 R1-OUT

Relic, upgrade, nhiệm vụ, mùa (doc 11 §4.3–4.5, §8)

Tên / id Số lượng Bằng chứng Trạng thái
Relic 15 = 3 lõi (Forest, Desert, Tundra) × 5; bảng nâng cấp 300 cấp × 3; DrawPrice 20; Relic_Draw_Popup 196 obj, Relic_Item_Demo 27 scene 20345666 SHIPPED
Upgrade thường 3 dòng (Power, Speed, Money), bảng 10 001 hàng × 4 scene 20353393 SHIPPED
Upgrade rebirth 3 dòng, MaxLv 20000, Price_balance 20 001; RubyUpgrade_UI 81 obj, Rebirth_FX 11 scene 20451280 SHIPPED
Nhiệm vụ 23 = 20 thường + 3 VIP; 4 Mission_Type (TreeCount 6+2 · StageClear 6+1 · Rebirth 6 · PlayMine 2) scene 20427316; metadata dump.cs:587114 SHIPPED
Battle-pass 2 tuyến (Normal / Epic) × 25 cấp; 8/25 cấp mỗi tuyến thưởng súng (GunNum), còn lại Dia; Max_Lv 25, Exp_balance 100/cấp scene SHIPPED
Mùa / xếp hạng NewSeason_UI ×2 (153 obj mỗi cái); 3 bảng xếp hạng (StageRanking, BossRanking, MonsterRanking); Rank_UI 279 obj; không có hệ thành tựu riêng scene SHIPPED (trigger reset mùa: UNKNOWN)

Âm thanh (doc 11 §9 — ánh xạ SfxType → clip đã trích từ scene 20661551)

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

Tổng dùng: 13 SFX + 2 nhạc nền = 15 clip; espannol.ogg (2.38 s) là asset mẫu của SDK, 0 tham chiếu — R1-OUT. Chống trùng trong scene: blockSameFrameDuplicate = 1, blockCooldownDuplicate = 1, cooldownSeconds = 0.05. Không nhạc theo chế độ, không voice, không ambience.

Font, bản địa hoá (doc 11 §10)

Tên / id Số lượng Bằng chứng Trạng thái
Font TTF thật (TextMeshPro / SDF) 9: NotoSansSC-Bold, NotoSansJP-Bold, MPLUSRounded1c-Black, Mitme (font chính), Thai, ARIAL, LiberationSans, Inconsolata-SemiBold, PerfectDOSVGA437; 20 SDF atlas Alpha8 asset SHIPPED (0 công vẽ)
Font ảnh (bitmap) 4: Damage, Damage (Cri), Money_Cri, Dia — mỗi font = bảng 42 glyph + 1 atlas PNG (512² ×3, 256² ×1) + 1 prefab text bay asset; disasm DamageTextObject.InitSprites RVA 0x2A544C8 SHIPPED — phải giữ nguyên atlas
Bộ 42 glyph (giống nhau ở cả 4) + . 0–9 B K M T a–z — 26 chữ thường là chữ cái đơn vị của InfVal_change(), nhưng nét vẽ là chữ HOA asset SHIPPED
m_FontData độ dài 0 đúng thiết kế (bảng + PNG chính là font), không phải TTF hỏng — đính chính G012 (xem G163) asset
Ngôn ngữ / term / component Localize 14 / 317 / 819; 2 term font, font (outline) hoán font theo ngôn ngữ asset I2Languages.asset SHIPPED

Đây là lời giải cho UNKNOWN "hoa/thường của đơn vị" ở doc 01 §3.5.1: chuỗi luôn viết thường, chỉ khác font vẽ nó; 1 formatter duy nhất (InfVal_change RVA 0x44E47D4, 29 caller), không có ToUpper trên đường floating-text.

VFX (doc 11 §11)

Tên / id Số lượng Bằng chứng Trạng thái
ParticleSystem 7 718; top tên: Glow 1 034 · Ring 597 · Trail 567 · SparkTrail 459 · Muzzle 345 · SemiCircles 324 · SmokeTrail / InnerRing 297 scene SHIPPED
Tên GameObject-VFX riêng biệt 78 = 45 gốc <bậc>_<họ> (mỗi cái pool 37) + 33 tên con/độc lập scene SHIPPED
Texture VFX gốc 30 (nova_6x3, explosion_round_3x3, magic_line, ring, glow1, Coin1..4, Fx_Cash…) asset SHIPPED
Mesh VFX 4 (ETFX_AuraVertical, ETFX_Rocket2, Ring02, RingMesh02) — gói gốc EpicToonFX asset SHIPPED
Pool hạt Particle_Polling 3: Slime_Polling, Dust_Polling, Money_Polling scene SHIPPED
ParticleImage (hạt trên UI) 52 scene (đếm theo guid) SHIPPED
FXThrottle MIN_INTERVAL 0.05 · MIN_DIST_SQ 2.25 · MAX_PER_FRAME 3 metadata dump.cs:596485 SHIPPED

Công thức / pseudocode

Trang này là bảng kiểm kê. Cách tự đếm lại (doc 11 §0, SCREEN_CATALOG §0 — streaming YAML, không mở cả file 505 MB):

!u!1          -> GameObject: m_Name, m_IsActive, m_Component
!u!4 / !u!224 -> Transform / RectTransform: m_GameObject, m_Father   => cây cha-con
!u!114        -> MonoBehaviour: m_GameObject + m_Script{fileID, guid} => class (qua .cs.meta / .dll.meta)
!u!198 / 199  -> ParticleSystem / ParticleSystemRenderer
# Đơn vị "màn hình" = GameObject con trực tiếp của Canvas, Canvas/SafeArea, Canvas/Contents_UI
# KHÔNG đếm component Canvas (20/21 Canvas là override sorting cho Fish_item)
# Mảng serialize (Gun_list, Skin_list, Pet_list, Tree_sprites…) đọc thẳng tại số dòng ghi trong doc 11

Cách ước lượng asset cho một lớp content (gợi ý, suy từ cấu trúc SOT):

asset(lớp) = số_đơn_vị × asset_mỗi_đơn_vị
  skin mèo : 25 × (2 sprite + 1 màu)
  pet      : 13 × (1 Spine rig + 1 atlas + 1 PNG + 1 sprite UI + 1 màu)
  súng     : 65 × 1 sprite  +  45 FX trúng  +  345 muzzle (1 / vật thể Gun)
  map      : 10 × (1 nền + 2 border + 1 màu + 4 cây)
  boss     : 9 × 3 sprite đầu + 9 sheet 2048×1024
  font bay : 4 × 42 glyph vẽ tay

Bẫy đã gặp

  • 4 font m_FontData rỗng là font ẢNH, không phải TTF hỏng. Thay bằng TTF sẽ âm thầm đổi nét đơn vị (HOA → thường) và metric glyph; cũng không được thêm .ToUpper() — chuỗi SOT vốn viết thường. 4 file .ttf 0 byte trong một export cũ là file bịa, phải loại bỏ (doc 11 §10.1; G012 → G163).
  • Ánh xạ SfxType → clip đã có, nhưng không suy từ tên. Button dùng Pop 6.ogg, Pop dùng Popup1.ogg; 2 cặp dùng chung clip (doc 11 §9).
  • Số IAP là 34, không phải 24. mine_ticket, fish_free, banner_*, sp_iap, reward_hub, f_cash là chuỗi place/analytics, không phải product id (doc 11 §7.5; G162).
  • Bậc súng/pet là 13, không phải 10. Weapon_Get_Counts chỉ 10 phần tử và tooltip nói "10등급" — header sai lệch; code chia 65/5 = 13 bậc (doc 11 §3.1).
  • Content ẩn: Raid (5 worm, 690 obj UI) và 3 bậc pet cao nhất (Griffin/Ghost/PillowGhost). Art đã xong, không có đường vào — đừng tính vào workload "người chơi thấy", nhưng tính vào workload "đã vẽ" (G153, G161).
  • Đếm Canvas không phải đếm màn hình — 20/21 Canvas là canvas lồng cho Fish_item (0..19) (SCREEN_CATALOG §1; G152).
  • Bảng cân bằng là mảng scene, không phải hàm sinhBalance_Reload của Gun/Pet/Upgrade/Rebirth đều dead code (doc 09 §3.2; G138a). Số trong bảng trên đọc từ scene.
  • Tên sprite là số (0_4, 12_7, 20) — tên gốc studio đặt; giữ nguyên, đừng "đặt lại cho đẹp" trong restore.
  • Hai atlas 4096² cho toàn bộ game.spriteatlas không được export (G013) nhưng bảng packing có; sprite Hand vắng trong export (G014) là gap định dạng, không phải content thiếu.

Checklist khi tự làm

  • [ ] Lập bảng content theo lớp trước khi vẽ; mỗi dòng có id, số lượng, asset mỗi đơn vị, trạng thái (shipped / hidden).
  • [ ] Nhân vật chính: 1 rig Animator (~10 clip) + skin = 2 sprite + 1 màu mỗi skin; SOT có 25.
  • [ ] Pet: Spine (1 phiên bản runtime thống nhất), mỗi pet 1 rig + atlas + PNG + 1 sprite UI + 1 màu; SOT có 13 bộ.
  • [ ] Súng: 1 sprite/khẩu (65) + FX trúng theo bậc × họ (45, không phải 65) + 1 muzzle/vật thể súng.
  • [ ] Kẻ địch đông: sprite tĩnh + shader animation (MaterialPropertyBlock), 2 cỡ; rig Animator chỉ cho boss (9) / raid boss (5).
  • [ ] Game feel không cần camera shake / hit-stop: ngân sách art là squash 0.2 s, số bay, hạt (8 hạt dia, 5/15 hạt cây), 15 sfx có volume theo hàng, rung một chỗ (G410).
  • [ ] Chỉ 3 shader sprite tuỳ biến cho toàn game: thanh máu batch (Fill Amount Batched, 1 931 material, premultiplied), quái nhấp nhô (MonsterBounce, 240), cắt kim cương (DiamondClipSprite, 6) — tất cả trong suốt, không LOD (G366).
  • [ ] Map: mỗi chủ đề = nền + 2 border + 1 màu + 4 bậc cây (7 asset); SOT có 10 chủ đề.
  • [ ] Atlas: 2 × 4096² ASTC 6×6 (nhân vật ~125 sprite, UI ~374 sprite); boss dùng sheet riêng 2048×1024 ASTC 8×8.
  • [ ] Âm thanh: 2 nhạc nền + ~13 SFX ngắn (≤ 4 s) là đủ; đầu tư vào chống trùng, không vào số lượng.
  • [ ] Font số bay: 4 atlas × 42 glyph vẽ tay (số, +, ., B K M T, a–z vẽ nét HOA) — hạng mục dễ bị bỏ sót nhất.
  • [ ] UI: ~18 nhánh gốc / ~78 panel; mỗi chế độ chơi có Start_UI + Win/Fail/Sweep; mỗi feature có Info_UI + Draw/Popup; shop–IAP > 40 panel/popup instance.
  • [ ] Bản địa hoá: tách term ngay từ đầu (SOT 317 term, 14 ngôn ngữ, 819 component Localize), có term chọn font theo ngôn ngữ.
  • [ ] Ghi rõ content ẩn trong bảng để không tính nhầm vào workload phát hành.

Việc của artist (hướng dẫn ước lượng, KHÔNG phải sự thật SOT)

Suy từ các con số đã đếm, một game tương tự cần cỡ: 50 sprite skin + 25 màu (1 nhân vật, 25 skin); 13 bộ Spine pet (10 dùng ngay); 65 sprite súng + 45 node FX trúng (mỗi node nhiều particle con) + muzzle; 40 sprite cây + 20 sprite quái + 10 màu + 2 sprite quặng; 9 boss (27 sprite đầu + 9 sheet lớn) và 5 raid boss nếu bật; 39 sprite cá; 10 bộ map × 7 asset; 15 map Trip; 15 icon relic; ~30 texture VFX dùng chung; 2 atlas 4096² (~500 sprite UI/nhân vật); 4 font ảnh × 42 glyph vẽ tay; 15 clip âm thanh; ~78 panel UI + hơn 40 panel/popup shop–IAP. Doc 11 cố ý không quy ra giờ công — con số giờ là việc của team bạn.

Điều chưa biết (UNKNOWN)

Chép từ doc 11 §13 và các mục đang mở:

  • ~~20 giá trị Tree_Grid.degreeRates~~ — ĐÃ GIẢI (G353): bảng ở mục kẻ địch; kỹ thuật SHA-256 đóng mọi bảng khởi tạo mảng còn lại.
  • HighTier_Gun_Table (8 khẩu) dùng để làm gì — UNKNOWN (giá trị đã đọc, nơi dùng chưa).
  • MonsterCountPerLevel / SpawnIntervalPerLevel — "level" là gì — UNKNOWN (consumer chưa đọc).
  • ~~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.
  • Hệ text đang được khôi phục (G397 → G407): font đã kiểm giống hệt game gốc (18 font asset, 5 sprite asset, 27 material); lỗi là tài nguyên mẫu của package che asset gốc (đang xoá); cỡ chữ là dữ liệu scene; số bay sát thương/tiền đã hiện lại (G402). Chưa có claim nào về cỡ chữ cho tới khi xong.
  • Bảng độ khó chế độ Play (SpeedRun_manager không có Health_Balance) — UNKNOWN.
  • ~~Adventure_Unlock_Balance[], Adventure_PetSlot_Unlock_Balance[]~~ — ĐÃ GIẢI: [0,1,3,6,10] / [0,2,7] (runtime; Unlock + Duration còn xác nhận tĩnh, G353). SequenceLocked = nhận tuần tự (doc 11 §8.2); LuxuryLocked / VIPLockedUNKNOWN.
  • ~~Bảng XP Trip nào sống sau khi nạp save~~ — ĐÃ GIẢI (G361): scene 10 … 920 sống.
  • Relic: 15 icon, 3 lõi, 5 mẫu tác dụng, 300 cấp mỗi relic — số liệu (seed 105 ×1.05/cấp; bậc ×1/×1.5/×2; đơn lẻ tuyến tính) đã đọc, không cần thêm asset (doc 11 §4.3, G361).
  • 2 hàng cuối Fish_info_list (bậc 11 CriVal, bậc 12) — UNKNOWN (ngoài đoạn đã trích).
  • Tên hiển thị đã dịch của từng súng / pet / skin — UNKNOWN (term I2 chưa nối với index).
  • Trigger reset Season; backend xác thực Redeem code — UNKNOWN (G149).
  • Vì sao Weapon_Get_Counts chỉ 10 phần tử khi có 13 bậc — UNKNOWN (RVA 0x2B0A720 chưa đọc).
  • Hành vi Monster.Freeze() / Barrier_Touched()CHƯA dựng lại (doc 05 §5).
  • Có đường mở khoá Raid / 3 pet bậc Z nào ở runtime không — bằng chứng tĩnh: KHÔNG (G153, G161).

Đọc thêm