2024/12/05 2

자원 전쟁 (서버) 프로젝트 - 용광로 만들기 2탄

2탄을 만든 이유:1. 동기화 기준의 불명확성서버와 클라이언트 간 용광로 상태를 동기화하는 명확한 기준이 부재클라이언트간 독립적으로 계산할 수 있는 데이터를 제공하지 않고, 서버와 클라간에 시간을 주기적으로 서버에서 받아야만 정상 동작으로 설계 2. SRP 위반GameManager에 용광로 관련 연산 로직을 포함, 단일 책임 원칙을 지키지 못함.GameManager의 역할이 비대해지며 코드 가독성과 유지보수성에 부정적인 영향을 미침.개선 방법:1. 동기화 방식 개선멀티플레이 환경에서 모든 클라이언트가 동일한 상태를 유지할 수 있도록 설계 변경.서버 시간과 클라이언트 시간을 계산해 동기화하는 대신, 용광로 상태가 변경될 때마다 서버에서 시뮬레이션을 수행하여 연산 결과를 클라이언트에 전송.클라이언트는 수신된..

TIL 2024.12.05

자원 전쟁 (서버) 프로젝트 - 용광로 만들기 1탄

작성 이유 이번 프로젝트에서 여러 담당을 맡았던 도중에 용광로 핸들러를 마무리 작업을 하던 도중에 문제가 생겼다.문제는 내가 설계한 대로 하면 클라랑 서버랑 계속 시간을 비교해서 동기화를 서로 해줘야하는 작업이 있어야한다.다시 말하자면 현재 값을 계속 클라한테 보내줘야 하는데 멀티 게임 특성상, 클라 끼리 계산을 해줄 수 있는걸 보내줬어야 한다.만약에 서버랑 클라랑 주기적으로 동일한 시간을 계산 할 수 있는 걸 받을 수 있다면 문제 없는 코드이지만 우리는 현재 클라에게 부담을 주지 않게 모든걸 계산해서 다 줘야한다.설계요약 설계 흐름 Furnace Class: 용광로의 상태와 진행도를 관리. Team Class: 각 팀마다 Furnace를 포함하여 용광로 상태를 관리. FurnaceSyncManager:..

TIL 2024.12.05