경험 기반 구체화
소켓 프로그래밍을 학교 네트워크 게임 과제에서 처음 다루었습니다. TCP 소켓을 활용해 두 클라이언트가 서버를 통해 실시간으로 포지션 데이터를 주고받는 간단한 멀티플레이어 프로토타입을 구현했습니다. 직접 소켓을 다루면서 패킷 손실, 전송 순서, 연결 끊김 처리를 고려해야 한다는 것을 배웠습니다. 특히 TCP는 신뢰성이 높지만 오버헤드가 크고, UDP는 빠르지만 패킷 보장이 없는 특성을 게임 장르에 맞게 선택하는 것이 중요합니다.
게임에서 실시간성이 중요한 요소(위치 동기화)는 UDP, 중요한 이벤트(아이템 획득)는 TCP를 쓰는 방식이 일반적이라는 것도 배웠습니다. Unity의 Mirror 같은 네트워크 라이브러리가 소켓을 추상화해주지만, 하위 원리를 이해하는 것이 디버깅에 도움이 됩니다.
네트워크는 항상 늦을 수 있다는 전제로 설계하는 것이 중요합니다. 소켓과 네트워크 동기화 역량을 계속 키우겠습니다.