inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

학습 커리큘럼 관련 질문

278

작성자 없음

작성한 질문수 0

0

안녕하세요.

게임 공부에 입문한 웹 개발자 입니다.

관심 있는 분야가 게임서버, unity 쪽 인데

unity 강의 3(unity), 4(server), 7(unity + server), 8(entity), 9(mmo) 로 공부하고

c++ 강의로 넘어가거나, 유니티 기반 게임을 만들어 봐도 막히는 부분은 없을까요?

DB 쪽은 MYSQL 엔진 원리와 트랜잭션, 동시성 문제가 일어나는 이유 등을 알고 고급 쿼리는 좀 공부 해야하고, 웹 쪽은 게임 프로그래밍 코어 공부하는데 크게 지장 없으면 넘어가고 싶은데

루키스님 의견이 어떠한지 궁금합니다.

(entity는 생산성 때문에 하는게 좋을 것 같아서요.)

 

C# unity

답변 2

0

Rookiss

네 아주 정확하신 판단입니다.
사실 8도 옵션입니다. 어차피 9에서 사용하는걸 보면 대충 감이 옵니다.

0

홍지범

답변 감사합니다.

실수로 작성자를 삭제 해버렸네요.

 

추가 질문 있습니다.

아직 수강 전인데, 멀티 플레이 서버에 관심이 많습니다.

루키스님 답변과 몇몇 컨퍼런스(데브시스터즈, 넥슨)를 보니 게임 서버는 액터 모델을 많이 사용하는 듯 합니다.

제가 이해한 바로는 아래와 같습니다.

  1. 게임 특성상 stateful한 구조 사용 -> network 비용을 줄이기 위해 서버 메모리 사용

  2. 액터 모델이 찰떡궁합 -> 잘 모르지만 아토믹한 큐를 가진 구조체 같고 고루틴 같은 경량 스레드로 돌리면 한 서버에서도 여러 객체들이 동시성 문제 없고, 성능도 좋은 모델인 것 같습니다.

  3. 액터끼리의 통신은 메세지로 -> 패킷 압축률이 좋은 RPC 같은 걸 이용하면 네트워트 비용도 줄일 수 있을 것 같습니다.

 

여기까지 이해한 바가 맞다면 한가지 문제가 생기는데,

결국 게임 서버도 결국 물리적 서버를 분산해야(scale out)할 듯 한데, 이 때 물리적으로 다른 서버에 있는 유저의 상태를 어떻게 동기화 되는지 궁금합니다.

예를 들면 쿠키런 모험의 탑, 브롤스타즈 같은 팀을 이뤄서 한 방에서 게임하는 방식일 때

A 유저는 1번 서버, B 유저는 2번 서버에 있다면 서로 영향을 준 것을 어떻게 각 유저의 화면에 동기화 하는 것 인가요?

아직 게임 구조에 대한 명확한 이해가 없어 다소 추상적이더라도 이해 바랍니다.

감사합니다.

 

 

0

Rookiss

질문이 조금 난해한데요..
어떤 장르를 개발하느냐에 따라 정말x100 다르기 때문입니다.
MMO처럼 한 서버에 다중 인원을 받을 것인지,
롤처럼 10명이지만 서버 자체가 많은 것인지에 따라 완전 기술이 다릅니다.
MMO는 보통 분산을 하지 않고, 방 단위의 게임(롤)은 분산을 해야 합니다.
그런데 보통 분산하는 게임은 서로 소통할 필요가 없습니다.

그리고 액터 모델은 MMO 같은데서 동기화를 할 때
지역 단위로 쓰레드를 배치할지, 유닛(액터) 단위로 쓰레드를 배치할지의 문제라
역시나 지금 여러가지 개념들이 뒤섞여 있습니다.

0

홍지범

아 그렇군요.

장르마다 방법이 달리지는군요.

게임 서버 공부는 자체적으로 출시를 해서 트래픽을 받아보는게 아니라면 공부할 때는 상황을 가정하는게 어렵겠어요.

(서버 분산이나, 액터도 정말 써야 할 상황일 때 쓰는 것이 맞으니까요.)

 

마지막으로 질문 드리고 싶은게, 게임 서버 엔지니어가 되고 싶은데 복잡한 게임 서버 레퍼런스가 찾기 힘듭니다.

