"매 Skybound Protocol 의 code review 의 systematic checklist 의 game-specific concern (frame budget, deterministic sim, asset pipeline)". 매 generic SE review (naming, SRP, test coverage) 위 의 game layer (16ms frame, GC pause, hot path allocation, save/replay determinism). 매 2026 의 AI-augmented review (Claude Opus 4.7, Cursor) 의 first pass automation.
매 핵심
매 Game-specific review axes
Frame budget: 매 60fps → 16.67ms / frame. 매 hot path 의 allocation X.
Determinism: 매 replay / netcode 의 same input → same output 보장.
Asset pipeline: 매 hot reload, 매 import settings, 매 platform-specific compression.
Memory: 매 pool / arena, 매 GC pause < 1ms.
매 Skybound 의 specific concerns
Firepower system: 매 damage calc 의 numeric stability (overclock multipliers).
State sync: 매 client-authoritative vs server-authoritative.
Asset gen: 매 AI-generated asset 의 validation pipeline.
Balance: 매 v1.5 overclock 의 PvP / PvE separation.
매 Review checklist
매 hot path allocation 의 X (object pool / struct).
매 random source 의 seeded (replay).
매 numeric: float vs int (deterministic 의 fixed-point).
매 save format versioning.
매 telemetry hook (drop-out, balance metric).
💻 패턴
Hot path allocation 의 review
// BAD: 매 frame 의 allocation
functionupdateEnemies(enemies: Enemy[],dt: number){for(consteofenemies){consttargets=enemies.filter(o=>o.team!==e.team);// 매 frame allocate
constclosest=targets.sort((a,b)=>dist(e,a)-dist(e,b))[0];e.target=closest;}}// GOOD: 매 reusable buffer
const_targetBuf: Enemy[]=[];functionupdateEnemies(enemies: Enemy[],dt: number){for(consteofenemies){_targetBuf.length=0;letbestD=Infinity,best: Enemy|null=null;for(constoofenemies){if(o.team===e.team)continue;constd=distSq(e,o);if(d<bestD){bestD=d;best=o;}}e.target=best;}}
Deterministic RNG (replay-safe)
classXorShift{constructor(publicstate: number){}next():number{letx=this.state;x^=x<<13;x^=x>>>17;x^=x<<5;this.state=x>>>0;returnthis.state/0xffffffff;}}// 매 sim 의 single seeded RNG — 매 Math.random() X
constrng=newXorShift(matchSeed);
Firepower overclock validation
functionapplyOverclock(base: WeaponStats,level: number):WeaponStats{constcap=OVERCLOCK_CAPS[base.tier];constclamped=Math.min(level,cap);return{...base,damage: base.damage*(1+0.08*clamped),fireRate: base.fireRate*(1+0.04*clamped),heat: base.heat*(1+0.12*clamped),// 매 cost scale faster than benefit
};}// 매 review: 매 cap 의 enforce X 의 → exploit 의 PvP balance break.
Save versioning
interfaceSaveV2{version: 2;player: Player;inventory: Item[];flags: number[];}functionmigrate(raw: any):SaveV2{if(raw.version===1){return{...raw,version: 2,flags: raw.flags??[]};}if(raw.version===2)returnraw;thrownewError(`unknown save version ${raw.version}`);}
AI-augmented review (2026)
# 매 Claude Code / Cursor 의 first pass
claude review --diff main..HEAD --rules .claude/skybound-rules.md
# .claude/skybound-rules.md# - Flag any allocation in update / draw loops# - Flag Math.random() in sim code (must use seeded RNG)# - Flag hardcoded balance numbers (must be in DataConfig)