Lock Step 알고리즘 적용 계획
배경
- 문제 상황:
- 현재 (26.03.16) 게임의 주요 로직은 서버에서 돌아가고 있고, client에서 입력만 server로 보내고 모든 연산을 server에서 진행하고 있다.
- 서버의 성능으로 인해 astar 알고리즘을 통한 하수인들의 길찾기 기능 같은 비교적 많은 연산을 요하는 기능을 적용하지 못 하고 있다.
- 해결책:
- lock step 알고리즘을 적용
요구 사항
-
서버의 게임 로직을 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 시작