apply-lock-step

Lock Step 알고리즘 적용 계획

배경

  • 문제 상황:
    • 현재 (26.03.16) 게임의 주요 로직은 서버에서 돌아가고 있고, client에서 입력만 server로 보내고 모든 연산을 server에서 진행하고 있다.
    • 서버의 성능으로 인해 astar 알고리즘을 통한 하수인들의 길찾기 기능 같은 비교적 많은 연산을 요하는 기능을 적용하지 못 하고 있다.
  • 해결책:

요구 사항

  • 서버의 게임 로직을 Client로 포팅 결정적으로 바꿈

  • frame 정보

    • card 사용한 정보
    • prefab 소환 정보
      • 게임 초기화 (플레이어 소환, PVE bot 소환)
sequenceDiagram
    autonumber
    participant C as Client (Game Engine)
    participant S as Server (Relay & Validator)

    Note over C, S: Frame N 시작 (이전 프레임 입력값 수신 상태)

    rect rgb(240, 240, 240)
        Note right of C: 결정적 로직 실행 (Deterministic Step)
        C->>C: Calculate Frame N Output
        C->>C: Generate Snapshot Hash
    end

    C->>+S: Send: Frame N+1 Input + Frame N Hash
    
    rect rgb(200, 220, 255)
        Note right of S: 검증 및 중계 (Relay)
        S->>S: Validate Hash (Sync Check)
        S-->>-C: Broadcast: Frame N+1 Inputs (All Players)
    end

    Note over C, S: Frame N+1 시작