Ask Your Question
0

matchmaking 시 매치 후 ready 시스템(2016-10-23, david_yoo)

asked 2016-11-30 18:27:33 +0900

inkeun.kim gravatar image

안녕하세요. 엔진 정말 잘 쓰고있습니다. 다름이 아니라 이번에 게임 이 수정되서 기존에 매치 매이킹 request -> mach ok -> game 이런식의 바로 매치 후 게임으로 가는 시스템에서 "모두의 마블" 처럼 매치된 유저를 보여준 후 래디를 입력받고 그 후에 matchcompletion 을 하는 시스템으로 기획이 조금 바뀌었습니다. 문제가 매치가 된 후 서로의 데이터를 보내주는건 가능할 것 같은데 그 후에 ready or cancel ready 를 입력 받을 떄 해당 match 의 player array 에 이를 반여해주려하고 (context 에 ready(bool) componet 추가) 둘다 레디를 할 시 게임으로 진행되게 하려고하는데 이를 구현하려면 어떻게 해야되나요? 보니까 match 후 별도의 api 를 만들긴해야될것 같은데 onjoin 후 유저에게 매치된 매치 id를 전해주고 새로 생성한 api 에서 이 매치 값을 input으로 해서 해당 유저가 있는 match structure 에 접근을 해야되는데 이런 기능이 있는지 잘모르겠네요.. 감사합니다 ^^

edit retag flag offensive close merge delete

2 answers

Sort by » oldest newest most voted
0

answered 2016-11-30 18:28:20 +0900

inkeun.kim gravatar image

Answer by seunghyun · 2016-10-24 AM 06:20

안녕하세요, 아이펀팩토리입니다. Matchmkaing 과 별개로 '대기실' 개념을 구현하시는 게 좋을 듯 합니다. (MatchmakingServer 의 OnJoin, OnLeft 등의 Callback 을 이용하여 구현하는 것은 바람직하지 않을 듯 합니다.) 대기실 개념이 추가되면 StartMatchmaking() 를 호출할 때 와 Matchmaking 서버의 각 Callback 함수에서 Player Context 가 1 명의 유저가 아닌 1 명 이상의 유저를 표현할 수 있도록 변경하셔야합니다. 예를 들어 기존에는 아래와 같았다면

Json player_context
player_context["level"] = ...;
player_context["point"] = ...;
MatchmakingClient::StartMatchmaking(..., player_context, ...);

이렇게 표현하도록 수정해야 합니다.

Json players;
players["slot1"]["level"] = ...;
players["slot1"]["point"] = ...;
players["slot2"]["level"] = ...;
players["slot2"]["point"] = ...;
...
MatchmakingClient::StartMatchmaking(..., players, ...);

또한 MatchmakingServer 의 콜백 함수들도 위와 같은 방식으로 바뀌어야 합니다. Json 형식의 Context 데이터를 읽는 것 뿐만 아니라 1:1, 2:2 상관 없이 항상 1 명의 유저가 매칭되면 kMatchComplete 로 매치 완료 처리 후 대기실에서 추가적인 인원이 필요하면 다시 StartMatchmaking() 을 부르는 형태로 구현할 수 있습니다. 대기실 안에서 이루어지는 기능 (채팅, 레디, 팀 선택 등) 은 Matchmaking 과 별개로 구현하시면 될 듯 합니다. 감사합니다.

edit flag offensive delete link more

Comments

david_yoo · 2016-10-24 PM 01:51 0 흠 무슨말씀인지는 알겠네요. 그럼 해당 유저의 아이디가 어느 매치에 속하는지도 알수 없는건가요?? 새로 만들긴 해야할듯한데.. 인터넷이 끊겼다 연결될시 다시 자신의 속하는 매치 정보를 받으려 할때 등 필요가 있을것 같은데 이런 기능은 없나요?

아 그리고 매칭 시간이 지나면 ai 를 추가해주는 섹션이 있는데 ai는 어떤식으로 추가해주면 되는지도 부탁드려요~ joined 함수처럼만 해주면 되나요?

inkeun.kim gravatar imageinkeun.kim ( 2016-11-30 18:28:27 +0900 )edit
0

answered 2016-11-30 18:28:53 +0900

inkeun.kim gravatar image

Answer by david_yoo · 2016-10-24 PM 01:50

흠 무슨말씀인지는 알겠네요. 그럼 해당 유저의 아이디가 어느 매치에 속하는지도 알수 없는건가요?? 새로 만들긴 해야할듯한데.. 인터넷이 끊겼다 연결될시 다시 자신의 속하는 매치 정보를 받으려 할때 등 필요가 있을것 같은데 이런 기능은 없나요?

edit flag offensive delete link more

Comments

seunghyun ♦♦ · 2016-10-25 AM 01:11 0 유저가 어느 매치에 속하는지 알 수 있게 하는 것은 구현 방식에 따라 다를 듯 합니다.

가장 간단한 방법은 유저가 대기실에 들어갈 때 Session 의 tag 나 context 에 저장하는 방법입니다.

/usr/include/funapi/network/session.h 의 Tag, Untag, SetContext, GetContexct, AddToContext 등의 함수 참고 부탁드립니다. (아직 레퍼런스 문서에 설명되지 않은 내용이라 헤더 파일 참고 부탁드립니다

inkeun.kim gravatar imageinkeun.kim ( 2016-11-30 18:29:06 +0900 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2016-11-30 18:27:33 +0900

Seen: 96 times

Last updated: Nov 30 '16