Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[ 한국어 | English ]

Cookie-crumble-engine

쿠키런: 크럼블(Cookie Run: Crumble)의 전투 시뮬레이션 엔진입니다.

추출된 게임 데이터로 전투를 실행하고, 매 틱의 상태를 리포트로 출력합니다.

빌드

cargo build --release

실행

cookie-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"]
Loading

flowchart LR
    I["Init · 9"] --> BI["EndInit"] --> MD["Mid · 21"] --> BM["EndMid"]
    BM --> LT["Late · 26"] --> BL["EndLate"] --> CL["Cleanup · 5"]
    CL --> I
Loading

시스템

Init · 9

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"]
Loading

Mid · 21

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"]
Loading

Late · 26

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"]
Loading

Cleanup · 5

flowchart LR
    SCA["SkillCasterAnimationInvoke"] --> EDS["EntityDestroy"]
    PQS["PositionQuantization<br/>OrderFirst"]
    RPT["Report"]
    TCP["TickCapture<br/>OrderLast"]
Loading

라이선스

이 프로젝트는 교육 및 연구 목적으로 작성되었습니다. 게임의 전투 시뮬레이션 구조를 이해하고 학습하기 위한 참고 구현입니다.

상업적 이용을 금지합니다. 이 코드를 영리 목적의 제품, 서비스, 또는 수익 창출 활동에 사용할 수 없습니다.

data/의 데이터는 분석 목적으로 게임에서 추출한 것이며, 해당 데이터의 모든 권리는 원저작권자에게 있습니다.

자세한 내용은 LICENSE(PolyForm Noncommercial License 1.0.0)를 참고하세요.

문의가 필요하신 경우 디스코드 mokocoder로 연락 주세요.

About

Combat simulation engine for Cookie Run: Crumble

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages