Joseph Holley helps customers design and implement online game backends on Google Cloud Platform. Prior to working at Google, he worked in DevOps at Cloud Imperium Games and Blizzard for eleven years. He is the co-founder of the open source project Open Match, a massively concurrent matchmaking framework.View the profile
Mark Mandel is a Developer Advocate for Games for Google Cloud Platform, founder of the open source, multiplayer dedicated game server scaling project Agones, and one part of the Google Cloud Platform Podcast. Hailing from Australia, Mark built his career developing backend systems for over 15 years and authoring and contributing to several widely adopted open source projects. When he’s not building infrastructure in the cloud for games, he’s constantly looking for new and interesting things he can do with Docker containers, playing with his dog and reading too much fantasy literature.View the profile
About the talk
The infrastructure for global-scale, real-time multiplayer games is difficult to develop and maintain. Building matchmaking platforms, dedicated game-server orchestration, and all the coordination therein is a lot of work to do — and can be a distraction from building your actual game. Thankfully, open-source projects built on top of the Kubernetes platform, such as the matchmaking platform Open Match and game server hosting platform Agones, are available to do much of this work for you and get your multiplayer game up and running at global scale as fast as possible. In this talk, we’ll be looking at how you can use Open Match and Agones together for a comprehensive matchmaking and game-server hosting solution. We will also look at some of the more advanced features of both projects, such as auto scaling to ensure you can handle all your game-launch needs.
The term multiplayer games is like wide and varied. We want to talk about very specific types of games. But so if it's no constraints on it, so the types of hot is your fast-paced online competitive multiplayer games, right? For example, like your overwatch's of your fortnite. So your rocket League things like that. They have very particular types of needs to come down to like matchmaking a dedicated game server scaling that we're going to talk about today and games that we want to talk about today. There's there is a wide variety of multiplayer games today and the
protected leave us work on as well. Some of you may be familiar with this some of you maybe not this is generally speaking watch a traditional architecture would look like for an online multiplayer game. There are a variety of ways in which one can do this just so I'm clear. This is a very prevalent way of doing it could be a whole lot of talking and of itself but in this particular example, we might have a couple of players that want to play a game. They're like cool. Let's play a game. That sounds awesome. And so they're going to connect to some kind of
Matchmaker that usually a Matchmaker will look at things like your skill level, maybe your social graph of your friends. I put you together in a group so that they can like the hair you together. So they think you're going to have a really good gameplay experience. Once they've got you and put you in this group. They're going to go talk to some kind of game server manager. It is a full simulation of the game that happens somewhere on the internet. Players are there for going to connect to this means that they can share information about what's happening inside. The game dedicated game server can
tell the players. Hey, this is what's going on. And it also has some control and that we can play FIFA game servers around the world. I will sort of latency speed we can expect because we have a basic idea speed of lightning Network speeds and things like that. So this game server manager job is basically to say, okay. I probably have a huge number of machines there probably distributed around the world and I need to say, okay, let's go find the machine that has some CPU resource available and some memory and set up a game server process on them and then get that going and then find the
port and then turn that all the way back down the pipe back down to the matchmakers is so that those games servers can get an IP and port cuz they're going to connect to an individual process on a machine. I'm in this game players will both connect to the same IP and port on one of those machines to that dedicated game server instance so they can play a game together rights being a share that simulation. And this is like all of the games that we all play people play online games. I'm guessing you do because many of you were here how how late is and work but a lot of this is usually a lot of
the time very bespoke. You kind of have to do it yourself, you have to build yourself and that Todd had a lot of work and I don't know I find it interesting problem, but I'm getting a lot of people don't so here is matchmaking wouldn't it be lovely if there was some sort of made the open-source standardized matchmaking framework type thing that help solve the problem and then also here when we talked about this game server manager at coordinating game servers ever let the machines that be nice if there was some sort of open-source standardized game server manager type thing
would not be lovely. We mention this little bit previously both of the solutions were going to be talking about today and I just want to highlight this for three very important reasons. Where's the nearest projects one on top of kubernetes and slightly different ways. We'll talk about that in a bit. But this is really important. There are several reasons one of which is simplicity. So usually when told me the game companies that run say services that does matchmaking but also Game servers, they run very different
platforms for both having a single platform for both of these workloads means that there's a simplification of the knowledge. You need your team the tools you need to use all that kind of stuff that makes that much easier for your team's to basically either get up and running. And also do you like gay 3-day for kind of operations? I think it goes without saying is probably quite knowledgeable about there's a huge ecosystem. It's cool in here right. Only do this with kubernetes not just built by Google but a variety of Pinehurst that did this work and there's only two Indigo Zone around it.
Finally, I think most importantly especially for dedicated Game servers. Sometimes you just need to put Game servers and these kinds of latency Sin City outlet sensitive applications in weird places around the world. Just cuz sometimes players just show up in odd places and you need to put them there and maybe your Cloud covers that maybe we have bright cheeky coverage there or something maybe sometimes we done. I fought for my community's means that you can take your entire stock and put it exactly where your players need and that's really important to us. All right.
So we're going to start talking a little bit about open match. This is a framework that we co-founded last year with unity. It was announced that unites Berlin last summer. If you are interested in learning more about the founding of it and our relationship with unity. I recommend you go check out the talk on YouTube about that. We are really focused in this project on solving a lot of the really basic plumbing problems and matchmaking like getting players connected to the matchmaking service integrating the matchmaking service with your back-end infrastructure, but
leaving the bits in the middle, which is like your custom matchmaking logic up to you not really being forced prescriptive about that at all. So it's very flexible design with apis a table horizontally scalable. So you can handle your player load even if you end up with a really big hit and it's designed as a sit in a great well with your existing process. Is or other tools that you want to use it is written in golang but your own custom matchmaking logic you can write in any language. You can put in a Docker container. So how it works the game clients will connect to the API
that open Match exposes for the front end. They pass in all of the different attributes that you might want to try and match players on developers then write these custom matchmaking functions. Like I mentioned before that can be in any language you want the only real requirements as you have to be able to package it in a Docker container cuz it does run on kubernetes and it needs to be able to talk to redis which is the back back in state storage for open match. It allows you to run a lot of these matchmaking functions can currently which is both a way to
handle scale and use the Ability that kubernetes has to schedule is automatically for you. But also to enable you to try to iterate really rapidly on this logic piece that is most important to you as a game developer of how do I figure out which players play together? So let's start with a demo and then I'll dive in a little bit further in a minute on the actual architecture. Can we switch to the demo? That's great. Awesome. So what I have here is an empty coronavirus cluster me quickly show you that there's nothing in it also
important to note upfront. I am not very good at typing and talking at the same time. I'll do my best, but I'm not not great at that. So Right. Now this project to set up with a number of images. I've already pulled them set them up in the projects. Most of these images are available publicly from the open Match repository and we have a public container registry. You can pull these from that you can see I've already got the images there. So the first thing I'm going to do is just installed open Match in the college to see what the process of that is like so you can see how
simple it is. The first thing I'm going to do is create a kubernetes configmap this contains all the configuration for open Match if anyone here has actually gone and looked at the open Match repository and seeing what the configuration looks like. I am applying almost exactly the one that's in the example on the repository. The only difference you can probably guess from the title there as I turned off the debug logging cuz that does not make good for a good demo. So first of all, we're going to stand up an instance of rightists just running redis within kubernetes. There is a
it is you. kubernetes secret for its password username and password to login to Reddit Now I'm going to install open match. This is a series of kubernetes deployment and services in front of them makes a few show you those. So you can see here. We have now six pods running so redis and then 5 services from open match. That's the OM at the beginning of those. These are run is deployment to something were to happen. Kubernetes will take care of starting it back up for you and also allows you to very easily
scale those deployments if you get a big hit and you need to handle more players. So first thing I'm going to do after actually standing up open Match is 6mm players in open Match starts going to take just a second cuz it has to pull down the image. I just made a brand new cluster for this demo. So what this particular pot is going to do is spin up this pod just like those other images that I showed you earlier are just available for public on the open Match public registry, but it's going to spin up it's going to Q
10000 players in open Match 7. * that's the seven Cycles with 10,000 players per cycle to get a bunch of players in so I can actually show you what it looks like whenever Open matches doing your matching logic. Dial it that run out take just a second. And then I have a Matchmaker that is written against open Match and I use that kind of language intentionally open Match is not in itself a Matchmaker. It is a framework for writing scalable matchmakers on top of kubernetes. So this is the example of Matchmaker which is currently on the repository.
It's not very big. I think it's probably 220 or 250 lines of code. Therefore it is really basic. But what it does allow me to do is run a lot of concurrent matchmaking function. So you can kind of see how scaling Works in open Match do in general the approach of Open matches like you and is very large player population mine right now is 70,000 people. I'm going to try and split up that population into a few different Trunks and then look within all of those trunks
simultaneously for matches. So allow me to like get a lot of matches at once without having to chew through all of the players in giant piles of sequential code. One of my deployment sometimes takes a minute to start. So the first Loop occasionally I didn't give it long enough to start up for the demo, but you can see here. I'm looking for two teams of eight four times in four different parts of the player population. You can see the pools here between 10 and 15000 players roughly per pool with in those pools. I'm
only looking for 16 players for this didn't take very long at all. You can see I ran off work of those can currently in like just a little over two seconds. So that's not very interesting in terms of the scale of the Mets is definitely designed to go a lot wider than that. So it's not going to split it up into four hundred different buckets that I'm looking for players and you're going to see a lot of these go by with insufficient players. That means the part of the player population. I'm looking at their literally aren't even 16 players in that part of the population to make a match out
of so what this is demonstrating is running for Copies of your Ranch logic concurrently this usually takes around 20 or 30 seconds to complete unit 24 seconds. So I ran 400 copies about two-thirds of those found a match the other third did not because I was looking up parts of the population were there just weren't enough players there. You can see this got us a lot more through but though they smashed 4288 players and managed match about 180 players per second that it was searching. So that's kind of how you achieve scale with open Match. So can we go back to the
slides? I'm going to briefly go over the architecture and then marks going to talk about using a Gomez soap. This architecture show is basically the same diagram that Mark showed earlier only we've taken that box that just had Matchmaker and blowing it up to show you all the parts of open match. So to begin with the game client, we talked to the open Match front end the front end writes the player attributes to read us your server manager, which can be anything. Maybe you have bespoke code me, you're using an
off-the-shelf solution. Maybe you're using a gilneas. I would recommend it would talk to the back-end API of open Match that kicks off your custom match logic your custom match logic gets to read and write data from redis. It can read and write it directly. If you need that level of customizability. We also offer an API in front of artists to do really common matchmaking things like filtering players are retrieving large pools of players from Reddit at once the server manager will didn't figure out which players go on which servers I'll probably pick a server get the
IP and Port of that server that gets actually passed back out through open Match to your game Client app, which at this point goes connects directly to the dedicated game server. That's all real similar to what Mark showed you earlier. So this is already an improvement, but we still have some kind of bespoke server management system. So Mark's going to talk to us about replacing that with a Gomez mark. We have this other part that we also need to replace. Strangely enough. Okay. So we have another
open source projects for orchestrating scaling and hosting your dedicated game server has this is been a fun project. We've been working on it for over a year now, I think about it and it is billed as an extension of kubernetes that we'll see in a minute. So it's basically a thing that puts itself inside kubernetes. So suddenly kubernetes is like awesome. I know how game service work. This is actually really important if people are not familiar with dedicated game servers. They have this interesting thing where they go from stateless to staple. So when you don't have any players on a
game server, no one seems to mind if you kill them. When you have players on a game server people get really upset if you just ruin their gameplay experience because things on Reddit is awful. No one like that. So real capability and part of its really managing that transition between the two. Now what's really awesome is we didn't do this alone much like Joseph was talking about with the Opening match they built in collaboration with unity. We've been working on this quite closely with Ubisoft since the beginning. It's been a really great collaboration between us they've been able to
bring sort of there their experience and their knowledge around how to run large game server workloads and we have been able to bring out knowledge to work on kubernetes and open source community. Chuck show you how to do some stuff on a gun and some relaxing Leisure you some food and you can actually see how it happens surprisingly. If you want to start having a game server and running and running around it goes inside a container nothing more special than that. I'm sure that something very
familiar with the only thing we have is we do have an integrated client SDK that goes into the game server we have options available in C plus plus go rest or rest based to the real short answer here is if you have a language that needs support we have enough to pay for you actually realize most of energy is one of us not on my flight cuz it just came in the most recent release and I haven't updated the slides yet. But yeah, if you want to integrate it we can do it is really just about
managing game server house life cycle, which is just a little bit different knowing whether the game servers ready to accept players or not. Looking at the configuration things like that. Basically standard things you need for Game Servers. Stop I said before that has an extension of kubernetes. So when you use kubernetes and I think a lot of you have right, you're very familiar with Services there. It was deployments, right you have these nouns that exists inside activities. Well, once you install look on is now this you now and cold game server is a reality so we
can say that I would really like to name this game server synotic, which is example, we're actually going to use today. It's a free-to-play open source SPS and then we can specify things about this game servers fact that we want to have available to us. So one of the things that are going is also what does it set up that direct poor connection, so it'll do that. Then I make the portal locations for you to set up the port that information is ratatouille with inside the game server container to hear a pacifier to the game servers going to start import 2600. What is dynamic support once
we're done? I'm finally we're going to say hey, what's my game server container? What kind of what I actually put in here now for those of you who I'm more familiar with your days with many of you. Are you have a full pod stick here. So if you want to do, take naps all the amounts muscle containers. Now this is great for a single server in production in reality. When you really want to do this. Usually what you want to do is actually have a large group of priests fun game servers that are sitting there idle waiting for players. The X Games servers can take a little while to stay up. So
we have games again. Like we were previously a very aware of that changing life cycle between stateless and stateful I'm will go to a little bit and send them it up. But here we have a fleet deployment and that we specify how many replicas we wants to be to be mm up to you. And then we have a template which is a game server configuration a large chunk of game service Force, which is interesting question. You might have at this stage. But March you make Easter egg connections to these
games servers by IP and Port I don't have a load balancer. I don't have any of the usual tools that I may be familiar with. Do I get one of these out in like an atomic manner? So we have this concept inside a gun is called an allocation. Basically the job of an allocation is to say hey out of this big group of games servers. Can I please have one atomically and send it to it will be calling allocated state so we know that it had players on it and just do that work for me do it in the right way find the right place inside is cluster except for Citra so we can do we can send another custom
resource definition of the thing for the game's over allocation and we can say hey for in this particular instance. Hey for this particular, give me one out of this pool headed back to you atomically. Just give it to me and said it to allocated and give me the details please we can do actually a lot more we can serve allocation. We got some pretty complex electoral logic in there if you need it, but this is a simple example Once a week and then play a game on it. So can I have a switch over to demo, please? Did you do?
Thank you very much. Set readable in the back. Thumbs up. Perfect. Awesome. I'm going to use as package manager to install gone as you can use. a straight angle if he wants Gomez namespace system how long is a package manager for communities to basically install a bunch of stuff Stevia what we have in there I got his system so we have a bunch of things in there that the controller also the stuff but now we have a gun is installed Now kubernetes understand
what is actually runs throughout the entire system is really really excited I think they cute CCL get game servers and this is something you never understand so let's let's create a fleet against service we only had previously examples subnautica Fleet are you may be very familiar with that you could do this to the community's API as well it's all kind of you can you can you change one for the other is needed so now I can say hey And they are so we can see hear some information. We have a couple of games servers their remember from the example. We also having to they're both in
the state ready. So they're actually waiting to be allocated. We can do stuff with them. So super nice we look at this is from fleets as well. We can see here. We have two that already but three games are boring. The area that we can put that up to 200 if we want to look at that here. We can get those details of going to take a little while to come up with come on in biltz. Grafana dashboard and metrics are available if I come down in between. I got to run.
What's 2319? do we have an envelope metrics grafana dashboard we can also export to stackdriver basically everything comes out to consensus so you can send it just about anywhere to do all the stuff that you need to do as well to manager Game servers so here we can see how many are starting up how many are allocated how many ready this is running a little slow behind you leave things about every 30 seconds so we can take advantage of Uranus Let's go back to here. We look at our Fleet and
I said we have 200 ready. They came up pretty quick to super nice. Let's allocate 1 out of the set. Create a chef. Usually this would be something you would probably do 3D. I like your Matchmaker week old business. AA can allocate we might try a little later. Allocation. I'm going to go Dash aoyama. So it'll return to me exactly what the results of what it's done. So we'll do that got a particular game server awesome. Isn't that the allocated and here are a details? We have an IP and Port so what's actually play a game on here and see if it works or this network?
Stop I've dimaphen time exactly. So let's run that over a touch so that I can see this and let's see if I can type it. Excellent. So this is synotic. This is why this is the Arkansas rest first person shooter that we were talking about previously to the join. My screen is actually good. I don't know why they just made the game to give me heart attacks. This is how they like to roll. if I can find some other players that are about It is always happens whenever I'm playing like alone, like there's players everywhere. And then as
soon as I get like in front of an audience, like nobody's are there we go there Simba. This is me playing on his on a kubernetes cluster. That's actually running Us West West whichever one is closest to us. That's cool. But I want to show us a few more things before we close that. We can see here. We have one games over the delegated right? There's a player playing on it a couple more. Just wanted to see more. I may be at this point in time. We actually like you know what this
version is. Not good. Let's let scale it down. Let's get rid of it. So let's go flee. Synotic replicas ratchagan make a deal. What is it is very aware of that alligator games ever say don't sleep some cells we could do rolling updates. We could do a scale up and scale down but no matter what happens. It's always going to say. Oh that's allocated. I'm not going to touch that. So now if I look at my sleep, there we go. We can see we still have three of those three allocated Game servers. We're not going to touch it until they the South shut down or you or we specifically tell
them to be deleted. So that's kind of one of the big powers are gone is is managing my work load everything else, but this is really just the core of how this works. Excellence be lovely if we were friends. So let's talk a little bit about putting together a gonets and open match. So for this session, we had a Matchmaker built on open Match that understands and coordinate saigonese fleets. There is customized matchmaking logic that's running with an open Match to look for compatible players in this case. All it is looking for
is it the player said that it wanted to be part of our gcp next demo. So it's not particularly exciting matchmaking logic but it does show that it is possible enough players are found. In this case. We are looking for a whopping two players who want to play to get her the Matchmaker will allocate a ready game server from The Fleets and once that's been allocated it'll send back out through open match the connection details so that open Match can connect to the game server. So back to the gym. Do any of you watch cooking shows
a couple of you? Okay. So this may be familiar. I have a prebaked cluster that I'm going to pull out of the oven right now so that you don't all have to wait for me to spin up. Hey, I cluster sorry if I ran that command you would not have to wait switch over to that. So basically this is a cluster that we made earlier. It has plenty of CPUs that already has agonize installed on it. I'll show you briefly what's running in it. Turn this case. You can see it already has open my installed. This all looks really familiar from the previous demo. Although this is a different and slightly larger
cluster. So first of all, let's put in agonies Fleet in it. So in my case my fleet a little bit different it is not running is in adak. It is running UDP server, which is the most ridiculously simple UDP server. We could come up with all it is is a server that takes UDP clients and echo's timestamps to them once per second. It echoes the epoch timestamp. So it is about as proof of concept as you can get director is the name of this particular pattern of a Matchmaker.
I'm going to stand one of these up. So this Matchmaker understands agones and is looking for a fleece called UDP server. It is currently looking at that Fleet. If I were to show you logs from it. All you would see is an endless loop of there aren't any players. There aren't any players there aren't any players over and over again, so I won't tell you that. We actually actually put some players in. So first thing this does is put one player in that's significantly less than 70,000. I did last time old, buddy. Going to pay off. Just give me a second. So we've got one headlight
headless client cute for a matching. Now. I'm going to a Q and interactive client. This part can take a while. It didn't you can see it already got an assignment that came from a Gomez. So the Matchmaker has already gone to a gonez issues via the kubernetes API and allocate request gun back the allocation with this IP address and the dynamically allocated Port like Mark showed you earlier that's this assignment right here. And I know it's waiting for me to do something. So I'm going to connect to that UDP server. As I said before. This is not the most
exciting demo, you'll see at next but it is a good proof-of-concept. So if I click Start I am telling that UDP server. Hey start sending me timestamps. So if anyone is curious what time it is in in UTC right now, here you go. So we can also stop this as a very basic Rebel built-in. So that unsubscribes me then I can quit so once I quit is deleted my UTP client that game is still running. It still has the other player on it. Now. I'm just going to spin up some headless clients
two at a time for a while and watch a going to ace this is demoing something that is also really awesome that agones can do for you that is not in the demo that Mark was showing us earlier, which is a Gomez can do auto scaling. So this is set up with a fleet autoscaler Paula policy that says I want at least two available ready servers at all times. So every time that it allocates all of the servers, it will go back to kubernetes and start up more game servers for you to keep that war. Before he was talking
about earlier. This is basically just a bunch of numbers on the screen, but you can see that everything is working if I leave this up here while I talk you will see that slowly as my matchmaker is pulling in players allocating servers from the fleet and putting players on those servers the fleet will then go behind the scenes and start up a couple of more servers to at a time is what I had set for cuz when I said it to 20 earlier it just shot up so fast that you didn't see anything in the demo, but the number 200 like you showed you before it wasn't very
exciting. Can we go back to the slides, please? Awesome. So let's talk about what that did here is we're back to the previous diagram only we've collapsed back down that giant open Matchbox to be this nice little stack in the corner. So you can see we had the players connecting to open Match they connected to the front and API that we were talking about before open Match is running a Matchmaker inside of it that understands kubernetes and that's running the custom match logic. I talked about before looking for these headless
clients that are tagged that they want to play in the next MO. As it finds those it talks to the kubernetes API. It asks for an allocation from the fleet that reaches out to the agones controller. It going as controller goes grabs a particular server moves that server to allocated state gets the IP and port for that server since that back out open Match to the game client, which it's really hard to see on this but that is a green line going back the other way as opposed to the Blue Line we have before and then those players connect directly to
that dedicated game server and play know once you've got all of this in place open matches capable of scaling horizontally. If you get a really big cake game and you need to handle how much larger player base than you expected the gun cases capable of handling Basic Auto scaling for you. So this can significantly cut down on the amount of development time. You need to do around building. The nuts and bolts part of your game back end. So Mark you want to talk a little bit about other features a lot of work that have gone
into both of these projects. So there is a variety of stuff that we haven't really talked about which I want to highlight against their previously like both of these projects Works across Cloud providers. There's nothing special about the kubernetes that we're running on nothing like that at all uses standard communities tooling across-the-board on both of them have the capability to order scale with your load. So if you're running in the cloud you have that elastic ability to shrink and grow as a requirement need Where is Project
have local development tools? So if you want your developers are not necessarily spin up an entire electromagnetic cluster locally, or they just want a lightweight testing environment. They both have tools available to do that. I should have some of the metrics and dashboards that are available in Ghana is there's a whole lot more as well as metrics in deck boards that are available for our to match as well as all the same standards as Prometheus and old good stuff. Future developments about road map for Oregon
is we're looking to hit one point over this year. That's a big broad statement that gives us lots of room to wiggle. I'm happy with that which is good. But we have a lot more stuff. We've been doing a lot of performance improvements in the last few releases are but many more willing to come we want to do more metric collection display. There's a wide variety of metrics the game servers that we were going to take advantage of and then display for customers better commercial engine integration right now. There's lots of people who are using Unreal in unity that we want to have some
standardized tooling around that just make life easier for people multi cluster and Multiplex a coordination hour looking in the variety of ways on how we can do that and make that easier for people as well. And it looks like in 1.14. We have some really nice Windows hosting we want to look at how we can support that for game developers, especially a development time where a lot of game developers use Windows supporting in a production work clothes as well. So from the open Match standpoint Unity is recently completed their design for a longer-lived matching logic, which
is to say you can stand up the matching logic and kubernetes and not spin it down in between the cycles of your Matchmaker. So it makes it very fast to kick off the matchmaking logic. It's already there and running it'll just spend down and use very little teepee you whenever it's not necessary. We're also expanding metrics and dashboards are actually in the process of doing another design iteration on what metrics people want to get out of open match. So if you're interested in that, please come put your comments in the issues on the GitHub repository. We are going to be implementing
player and match tracings that you will be able to pretty easily see when a player went into your system what exactly they did one of the processes they went through which matchmaking functions considered them which match that got put in which server they ended up on that should all be things that You should be able to trace through whenever you need to debug something or troubleshoot something or just validate that things are working the way that you expected them. We want that to Aldi Hilton and baked in tools that we can all work towards taking for granted in matchmaking it and finally
we're just now getting the full Bill Jane set up with make which is going to kind of get all the fancy GitHub badges around, you know cicd whenever PR's get merged in they're going to need to be validated. So we are a slightly younger project. Then I donate Sierra Leone 0.4. But we have plans 0.5 soon and a shout out to the team that is working hard to make that happen. Fantastic before we run away. I would be remiss if I didn't mention if you want to get in the gun is cluster up and running you can find a gun is on the Google Cloud Marketplace. So if you want a quick test
cluster so that you can get things are running in the gutters installed. You can basically a poop poop poop and that socialism noises. It makes you can get up and running and play. Finally before we go where do people go to Livermore? So where to find us? This has the eventual URL home that'll be much is going to live in we haven't pushed to this site yet. So don't be surprised. If you go look at it on your phone immediately after the session if it's not there yet, but this is going to be
live on the internet in perpetuity. So by the time you're watching this on YouTube later, it's probably already there. If you need to go find more details about it immediately, please go check out get Hub or just Google search open Match. You can also follow myself on Twitter. That's my Twitter account. If we have a full site there with documentation social link you to a GitHub repository. You can follow wait on Twitter atacantes Dev. You can follow me on Twitter at the mention that we both have a very active slack channels as well as people groups. So if you want to get involved, please
come join us some slack. We would love to have more contributors diversity of impact in variety of perspectives is very much appreciate. We both think that open source has a really bright future and games. So please come and contribute. Absolutely finally on before we break into questions. I just want to mention my business cards it down here. So if you think you're going to have a question, maybe in two months time or three weeks time, but not right now, please feel free to come up and grab some but finally, I thank you so much for taking the time to spend with us. Your time is valuable. So
Buy this talk
Access to all the recordings of the event
Buy this video
With ConferenceCast.tv, you get access to our library of the world's best conference talks.