인프런 커뮤니티 질문&답변

ghwls328님의 프로필 이미지
ghwls328

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

서버 OT

웹서버와 게임서버의 활용에 관하여 질문이 있습니다.

작성

·

1.6K

4

 좋은 강의 만들어주셔서 감사합니다. 정말 잘 가르쳐주셔서 너무 익혀나가고 있습니다. 

 다름이 아니라 혹시 웹서버와 게임서버의 활용에 관하여 질문이 개인적인 질문이 있는데 어디에 문의를 드려야 할지 모르겠어서 여기로 질문드립니다...

친구들과 같이 진행중인 프로젝트가 있는데 서버를 처음 다루다보니 AWS를 활용한 웹서버 + 클라이언트 구조로 활용하여 게임을 개발하려 하였습니다.

 그런데 이제 OT에서 웹서버와 게임서버의 활용법을 얘기하셔서 저희 게임의 기획에 맞게 게임서버를 활용하기로 하였습니다. 다만,  웹서버와 게임서버를 병행하여 랭킹시스템, 유저정보 등은 웹서버를 활용하여 매치메이킹을 해주는 등에 활용하고 실제 게임이 매치되어 진행하는 동안에는 게임서버를 사용하는 것으로 구상중에 있습니다. 이제 로딩시 버전체크 등 파일 확인에도 웹 서버를 활용하면 괜찮을거 같아서 이렇게 진행을 하고 싶은데 하나의 게임 안에서 서버를 교체하여 매치를 진행한다는 것이 가능한 것인지가 궁금합니다. 

 저희가 아직 학생신분을 가진 상태라서 서로가 공부목적으로 진행하는 프로젝트이다 보니 웹서버에 관심을 가지고 있는 친구가 있어 포기할 수는 없는 상태인데 이게 이중연결이 진행이 되는 것인지 아니면 웹서버의 연결을 끊고 게임서버로 다시 연결시켜주는게 괜찮은 방식인가 싶습니다...

강의와는 무관한 질문 정말 죄송합니다 ㅠㅠ

답변 1

8

Rookiss님의 프로필 이미지
Rookiss
지식공유자

우선 웹서버는 연결을 '끊는다는' 개념이 없습니다.
연결을 맺고 데이터를 주고 받는 것은 tcp 서버 방식이고,
웹은 필요할 때 마다 요청을 쏘는 방식입니다.
그러니 고민할 문제도 없습니다.
추가로 서버를 꼭 1개만 연결해야 하는 것은 아니고
실제로 MMO에서 게임 플레이는 게임 서버로,
기타 정보는 웹서버로 받는 경우도 더러 있습니다.

그리고 MatchMaking 서버는 보통 tcp 서버 방식으로 하는 경우가 많습니다.
(Redis 등 별도의 실시간 DB 활용할게 아니라면 그게 편합니다)
일반적인 구조는 웹서버(로그인/인증/기타정보) - 매치메이킹(TCP) - 게임서버(TCP << 다수일 수도 있음)
이렇게 3개 서버를 두는 것이고
매치메이킹과 게임서버는 서로 Connection을 맺고 통신을 하면서 정보를 교환합니다.
매치메이킹에서 클라한테 몇번 방으로 가라고 클라에 알려주면,
클라가 다시 게임서버에 붙어서 게임을 진행하는 것이죠. (LOL 느낌)
그런데 처음부터 서버 분산을 하면,
생각하던 것에 비해 작업이 생각보다 많고 어렵습니다.
그냥 서버 하나에서 매치메이킹-게임서버를 겸업하는 것도 시작할 때 괜찮은 방법이긴 합니다.

그리고 온라인 게임이라면 웹서버는 결국 붙어야 합니다.
초반 인증이나 결제 쪽을 웹으로 해줘야 하기 때문이죠.
게임서버에 비해 웹은 부담이 없는 작업이니 연습삼아 해보는 것을 추천드립니다.

마지막으로 학생 신분이나, 회사에서 일하는거나
진짜 농담이 아니고 종이 한장 차이입니다.
회사에서 가면 엄청 많이 배우고 성장할 것 같지만,
의외로 대부분 하는 일은 노가다성 작업이 많아서
말씀하신 것처럼 웹/게임서버/클라를 다 연동을 해본 사람은 손에 꼽습니다.
그런 프로젝트가 있다고 하면 대부분 지금 하시는 것처럼 다들 머리를 맞대고 헤딩하는 것이죠.
그러니 처음이라고 망설이기 보단 그냥 용기를 갖고 이것저것 다 해보시기 바랍니다.

ghwls328님의 프로필 이미지
ghwls328
질문자

너무 좋은 답변 감사합니다 ㅠㅠ 덕분에 방향이 크게 잘 잡힌 것 같습니다... 항상 좋은 강의 감사드리고 앞으로도 잘 부탁드립니다!

ghwls328님의 프로필 이미지
ghwls328

작성한 질문수

질문하기