• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

학습 커리큘럼 관련 질문

23.12.31 02:47 작성 조회수 127

0

안녕하세요.

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

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

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

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

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

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

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

 

답변 2

·

답변을 작성해보세요.

0

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

홍지범님의 프로필

홍지범

2023.12.31

답변 감사합니다.

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

 

추가 질문 있습니다.

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

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

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

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

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

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

 

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

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

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

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

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

감사합니다.

 

 

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

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

홍지범님의 프로필

홍지범

2024.01.01

아 그렇군요.

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

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

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

 

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

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

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

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

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

홍지범님의 프로필

홍지범

2024.01.01

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

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

새해 복 많이 받으세요~

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.31

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

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

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

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