작성
·
276
·
수정됨
0
안녕하세요. 해당 강의와 관련이 없는 내용일 수 있지만 질문드립니다.
로그인, 게임에 필요한 정보 등을 주고 받는 tcp나 http 통신을 하는 서버(이하 소켓 서버)와 소켓 통신을 하려고 한다면 (로그인으로 예를 들어보겠습니다) 로그인 레벨을 만들고 소켓 통신하는 부분을 로그인 레벨의 게임 모드에서 동작하게 하고 게임인스턴스에(클라이언트) 정보를 받고 다음 레벨로 넘어가면 될까요?
그 후에 리슨서버나 데디케이트 서버를 사용해서 인게임 로직을 구현한다면 플레이어 정보(아이템, 레벨 등)는 클라이언트에서 서버로 입장 시에 앞단계를 통해 클라이언트에서 유저를 식별할 수 있는 최소한의 정보를 받아서(예를 들면 플레이어id) 소켓 서버로 요청 후에 클라이언트로 복제하면 될까요? 아니면 앞단계를 통해 클라이언트에 정보를 미리 받고 최소한의 검증만 하면 될까요?
언리얼 서버에서 매치가 종료된 후 결과에 따른 보상이나 매치 중 소비하는 아이템(물약, 장비 내구도 등)같은 db 처리가 필요한 경우 언리얼 서버에서 처리하는지 별도의 서버에 요청하여 따로 처리하는지요?
작성하고 보니 질문이 이해가 되지 않을 수도 있을 것 같은데요. 질문의 요지는 인게임 로직을 처리하는 언리얼 서버가 아닌 따로 구현한 소켓 서버와 언리얼 엔진을 연동하는 과정에 대한 질문을 드리고 싶습니다. 틀렸거나 더 효율적인 방법이 있으면 답변 부탁드리겠습니다. 감사합니다
답변 1
0
질문이 일반적인 실시간 게임 플레이와 무관한 게임 서비스 플랫폼 연동 혹은 서버 군 내 DBMS와의 연동에 관련된 내용으로 보여집니다.
먼저 게임 서비스 플랫폼 연동에 대한 부분이 있을텐데요,
스팀, 구글, 애플 등의 게임 서비스 플랫폼과 연동하기 위해서 언리얼 엔진은 단일 인터페이스에서 다양한 플랫폼과 연동하는 Online Subsystem이라는 플러그인을 만들어 제공하고 있습니다. 이 모듈을 활성화해서 필요한 때 플랫폼과 연동하는 함수를 호출해주면 됩니다.
다양한 플랫폼과의 연동을 통합 관리하는 상위 개념의 EOS라는 서비스도 제공하고요. 대부분의 상용 게임 플랫폼을 직접 지원하고 있는데, 직접 만드는 것도 가능하긴 합니다.
엔진 플러그인 폴더 내 온라인 모듈에 가면 확인 가능합니다.
서버에서 데이터베이스와 연동하는 방법은 다양합니다.
직접 데이터베이스 라이브러리를 사용해 직접 제어하거나, HTTP로 WebAPI를 호출하거나, AWS를 사용한다면, AWS에서 제공하는 플러그인의 API를 사용해 제어하는 여러가지 방법이 있습니다. 현재 상황에 맞는 방법을 검색해 적용하시면 될 것 같습니다.
서브시스템은 게임 플랫폼이 제공하는 정보 ( 로그인 , 닉네임, 업적 등등.. ) 를 가져올 때 사용하고, 게임 자체 재화는 게임 시스템 내 데이터베이스와 연동해야죠. 자체적으로 서버 시스템을 구축한다면 꼭 어디서 어떻게 해야 한다는 법은 없습니다. 원하는 타이밍에 하시면 됩니다.
기획하고 계신 게임 내 구체적인 구현 방법에 대해서는, 강의 내용에 대한 Q&A와 무관해 더 자세한 답변은 어려울 것 같아요. 양해부탁드립니다.
안녕하세요. 답변 감사드립니다.
답변주신 내용과 online subsystem을 찾아보았는데요. 답변주신 내용이 이미 정답일 수 있지만 이해가 잘 되지 않아서 다시 질문드립니다.
강의 내용과 비슷하다고 생각되는 게임 스팀의 건파이어 리본으로 예를 들어 질문드리겠습니다.
로비화면에서 게임 시작을 누르면 친구를 초대할 수 있는 화면으로 이동하는데 여기서 친구를 초대할 수 있고 플레이 할 캐릭터를 선택할 수 있습니다. 그 후에 시작을 누르면 초대한 유저와 초대된 유저들은 게임 레벨로 이동합니다.
online subsystem을 사용해서 친구를 초대한 후에 travel기능으로 전투 레벨로 이동하면 될 것 같은데 이 때 로비와 전투는 초대한 사람이 나가도 진행되기에 데디케이트 서버일 것으로 생각됩니다.
건파이어 리본의 로비에는 본인이 착용한 캐릭터, 재화 같은 것을 표시해주는데요. 이 정보를 받아오기위해서는 클라이언트가 서버로 요청해서 받아올텐데 정보를 기록하고 받아오는 것이 online subsystem이나 언리얼서버로 가능한 것인지요? 가능하다면 관련 키워드 부탁드리겠습니다.
별도의 서버를 구현해서 받아온다면 이 서버와 통신하는 것은 클라이언트의 로비 레벨의 게임모드에서 하면 되는지요?