최흥배님의 '웹 서버 방식의 게임 서버' 영상을 보고 정리한 글입니다.
https://www.youtube.com/watch?v=NuxHxHbU-jU&ab_channel=%EC%B5%9C%ED%9D%A5%EB%B0%B0
Socket 서버 방식의 게임 서버
1. 게임 서버는 일반적으로 socket 서버이다.
2. 실시간 통신이 많이 필요한 곳에서 주로 사용한다.
3. TCP/UDP, IOCP
웹서버 기반 게임 서버
1. 주로 모바일 게임에서 사용한다.
2. 수집형 RPG 게임들에서 주로 사용
3. 백엔드 개발과 다르지 않음.
4. 웹 프론트 기술 스택은 사용하지 않음. (게임 엔진을 쓰지...)
5. 주로 POST 방식의 통신
사용하는 웹서버들
C#(ASP.Net core)
Java(Spring)
PHP
Nodejs 등등
C#
Unity에서 사용하는 언어로 ASP.NET으로 언어 통일을 하려는 경향이 있다.
문제는 한국은 Spring아니면 Nodejs를 사용하는 경우가 많다. (수요도 적고 자료도 없음)
웹 서버는 요청을 주고 DB에 저장하고 데이터를 가져오는 방식(메모리에 데이터 저장X)
그래서 DB의 역할이 매우 중요하다.
소켓 서버는 메모리에서 데이터를 많이 들고 처리하는 경우가 많다.
DB는 중요하지만 웹 서버보다 덜 중요한 느낌?
모바일의 성능 때문에 HTTP 통신을 기반으로 선택한 것도 있다.
예전 같은 경우에는 Socket 통신하면 성능이 안 나오는 경우가 많았다.
웹서버 방식의 경우 로드밸런서가 서버를 연결시켜준다. 확장성이 좋다. 패치도 편하다.
(Socket 서버는 상대적으로 어렵다)
포트폴리오를 개발한다면, 둘 다 하는 것을 추천한다.
실시간 통신이 중요한 게임도 웹서버를 같이 쓰는 경우도 많다.
추천하는 기술스택(최흥배님의 의견)
C#을 공부해서 ASP.NET을 배우는 것을 추천하지만 다른 언어로 공부해도 괜찮다.
Socket 기반이든 웹 서버 기반이든 다 사용한다.
Socket 기반 통신이 어렵다면 웹 서버 기반이라도 익히는 것을 추천한다.
나의 의견
실시간 통신을 사용하지 않는 게임에서 웹서버 기반으로 개발하는 경우가 있다는 것을 알게 되었다.
또한 실시간 통신을 필요로 하는 게임 역시 두 방식을 혼용해서 사용한다는 것도 알게 되었다.
현재 나의 경우에는 두 방식 모두 관심이 있는 편이다.
어느 하나에 초점을 맞추지 않고 두 방식 모두 공부하면서 포트폴리오를 만들어보면 좋을 것 같다.
'프로그래밍 > Game Dev' 카테고리의 다른 글
[C#] MessagePack (0) | 2023.08.26 |
---|---|
[C#] 메모리 베리어 (0) | 2023.08.26 |
[C#] 캐시 메모리 철학 (0) | 2023.08.26 |
[C#] 쓰레드 생성 (0) | 2023.08.26 |
채용 정보를 통해 알아보는 게임 서버 기술 스택 정리 (0) | 2023.08.19 |
댓글