Disclaimer: your definition of brilliant may vary
The hardest part of coding up multiplayer games is the setup, it's just a sh*t tonne of boilerplate:
- Creating the player object
- Setting up the socket
- The tick rate
- Players joining the game
- Players leaving the game
- Creating the canvas
- Connecting to server
- Rendering the entire game
Don't give up on this blog already. I've been a proper good lad and compiled a quick starter project for you so you can just completely ignore all of the stuff above.
What is P5 Multiplayer Game Starter?
It’s a very simple way to kick-start your multiplayer game development using express, socket.io and p5.js. It represents an opinionated approach to multiplayer game development which should allow you to skip the laborious beginning boiler-plate steps.
git clone https://github.com/LukeGarrigan/p5-multiplayer-game-start.git
npm installin the root directory
npm startto get it running!
The project is very simple, it sets up a client Player class and a server Player. Every 16ms the server emits the current state of the game to the client. If a new client joins the server a new Player will be added to the game and displayed on all clients, it also automatically removes players when they leave the game. These are the standard features I frequently have to reproduce when creating a new multiplayer game, so I hope you find this as useful as I do!
Each client will be a player of your game, they all communicate with the server. The server will control all the game state, such as the player position. The position of the player will be emitted to the all of the clients so that each client can render (using p5) the player in the game!
A player joins the game by going to localhost:8080
So basically, in its simplest form the repository handles clients joining and leaving the game.
So there we go, what I recommend you do is having a play around with the repository, add some basic physics, get some interaction with the clients. This should give you the very basic building blocks of your next IO hit!
I hope this helps some of you and I would love to see the games you create with the starter project! Please share them in the comments 😁
Follow me on twitter if you don't want to miss out on absolutely brilliant programming insight: 🤣 @luke_garrigan