We’ve updated our SDKs, and this code is now deprecated.
Good news is we’ve written a comprehensive guide to building a multiplayer game. Check it out!
When it comes to multiplayer gaming, matchmaking is essential for matching up two or more players in a multiplayer game. In this blog post, we’ll walk you through our matchmaking algorithm for random matchmaking (matching up two random users).
We’ve now covered both building a multiplayer game lobby with a chatroom and the different ways we can use matchmaking to connect two different users. Here’s what we’ve covered so far:
This blog post is Part Four of PubNub Developer Evangelist Ian Jennings‘s series on creating a multiplayer game with JavaScript.
There are several uses for a matchmaking algorithm: pairing two parties on a phone call, pairing a driver and passenger, or pairing users to make edits to a document in a collaborative environment. For example, the same code we’ll write today could arrange a video call for Skype or Google Hangouts or hail a cab through Lyft or Sidecar.
To detect what users are available to play, we use PubNub Presence. The first is here_now()
which let’s us get a list of users in a channel in real time.
First, we add a header to our example. Within our .container-fluid
, we’ll add a new .row
up at the top. Inside that, we add a nav
element with styles taken straight from the Bootstrap navbar example.
Inside the .navbar-left
element we add a button with an id of “find-match”. This is what we’ll use to trigger the matchmaking process.
We’ll also move our #whoami
element into .navbar-right
to complete the header.
You’ll first need to sign up for a PubNub account. Once you sign up, you can get your unique PubNub keys in the PubNub Developer Portal. Once you have, clone the GitHub repository, and enter your unique PubNub keys on the PubNub initialization, for example:
Then we’ll bind to the click function and fire off the pubnub.here_now()
call when the button is pressed. This function is part of the presence library, but instead of sending events when users come online, a list of all online users is returned.
When the button is clicked, a list of online users logged to the console.
The uuid
field is populated with a list of usernames we supplied as our own uuid
in the previous chapters.
Let’s choose a random user to play against when the button is clicked. We’ll create an event to fire when the #find-match
button is clicked.
The first thing we need to do is clean the array. We don’t want our own username showing up here, so we loop through the array and remove any usernames that are equal to the value of me
.
We iterate backwards because the length of the array will change as items are removed.
Now that we have a clean array, we need to get a random value from it. We’ll useMath.random()
again here.
That’s it! Altogether the full click
function looks like this:
Check out the full matchmaking demo on CodePen or below. In the next chapter, we’ll make matchmaking a smarter by adding skill levels into the mix, then we’ll enable users to challenge one another.
See the Pen Memewarz – Matchmaking #1 by Ian Jennings (@ianjennings) on CodePen.5248
Next, we’ll continue our tutorial with skill-based matchmaking and challenging other users.
There are common underlying technologies for a dating app, and in this post, we’ll talk about the major technologies and designs...
Michael Carroll
How to use geohashing, JavaScript, Google Maps API, and BART API to build a real-time public transit schedule app.
Michael Carroll
How to track and stream real-time vehicle location on a live-updating map using EON, JavaScript, and the Mapbox API.
Michael Carroll