게임 서버는 무엇을 최종 결정해야 하는가
클라이언트가 보내는 요청과 서버가 확정해야 하는 게임 상태를 나누고, 권위 서버가 치트 방지와 동기화의 기준점이 되는 이유를 정리합니다.
function handleFire(session: Session, command: FireCommand) {
if (!session.acceptsNextSequence(command.sequence)) return;
if (!world.canFire(session.playerId, command.weaponId)) return;
const hit = world.raycastFromPlayer(session.playerId, command.aim);
world.applyAuthoritativeFire(session.playerId, command.weaponId, hit);
}