I made a simple Room-based Low Code Multiplayer Framework for Gamemaker🚀
Tags: gamedev, career, showdev, startup
Published: 2023-11-11 11:46:31

Hello, fellow game developers! 🎮

I'm thrilled to introduce you to Rocket Networking, a powerful networking engine designed specifically for GameMaker. 

[Rocket Networking](https://rocketnetworking.net/)

If you've ever gone into multiplayer game development, you know the challenges of implementing even a networking system. For beginners or game developers who are more on the artistic side, this can get very difficult and time consuming.

That's where Rocket Networking comes in, simplifying your journey and accelerating your project's success.

# Why Rocket Networking? And why particularly Gamemaker?
When I started this game development journey, all I knew was that I wanted to create my own .io game. (I finally did btw, check out my last post ;)

Gamemaker is the best starting point if you want to get into game development. Many would argue it is Unity, but the difference in learning curves is HUGE. And it really doesn't make sense to use Unity for 2D games, it's overcomplicating things a lot. Gamemaker has an easy to use IDE, easy to learn Script and is just overall more welcoming. 

## Need for a dedicated server
Unity does have a popular framework for making multiplayer games, Photon Unity Networking (PUN) and it's very famous. In gamemaker you had to start from the vanilla functionality provided and that isn't bad but it is very time consuming. The problem is you can't really build a scalable multiplayer game that anyone can play anytime around the world. For that, you need some kind of a **dedicated server that is always on**. Otherwise you're stuck with local multiplayer. You can see this starts to get messy. 

_I have to go to a cloud provider? Rent a VM? Write a script in some backend framework like Node.js? And then make it communicate with gamemaker?..._

Even after that you have to learn how to use Buffers (which are infamously hard) to communicate, which is definitely not for the beginner.
However this isn't that bad because it's only a one time thing. Once you learn how to use buffers, you just have to repeat that code.

## How Rocket Networking Solves this Problem
Rocket Networking will host and manage the backend server for you. So you don't have to touch any backend code or go to another cloud provider. All you have to do is make an account with us, and there you go.
Our Client side Gamemaker extension is designed so that communication is dumbed down to just 1 line of code to share data with the server.


# Room Based Multiplayer

## Rooms (Auto State Sharing)
Making multiplayer games is broken down in RNet to rooms. A client can choose their room like "public" or "lobby" and they automatically share data with other clients in that room.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/edk7qe6cig3zo3103277.png)



So if you are in the "lobby" and you are sharing your "name", then other clients are automatically created for you and you can see all their names. 

## Dynamic Player Creation and Destruction
You don't have to worry about creating a new player everytime someone joins the room or destroying that player everytime they leave. All that is auto managed. You just have to outline the general stuff. Like print the "name" on top of the player.

## Entity System
Some elements in multiplayer game development are not just limited to a client. This can be NPCs, bullets etc.. For those things, we have an entity system. So if you create an entity, it is created for everyone else until you destroy it. You can see this perfectly fits the application of a bullet that you shoot.

## Private Messaging System
This is independent of the pre existing state sharing system, so you may or may not pair it with that. Sometimes state based sharing of data can be heavy... And in turn based games it's not the optimal solution. What if we could just send an individual packet of data from one client to the other? That is the Private Messaging System, built separately and very easy to use
**Example usage. Your bullet hits another player, you have to tell that player to reduce their health by 10.**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uxbjxcuuegq5uex4fttf.png)

# User Reviews and Games
To be completely honest the customer base is still very small but we've got some wonderful feedback from those who have used it!


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s7fsrp6ylrkkid4cregn.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tre095vqztq0ok06deii.png)

I also have some sample projects you can try out...

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bk6x7o3afr25ka8y1j5r.png)


[Open this](https://lil-shake-code.github.io/lilshake-io/) with your friend or even in 2 tabs or 2 people from anywhere in the world. All this code is available on github so you can get started easily.

On the Website I have all these guides.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g9hgk1rtjxgydne845in.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d4os569nic5co0tmg0lf.png)



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ml8xplvc5zya6x4sgcma.png)





Thank you so much for the time to read this post!💝. I appreciate it a lot, and I hope I'll see you soon :)