더북(TheBook)

게임 서버의 성능을 높이는 기본적인 원칙은 서버의 단위 처리 속도를 높이는 것입니다. 서버의 단위 처리 속도를 높이려면, 당연하겠지만 프로그램이 더 빠르게 실행할 수 있게 코드 최적화나 알고리즘 최적화를 하는 것입니다. 총알 발포 메시지를 받은 서버는 때로 이와 관련된 연산 루틴에서 불필요한 처리를 제거할 필요도 있습니다. 총알을 맞는 플레이어가 누구인지 서버에서 3D 기하 연산을 하는 것이 부담스럽다면 이를 서버에 맡기지 말고, 총알을 쏜 클라이언트에 미리 맡기는 것도 한 방법입니다. RPG 게임에서는 몬스터나 플레이어 외 캐릭터(Non Player Character, NPC)의 길찾기 알고리즘(path f inding)이 소요하는 처리 시간을 O(1)로 개선하고자 path table 테크닉을 쓰는 것도 최적화 방법 중 하나입니다.

더 빠른 속도로 실행되는 프로그래밍 언어를 쓰는 것도 좋은 방법입니다. 실제로 많은 실시간 멀티플레이 온라인 게임에서 파이썬이나 자바 대신 C++를 쓰는 이유도 바로 이 때문입니다. 당연하겠지만, 더 좋은 서버 하드웨어를 쓰는 것도 서버 성능을 높이는 방법입니다.

서버 성능을 높이는 또 다른 방법은 서버의 과부하 영역을 분산하는 것입니다. 게임 서버뿐만 아니라 일반적인 프로그램의 처리 속도를 높이고자 먼저 해 보는 방법 중 하나는 코드 프로필링(code prof iling)을 이용하는 것입니다. 어떤 함수가 처리 시간을 많이 차지하는지 발견한 후 그것에 집중해서 성능을 개선하는 것이죠. 함수 A가 처리 시간을 가장 많이 차지하지만, 함수 A의 처리 속도를 더 높일 수 있는 방법이 더 이상 없고, 그렇다고 함수 A를 실행하는 빈도를 낮출 수 있는 방법도 없다면 분산을 할 때입니다. 함수 A는 한 서버 컴퓨터 안에서 같이 실행하기에는 너무 벅찬 상황이므로 함수 A를 다른 컴퓨터에서 실행하게 하면 문제를 해결할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.