안녕하세요. 질문드립니다
387
작성자 없음
작성한 질문수 0
안녕하세요. 해당 강의와 관련이 없는 내용일 수 있지만 질문드립니다.
로그인, 게임에 필요한 정보 등을 주고 받는 tcp나 http 통신을 하는 서버(이하 소켓 서버)와 소켓 통신을 하려고 한다면 (로그인으로 예를 들어보겠습니다) 로그인 레벨을 만들고 소켓 통신하는 부분을 로그인 레벨의 게임 모드에서 동작하게 하고 게임인스턴스에(클라이언트) 정보를 받고 다음 레벨로 넘어가면 될까요?
그 후에 리슨서버나 데디케이트 서버를 사용해서 인게임 로직을 구현한다면 플레이어 정보(아이템, 레벨 등)는 클라이언트에서 서버로 입장 시에 앞단계를 통해 클라이언트에서 유저를 식별할 수 있는 최소한의 정보를 받아서(예를 들면 플레이어id) 소켓 서버로 요청 후에 클라이언트로 복제하면 될까요? 아니면 앞단계를 통해 클라이언트에 정보를 미리 받고 최소한의 검증만 하면 될까요?
언리얼 서버에서 매치가 종료된 후 결과에 따른 보상이나 매치 중 소비하는 아이템(물약, 장비 내구도 등)같은 db 처리가 필요한 경우 언리얼 서버에서 처리하는지 별도의 서버에 요청하여 따로 처리하는지요?
작성하고 보니 질문이 이해가 되지 않을 수도 있을 것 같은데요. 질문의 요지는 인게임 로직을 처리하는 언리얼 서버가 아닌 따로 구현한 소켓 서버와 언리얼 엔진을 연동하는 과정에 대한 질문을 드리고 싶습니다. 틀렸거나 더 효율적인 방법이 있으면 답변 부탁드리겠습니다. 감사합니다
답변 1
0
질문이 일반적인 실시간 게임 플레이와 무관한 게임 서비스 플랫폼 연동 혹은 서버 군 내 DBMS와의 연동에 관련된 내용으로 보여집니다.
먼저 게임 서비스 플랫폼 연동에 대한 부분이 있을텐데요,
스팀, 구글, 애플 등의 게임 서비스 플랫폼과 연동하기 위해서 언리얼 엔진은 단일 인터페이스에서 다양한 플랫폼과 연동하는 Online Subsystem이라는 플러그인을 만들어 제공하고 있습니다. 이 모듈을 활성화해서 필요한 때 플랫폼과 연동하는 함수를 호출해주면 됩니다.
다양한 플랫폼과의 연동을 통합 관리하는 상위 개념의 EOS라는 서비스도 제공하고요. 대부분의 상용 게임 플랫폼을 직접 지원하고 있는데, 직접 만드는 것도 가능하긴 합니다.
엔진 플러그인 폴더 내 온라인 모듈에 가면 확인 가능합니다.

서버에서 데이터베이스와 연동하는 방법은 다양합니다.
직접 데이터베이스 라이브러리를 사용해 직접 제어하거나, HTTP로 WebAPI를 호출하거나, AWS를 사용한다면, AWS에서 제공하는 플러그인의 API를 사용해 제어하는 여러가지 방법이 있습니다. 현재 상황에 맞는 방법을 검색해 적용하시면 될 것 같습니다.
0
안녕하세요. 답변 감사드립니다.
답변주신 내용과 online subsystem을 찾아보았는데요. 답변주신 내용이 이미 정답일 수 있지만 이해가 잘 되지 않아서 다시 질문드립니다.
강의 내용과 비슷하다고 생각되는 게임 스팀의 건파이어 리본으로 예를 들어 질문드리겠습니다.
로비화면에서 게임 시작을 누르면 친구를 초대할 수 있는 화면으로 이동하는데 여기서 친구를 초대할 수 있고 플레이 할 캐릭터를 선택할 수 있습니다. 그 후에 시작을 누르면 초대한 유저와 초대된 유저들은 게임 레벨로 이동합니다.
online subsystem을 사용해서 친구를 초대한 후에 travel기능으로 전투 레벨로 이동하면 될 것 같은데 이 때 로비와 전투는 초대한 사람이 나가도 진행되기에 데디케이트 서버일 것으로 생각됩니다.
건파이어 리본의 로비에는 본인이 착용한 캐릭터, 재화 같은 것을 표시해주는데요. 이 정보를 받아오기위해서는 클라이언트가 서버로 요청해서 받아올텐데 정보를 기록하고 받아오는 것이 online subsystem이나 언리얼서버로 가능한 것인지요? 가능하다면 관련 키워드 부탁드리겠습니다.
별도의 서버를 구현해서 받아온다면 이 서버와 통신하는 것은 클라이언트의 로비 레벨의 게임모드에서 하면 되는지요?
0
서브시스템은 게임 플랫폼이 제공하는 정보 ( 로그인 , 닉네임, 업적 등등.. ) 를 가져올 때 사용하고, 게임 자체 재화는 게임 시스템 내 데이터베이스와 연동해야죠. 자체적으로 서버 시스템을 구축한다면 꼭 어디서 어떻게 해야 한다는 법은 없습니다. 원하는 타이밍에 하시면 됩니다.
기획하고 계신 게임 내 구체적인 구현 방법에 대해서는, 강의 내용에 대한 Q&A와 무관해 더 자세한 답변은 어려울 것 같아요. 양해부탁드립니다.
5.6버전 Networking Insights 실행안됨 문제에 관하여
0
30
1
8강 중간, 분수대의 SetOwner 에 대해 궁금합니다.
0
77
2
플레이어(Actor) 로 (리슨)서버에서 생성 되나요?
0
99
2
2강) HandleBeginPlay 의 역활이 궁금합니다.
-1
72
2
3강 중간, 모드 로그로 찍을 시 스탠드얼론이 안찍힙니다.
1
76
2
CompressedFlag 질문
0
58
2
10강까지 머리 위 체력바가 표시가 안됩니다.
0
110
3
10강까지 머리 위 체력바가 표시가 안됩니다.
0
95
2
16:44 부분에서 질문이 있습니다.
0
104
2
12:50 NetMulticast RPC 커넥션 관려하여 질문이 있습니다.
0
121
2
github 3-5 파트 프로젝트에서 컴파일 에러가 발생합니다.
0
116
3
언리얼 인사이트 5.6버전 networking insights 가 뜨지 않습니다.
0
164
3
Insight 사용이 안되어서 문의 드립니다!
0
131
2
하위 레벨...?? High Level 말씀하신거죠..??
0
147
1
CompressedFlags를 이용한 InputThrottle, InputSteering 전달 방법 질문
0
191
1
조건식 프로퍼티 리플리케이션 질문
0
144
2
ArenaBattle에 Log추가하는 곳에 에러가 나타나 질문 드립니다.
0
160
2
7강에서 DORM_Initial 안됨
0
128
3
안녕하세요 강의 내용 정리에 관련해서 질문있어요
0
131
2
캐릭터 클래스의 mesh 관련
0
133
2
3파트 6강 분수대 로테이트에 문제가 생겼습니다.
0
131
3
클라이언트의 오너십 설정에 대해서 궁금합니다.
0
201
3
프로퍼티 리플리케이트 동기화 보장 개념.
0
225
2
결국엔 액터 기본함수들은 어디든 똑같이 일단 실행되는건가요?
0
93
2