그렇다면 웹 기반 프로젝트에서 트래픽 핸들링 해보고 이론을 탄탄히 다지는것도 도움이 될까요?

기본적인 tcp 서버 공부도 하구요.

루키스님은 게임 서버 관련 심화된 강의를 내실 계획은 없으신지도 궁금하네요. ㅎㅎㅎ

0

Rookiss

웹서버와 게임서버는 기술이 너무 달라서 도움이 된다고 보긴 힘듭니다.
다만 웹도 하면 여러모로 유익합니다.
그리고 실제 상황이 아니면 테스트를 못 하는 것은 2000년도 초반에나 그랬고
요즘은 AWS로 이런 저런 상황을 시뮬레이션 하기 수월해서
꼭 못하는 세상도 아닙니다.
고급 강의를 따로 내기보다는 워낙 실전 케이스에 따라 상황에 따라
방법이 다르기 때문에 켠김에 출시까지~ 라는 시리지를 만드는 김에
고급 강의를 병행해서 갈 생각입니다.

0

홍지범

그렇군요. 답변 주셔서 감사합니다.

C#, 유니티 강의 듣고 기본기 체화부터 하고 켠김에 시리즈 참고하겠습니다.

새해 복 많이 받으세요~

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

유사한 질문으로 “클라이언트 연동 강의”라는 제목의 질문이 있었으며, 해당 질문에서 강사님께서는 유니티와 서버 연동에 대한 강의 내용으로는 Part7만 해도 연동에 대한 감을 잡을 수 있다고 답변하셨습니다. 또한, 유니티를 몰라도 따라갈 수 있을지에 대해서는 확실하게 말씀드리기 어렵다고 언급하셨습니다. 이 정보를 바탕으로 학습 커리큘럼에 대한 추가적인 질문이 있다면, 관련된 질문의 답변을 참고하시면 도움이 될 것 같습니다.

질문자님의 경우, 게임서버 및 유니티 쪽에 관심이 있으시고, 이미 게임서버와 관련된 지식이 있다면, 유니티 강의와 C++ 강의를 병행하는 것에 대해 크게 문제가 없을 것으로 보입니다. 다만, DB와 웹 쪽에 대한 질문도 함께 하신 만큼, 게임 프로그래밍과 웹 개발의 연계에 대해서도 추가적인 정보가 필요하시다면 아래 링크를 참고하시기 바랍니다.

강의 커리큘럼 관련하여 더 자세한 조언이 필요하시면, 위 링크에서 강사님의 답변을 참조해 보시는 것을 추천드립니다.

MessagePack

0

87

1

본인 플레이어 이동 관련 질문

0

51

1

Part7 Part9 질문이 있습니다.

0

75

1

.

0

117

1

.

0

107

2

게임 로직 루프에서 게임 틱 누락으로 인한 높은 CPU 사용 문제

0

92

1

타일 팔레트 깔았는데도 안돼요

0

122

2

2D로 그냥 만들어도 되나요?

0

85

2

지난 강의와 이어지는게 맞을까요?

0

84

2

순환참조 문제로 인해 발생하는 문제는 없을까요?

0

162

2

유니티 클라와 C++서버연동

0

278

2

멀티플레이 테스트 환경 관련 질문입니다

0

207

3

강의 후반부에 순서 동기화를 위해 잡큐를 사용 안 한 부분 질문입니다!

0

150

2

코드 관련한 몇 가지 질문입니다!

0

153

2

3d 프로젝트 이동 동기화 관련

0

323

4

파트 7 스트레스 테스트 질문 드립니다.

1

190

2

맵 이동 방식

0

134

0

맵 이동 관련해서 질문드립니다.

0

91

1

안녕하세요 도저히 알 수 없는 오류가 나와서 질문드려요,,

0

204

2

안녕하세요. 일전에 질문 드린 포폴 준비 관련 질문의 추가 질문입니다!

0

161

1

[팁] 2024년 기준 버전 이슈?

0

458

1

SendBuffer.cs 삭제 후 대체 되는 부분의 장단점?

1

204

1

지금 강의의 유니티 클라를 IOCP 서버와 연동하는 것

0

337

2

PushAfter 사용 질문

0

193

1