https://github.com/cestef/gamemaker
Easy Matchmaking nodejs module
https://github.com/cestef/gamemaker
Last synced: about 1 year ago
JSON representation
Easy Matchmaking nodejs module
- Host: GitHub
- URL: https://github.com/cestef/gamemaker
- Owner: cestef
- Created: 2020-12-19T14:13:30.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-02-17T17:06:54.000Z (over 2 years ago)
- Last Synced: 2025-05-03T04:39:51.540Z (about 1 year ago)
- Language: JavaScript
- Size: 1.62 MB
- Stars: 9
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
gamemaker
[]()
[](https://github.com/cstefflexin/gamemaker/issues)
[](https://github.com/cstefflexin/gamemaker/pulls)
[](/LICENSE)
---
## 📝 Table of Contents
- [About](#about)
- [Getting Started](#getting_started)
- [Usage](#usage)
- [Built Using](#built_using)
- [Authors](#authors)
- [Acknowledgments](#acknowledgement)
`gamemaker` is an easy-to-use matchmaking nodejs module. You can easily modify the module by adding your own matching/sorting functions to the constructor parameters
Install the package with npm
```shell
npm install --save gamemaker
```
```js
//require the module
const Matchmaker = require("gamemaker");
function startMatch(players) {
//"player" parameter structure: {player: the player object, addedAt: timestamp when the player was added to the queue}
console.log(`Match started with players: ${players.map(e => e.player.name)}`); //fired when a match starts, passing all the players as arguments
};
function getPlayerID(player) {
return player.id; //Return the player property that includes its id
};
function matchPlayers(players) {
///... do something to check if the players match together
return true;
//return true or false
};
function sortQueue(a, b) {
//sort with the a and b player object
return a - b
};
const defaultQueue = []; // default matchmaker queue (array)
const matcher = new Matchmaker(startMatch, getPlayerID, {
checkInterval: 2000, // interval in ms to check the queue
minMatchSize: 2, //minimal party size to launch the match
maxMatchSize: 5, //max party size
matchPlayersFunction: matchPlayers, //the function used to tell if the player match together or not (default returns true)
sortQueueFunction: sortQueue, //the function used to sort the queue (default sort by add time)
queue: defaultQueue, //the default queue for the matchMaker (default [])
});
matcher.init(); //init the matchmaker interval
matcher.addPlayer({name:"Bob", id:0}); //Add a player named "Bob"
matcher.addPlayer({name:"John", id:1, someRandomProperty:[123]}) //You can also add other properties to the player object
matcher.removePlayerByID(0); //will remove "Bob" from the queue
matcher.addPlayer({name:"Alice", id:2}) //Add a player named "Alice"
matcher.getPlayerByID(1) //will return the "John" player object
//Output: Match started with players: John,Alice
```
- [NodeJs](https://nodejs.org/en/)
- [@cstefFlexin](https://github.com/cstefFlexin) - Idea & Initial work
See also the list of [contributors](https://github.com/cstefFlexin/gamemaker/contributors) who participated in this project.
Inspired by the package [matchmaking](https://github.com/Luifr/matchmaking)