[ 한국어 | English ]
쿠키런: 크럼블(Cookie Run: Crumble)의 전투 시뮬레이션 엔진입니다.
추출된 게임 데이터로 전투를 실행하고, 매 틱의 상태를 리포트로 출력합니다.
cargo build --releasecookie-cli.exe data\entities data\hybrid_assets.json data\resource.json scenarios\stage_normal.json data\stage_maps.json리포트는 stdout으로 출력됩니다.
| 인자 | |
|---|---|
data\entities |
프리팹 문서: 캐릭터, 스킬, 웨이브 |
data\hybrid_assets.json |
렌더러 에셋 매니페스트: 애니메이션 타이밍, 중심 높이 |
data\resource.json |
리소스 테이블: 쿠키, 몬스터, 모디파이어, 패시브, 스탯 부스트 |
scenarios\*.json |
실행할 전투 |
data\stage_maps.json |
맵 영역과 파괴 가능한 오브젝트. 선택 |
| 옵션 | |
|---|---|
--trace |
리포트에 틱별 엔티티 스냅샷을 추가 |
--stage-order N |
시나리오의 스테이지 번호를 덮어씀 |
--phase normal|boss |
스테이지 페이즈를 덮어씀 |
--stage-order와 --phase는 시나리오가 stageBattle을 사용할 때만 허용됩니다.
--trace로 내보낸 리포트는 브라우저 뷰어 cookie-viewer로 재생할 수 있습니다.
| 디렉터리 | |
|---|---|
engine/ |
시뮬레이션: 데이터 디코딩, 월드 구성, 전투 시스템 |
cli/ |
인자 처리와 JSON 리포트 |
data/ |
추출된 게임 데이터. 스냅샷 49352c, Unity 6000.3.15f1 |
scenarios/ |
예제 전투: 스테이지의 일반 페이즈, 보스 페이즈, 전체 길이의 아레나 매치 |
flowchart LR
R["resource.json"] --> CAT["Catalogs"]
H["hybrid_assets.json"] --> CAT
M["stage_maps.json"] --> CAT
E["entities/*.json"] --> MOD["Prefab models"]
CAT --> REG["prefab_registry<br/>two-pass bake"]
MOD --> REG
REG --> SB["scenario_builder"]
S["scenario.json"] --> SB
SB --> W["World"]
W --> T["battle.rs<br/>61 systems x N ticks"]
T --> OUT["JSON report"]
flowchart LR
I["Init · 9"] --> BI["EndInit"] --> MD["Mid · 21"] --> BM["EndMid"]
BM --> LT["Late · 26"] --> BL["EndLate"] --> CL["Cleanup · 5"]
CL --> I
flowchart LR
CGS["CharacterGroup"] --> MDS["MaxDensityTargetSearch"]
CGS --> TCS["TargetCharacterSearch"]
MDS --> TCS
STS["SimulationTime"]
CPM["CharacterPositionMap"]
SLT["SkillEntityLifeTime"]
MCL["ModifierCountLifetime"]
CFS["CharacterFilteredSkillSpawner"]
BI["EndInitFixedUpdate<br/>OrderLast"]
flowchart LR
STC["StateTriggerConditionCheck<br/>OrderFirst"] --> MST["ModifierStateTriggerUpdate"]
STC --> SCD["SkillCastingDecision"] --> CSU["CharacterStateUpdate"]
CSU --> SCP["SkillCasterPositionSync"]
AOE["AreaOfEffect<br/>OrderFirst"] --> SEM["SkillEntityMovement"]
SRS["SkillRandomSpeed"] --> SEM
SEM --> SCP
SEM --> TPS["TargetProjectile"] --> SER["SkillEntityRotation"]
AOE --> TPS
AOE --> SER
SEM --> SER
SWE["StageWaveEndCondition"] --> SWS["StageWave"] --> CSS["CharacterSpawner"]
RCS["RepulseCalculate"]
TES["TargetEffect"]
DOT["DamageOverTimeModifier"]
SDH["SkillCasterDecreaseHealthPoint"]
SFC["SummonedFollowCaster"]
MPD["MapPropDeath"]
PTP["PassiveByTimeProgress"]
BM["EndMidFixedUpdate<br/>OrderLast"]
flowchart LR
CPS["CharacterPassiveSpawner"] --> PMM["PassiveModifierManagement"] --> CMM["CharacterModifierManagement"]
AMH["AddCharacterModifierOnHit"] --> CMM
AMC["AddCharacterModifierToCaster"] --> CMM
CMM --> ACM["ActionControlModifier"]
CMM --> ASM["AddShieldModifier"]
CMM --> SMR["ScaleModifierRecalculate"]
CMM --> CSR["CharacterStatRecalculate"]
CMM --> SSM["SkillSpawnerModifier"]
DMG["Damage"] --> SCT["StateCountTrigger"]
DMG --> SES["SkillEntitySpawner"]
DWC["DestroyWithCaster"] --> SES
SES --> SSM
SES --> SCI["SummonedCharacterInitialize"]
SES --> SCD2["SkillCasterDisappear"]
SES --> SOD["SpawnSkillOnDying"]
SES --> DES["DelayEffect"]
CSR --> TSS["TargetSearch"]
SRP["SkillEntityReproduce"] --> TSS
TSS --> SFL["SkillFixedTimeLinearMovement"]
SES --> SFL
SCG["StageClearProgress"]
SRC["SkillEntitySpawnerReferenceCount"]
CCS["CharacterController"]
BCS["BattleCooldown<br/>OrderLast"]
BL["EndLateFixedUpdate<br/>OrderLast"]
flowchart LR
SCA["SkillCasterAnimationInvoke"] --> EDS["EntityDestroy"]
PQS["PositionQuantization<br/>OrderFirst"]
RPT["Report"]
TCP["TickCapture<br/>OrderLast"]
이 프로젝트는 교육 및 연구 목적으로 작성되었습니다. 게임의 전투 시뮬레이션 구조를 이해하고 학습하기 위한 참고 구현입니다.
상업적 이용을 금지합니다. 이 코드를 영리 목적의 제품, 서비스, 또는 수익 창출 활동에 사용할 수 없습니다.
data/의 데이터는 분석 목적으로 게임에서 추출한 것이며, 해당 데이터의 모든 권리는 원저작권자에게 있습니다.
자세한 내용은 LICENSE(PolyForm Noncommercial License 1.0.0)를 참고하세요.
문의가 필요하신 경우 디스코드 mokocoder로 연락 주세요.
