나만의 작은 도서관
[TIL][C++] 250625 MMO 서버 개발 43일차: 온라인 게임 서비스에서 런처는 어떤 역할을 할까? 본문
Today I Learn
[TIL][C++] 250625 MMO 서버 개발 43일차: 온라인 게임 서비스에서 런처는 어떤 역할을 할까?
pledge24 2025. 6. 26. 01:41주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다.
온라인 게임 서비스에서 런처는 어떤 역할을 할까?
- 많은 온라인 게임들이 웹에서 로그인 인증을 하고 난 다음, 게임 시작 버튼을 누르면 클라이언트가 아닌 런처(Launcher)를 먼저 실행하는 것을 경험할 수 있다. 그렇다면, 이 런처의 역할은 무엇이며, 왜 실행해야 하는 걸까?
역할 1: 업데이트 자동 패치
- 온라인 게임은 주기적으로 업데이트를 진행한다. 게임 서비스를 제공하는 입장에선, 업데이트된 클라이언트 파일을 배포해야 하는데, 그때마다 유저에서 새로운 파일을 다운로드하으라고 하기에는 유저는 굉장히 번거로워할 것이다.
- 그래서 런처를 통해 새로운 업데이트가 있는 지 확인하고, 이에 맞게 업데이트된 파일로 갱신시키도록 하는 것이다.
역할 2: 보안
- 클라이언트 프로그램은 유저에게 온전히 넘어간 프로그램이기 때문에, 유저가 입맛대로 뜯고, 조작하는 등 난리 치는 행위 차체를 막을 순 없다. 그래서 항상 클라이언트는 위변조 되어있을 가능성을 염두에 두어야 한다.
- 1차적으로 이런 위변조 된 클라이언트를 잡아내기 위해 런처에 보안 프로그램을 추가한다. 대놓고 클라이언트 프로그램에 핵, 치트 툴이 삽입되어 있거나 변조된 클라이언트라고 판단되면, 런처에 탑재된 보안 프로그램이 이를 제재한다.
- 대표적인 보안 프로그램으로, 게임가드, 넥슨의 NGM, 블리자드의 Warden 등이 있다.
역할 3: 세션 연동 및 계정 인증(Session Handoff)
- 맨 처음에 웹을 통해 인증을 받고 런처가 실행된다고 했다. 그렇기에 런처가 실행되는 시점엔 이미 유저의 컴퓨터에 인증되었다는 정보가 있을 텐데, 런처는 이를 활용해 인증 서버가 아닌 로비 서버(또는 게임 서버)에 접근할 때 사용한다.
- 이러한 설계는 인증받지 않은 사용자가 로비 서버 및 게임 서버에 직접 접근하는 경우를 막을 수 있다.
- 런처가 로비 서버로부터 인증받은 유저임을 인정받게 되면 런처를 통해 클라이언트 프로그램을 실행할 수 있게 된다.
역할 4: 환경 설정 및 진입 옵션 제공
- 런처는 클라이언트 프로그램을 실행할 때, 일부 환경 설정을 세팅할 수 있다.
- 대표적인 예시로 1920*1080 해상도로 클라이언트를 실행할 건지, 창 모드로 실행할 건지와 같은 해상도 설정이 있다. (서버 선택도 할 수 있다고 하는데, 로비 서버에서 설정하는 경우도 있어서 이 부분은 잘 모르겠다)
역할 5: 공지사항, 이벤트, 점검 알림 제공
- 런처의 주요 기능도 아니고, 필수 기능도 아니지만 공지사항을 런처에 표시할 수 있다. 업데이트나 대규모 이벤트 개최 위주로 게시하는 거 같던데, 보통 사진 링크 식으로 게재된다.
역할 6: 멀티 게임 관리
- 블리자드 같은 경우, Battle.net 이 있다. SSO 방식으로, 배틀넷 계정으로 진입하면 런처가 켜지면 이 런처를 통해 스타크래프트든, 오버워치든 소유한 게임을 전부 할 수 있다. 다른 예시로 스팀(Steam)도 있다.