작성자 없음
작성자 정보가 삭제된 글입니다.
23.12.31 02:47 작성
·
181
0
안녕하세요.
게임 공부에 입문한 웹 개발자 입니다.
관심 있는 분야가 게임서버, unity 쪽 인데
unity 강의 3(unity), 4(server), 7(unity + server), 8(entity), 9(mmo) 로 공부하고
c++ 강의로 넘어가거나, 유니티 기반 게임을 만들어 봐도 막히는 부분은 없을까요?
DB 쪽은 MYSQL 엔진 원리와 트랜잭션, 동시성 문제가 일어나는 이유 등을 알고 고급 쿼리는 좀 공부 해야하고, 웹 쪽은 게임 프로그래밍 코어 공부하는데 크게 지장 없으면 넘어가고 싶은데
루키스님 의견이 어떠한지 궁금합니다.
(entity는 생산성 때문에 하는게 좋을 것 같아서요.)
답변 2
0
2024. 01. 01. 14:59
질문이 조금 난해한데요..
어떤 장르를 개발하느냐에 따라 정말x100 다르기 때문입니다.
MMO처럼 한 서버에 다중 인원을 받을 것인지,
롤처럼 10명이지만 서버 자체가 많은 것인지에 따라 완전 기술이 다릅니다.
MMO는 보통 분산을 하지 않고, 방 단위의 게임(롤)은 분산을 해야 합니다.
그런데 보통 분산하는 게임은 서로 소통할 필요가 없습니다.
그리고 액터 모델은 MMO 같은데서 동기화를 할 때
지역 단위로 쓰레드를 배치할지, 유닛(액터) 단위로 쓰레드를 배치할지의 문제라
역시나 지금 여러가지 개념들이 뒤섞여 있습니다.
아 그렇군요.
장르마다 방법이 달리지는군요.
게임 서버 공부는 자체적으로 출시를 해서 트래픽을 받아보는게 아니라면 공부할 때는 상황을 가정하는게 어렵겠어요.
(서버 분산이나, 액터도 정말 써야 할 상황일 때 쓰는 것이 맞으니까요.)
마지막으로 질문 드리고 싶은게, 게임 서버 엔지니어가 되고 싶은데 복잡한 게임 서버 레퍼런스가 찾기 힘듭니다.
그렇다면 웹 기반 프로젝트에서 트래픽 핸들링 해보고 이론을 탄탄히 다지는것도 도움이 될까요?
기본적인 tcp 서버 공부도 하구요.
루키스님은 게임 서버 관련 심화된 강의를 내실 계획은 없으신지도 궁금하네요. ㅎㅎㅎ
2024. 01. 01. 16:21
웹서버와 게임서버는 기술이 너무 달라서 도움이 된다고 보긴 힘듭니다.
다만 웹도 하면 여러모로 유익합니다.
그리고 실제 상황이 아니면 테스트를 못 하는 것은 2000년도 초반에나 그랬고
요즘은 AWS로 이런 저런 상황을 시뮬레이션 하기 수월해서
꼭 못하는 세상도 아닙니다.
고급 강의를 따로 내기보다는 워낙 실전 케이스에 따라 상황에 따라
방법이 다르기 때문에 켠김에 출시까지~ 라는 시리지를 만드는 김에
고급 강의를 병행해서 갈 생각입니다.
0
안녕하세요, 인프런 AI 인턴입니다.
유사한 질문으로 “클라이언트 연동 강의”라는 제목의 질문이 있었으며, 해당 질문에서 강사님께서는 유니티와 서버 연동에 대한 강의 내용으로는 Part7만 해도 연동에 대한 감을 잡을 수 있다고 답변하셨습니다. 또한, 유니티를 몰라도 따라갈 수 있을지에 대해서는 확실하게 말씀드리기 어렵다고 언급하셨습니다. 이 정보를 바탕으로 학습 커리큘럼에 대한 추가적인 질문이 있다면, 관련된 질문의 답변을 참고하시면 도움이 될 것 같습니다.
질문자님의 경우, 게임서버 및 유니티 쪽에 관심이 있으시고, 이미 게임서버와 관련된 지식이 있다면, 유니티 강의와 C++ 강의를 병행하는 것에 대해 크게 문제가 없을 것으로 보입니다. 다만, DB와 웹 쪽에 대한 질문도 함께 하신 만큼, 게임 프로그래밍과 웹 개발의 연계에 대해서도 추가적인 정보가 필요하시다면 아래 링크를 참고하시기 바랍니다.
강의 커리큘럼 관련하여 더 자세한 조언이 필요하시면, 위 링크에서 강사님의 답변을 참조해 보시는 것을 추천드립니다.
2023. 12. 31. 21:16
답변 감사합니다.
실수로 작성자를 삭제 해버렸네요.
추가 질문 있습니다.
아직 수강 전인데, 멀티 플레이 서버에 관심이 많습니다.
루키스님 답변과 몇몇 컨퍼런스(데브시스터즈, 넥슨)를 보니 게임 서버는 액터 모델을 많이 사용하는 듯 합니다.
제가 이해한 바로는 아래와 같습니다.
게임 특성상 stateful한 구조 사용 -> network 비용을 줄이기 위해 서버 메모리 사용
액터 모델이 찰떡궁합 -> 잘 모르지만 아토믹한 큐를 가진 구조체 같고 고루틴 같은 경량 스레드로 돌리면 한 서버에서도 여러 객체들이 동시성 문제 없고, 성능도 좋은 모델인 것 같습니다.
액터끼리의 통신은 메세지로 -> 패킷 압축률이 좋은 RPC 같은 걸 이용하면 네트워트 비용도 줄일 수 있을 것 같습니다.
여기까지 이해한 바가 맞다면 한가지 문제가 생기는데,
결국 게임 서버도 결국 물리적 서버를 분산해야(scale out)할 듯 한데, 이 때 물리적으로 다른 서버에 있는 유저의 상태를 어떻게 동기화 되는지 궁금합니다.
예를 들면 쿠키런 모험의 탑, 브롤스타즈 같은 팀을 이뤄서 한 방에서 게임하는 방식일 때
A 유저는 1번 서버, B 유저는 2번 서버에 있다면 서로 영향을 준 것을 어떻게 각 유저의 화면에 동기화 하는 것 인가요?
아직 게임 구조에 대한 명확한 이해가 없어 다소 추상적이더라도 이해 바랍니다.
감사합니다.