ketoo / NoahGameFrame

A fast, scalable, distributed game server engine/framework for C++, include the actor library, network library, can be used as a real time multiplayer game engine ( MMO RPG/MOBA ), which support C#/Lua script/ Unity3d, Cocos2dx and plan to support Unreal.

Home Page:https://github.com/ketoo/NoahGameFrame/wiki

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Where can I find / place matchmaker plugin?

duong2179 opened this issue · comments

Hi, in the architecture shown here https://github.com/ketoo/NoahGameFrame/wiki/Chapter-1:-Evolution-of-NF, which component is in charge of match-making? Where should I implement & place the matchmaker?

I have a plugin named NFMatchPlugin in my own game project and it will be loaded by WorldServer.

Workflow:

  1. The player(client-side) who wants to start a match will send a network message to find a match and the game server will route this message to the world server.

  2. The match module(or the match plugin in the world server) will process the "start a match" requirement and put it into the matching pool.

  3. The match module(or the match plugin in the world server) will make a team for players with the close battle points by time.

  4. The match module(or the match plugin in the world server) will find an opponent for teams by time.

  5. The match module(or the match plugin in the world server) will starts the match if we found an opponent for teams and picks one game server as the battle game server (if you have multiple game server). After that, the world server will send a net message to all game servers to notice players who involved this match to switch to the battle game server(if you have multiple game servers).

  6. The battle game server creates a group for this match and swaps all players into the group that you created before.

Thank you for your quick response!
Is there a way to integrate some open-sourced matchmakers like open-match into it?

Sure thing, the only thing you need to do is to write a wrapper for the library which you want to integrate.

In terms of open-match, the duty of your wrapper is to "interpret" your match requirements between open-match and your game project.

Thank you very much!