56k 모뎀 환경에서 룬스케이프(RuneScape)가 성공할 수 있었던 비결은?

by DD
6일 전
조회수 2

2004년 룬스케이프(RuneScape)는 56k 모뎀 환경에서 최대 2,000명의 동시 접속을 지원하며, 5KB/s의 대역폭으로 작동함

핵심은 바이트 낭비를 최소화하는 네트워크 최적화 기술로, 이동 요청 시 델타 좌표 전송, 비트 단위 데이터 전송 등 다양한 기법을 사용함

서버 사이클(Server Cycle)을 600ms로 설정하여 지연 시간(Latency)을 관리하고, 변경 사항만 전송하는 델타 업데이트 방식을 활용함

댓글에서는 해당 기술이 현대 게임 개발에도 시사하는 바가 크다는 점을 강조하며, 앤드류 가워스(Andrew Gowers)의 특허를 참고할 것을 권장함

56k 모뎀 환경에서의 네트워크 제약

룬스케이프(RuneScape)는 56k 모뎀의 제한된 대역폭(Bandwidth) 환경에서 작동해야 했다. 이는 초당 5KB/s의 다운로드 속도와 더 낮은 업로드 속도를 의미하며, Java Applet 기반으로 TCP 연결을 사용해야 하는 제약이 있었다. 이러한 환경에서 최소한의 데이터 전송(Data Transfer)으로 게임을 구현하기 위해, Jagex는 다양한 최적화 기법을 적용했다.

이동 요청 패킷 최적화

이동 요청 시, 절대 좌표 대신 델타 좌표(Delta Coordinates)를 전송하는 방식은 바이트를 절약하는 핵심 기술 중 하나였다. 특히, 여러 개의 웨이포인트(Waypoint)를 거쳐 이동하는 경우, 각 웨이포인트마다 2바이트만 사용하여 데이터 전송량을 50% 절감했다. 또한, 걷기(Walk)와 달리기(Run) 모드를 제어하기 위해 Ctrl 키 상태를 1바이트로 전송하는 등, 세세한 부분까지 최적화했다.

서버 사이클(Server Cycle)과 지연 시간 관리

룬스케이프(RuneScape) 서버는 약 600ms 주기로 작동하며, 이 주기가 지연 시간(Latency)의 기준이 되었다. 서버는 각 사이클마다 플레이어의 입력 패킷을 처리(Packet Processing)하고, 변경 사항을 포함하는 플레이어 업데이트 패킷을 생성하여 전송한다. 이러한 서버 사이클은 네트워크 지연(Network Delay)을 관리하고, 게임의 반응성을 유지하는 데 중요한 역할을 했다.

비트 단위(Bit-Level) 데이터 전송

플레이어 업데이트 패킷은 로컬 플레이어, 추적된 플레이어, 신규 플레이어 정보를 포함하며, 각 정보는 비트 단위로 압축되어 전송된다. 특히, 플레이어의 움직임이 없는 경우, 단 1비트만 사용하여 데이터 전송량을 최소화했다. 이러한 비트 단위 전송은 대역폭 제약(Bandwidth Constraint)을 극복하기 위한 핵심 기술 중 하나였으며, 서버와 클라이언트 간의 긴밀한 협력을 통해 구현되었다.

데이터 격리 아키텍처(Data Isolation Architecture)와 캐싱

룬스케이프(RuneScape)는 데이터 격리 아키텍처(Data Isolation Architecture)를 통해 각 플레이어의 상태를 효율적으로 관리했다. 클라이언트는 주변 플레이어의 정보를 미러링하고, 서버는 변경 사항만 델타 형태로 전송하여 데이터 중복을 최소화했다. 또한, 서버는 플레이어의 외형 정보를 한 번 생성하여 캐싱하고, 필요한 경우 해당 정보를 재사용함으로써 서버 자원(Server Resource)을 절약했다.

How 2004 RuneScape fit a multiplayer RPG into 56k dial-up

댓글 0

첫 번째 댓글을 남겨보세요!