Networking Architecture in Gamemaker Studio

December 2023

I did this project/study over the course of a couple weeks. I went into this project fairly blind with my initial goals being to make a multiplayer framework and some form of side-scroller to accompany it.

INSERT FINAL GAMEPLAY HERE

Breakdown of the multiplayer system:

1. At the start of every frame each client sends their inputs to the server.

2. During the frame the server receives the packet of client information which triggers a function.
3. The server then unpacks the packet which contains buffer data, and translates the raw data into values it can use to perform logic.
4. The server then sends all the object data (Players, Projectiles and other Information) to every client at the end of the frame.
5. The client now receives data on what to draw to the screen.

6. Repeat this for the entirety of the game.

client send input code

server interpret packet function

client interpret package function (PARTIAL)

This system as with any has it’s pros and cons. The main pro being that it is extremely efficient client-side as almost no math is done. The main con is that this method lacks client-side prediction and when packets get lost it can result in inputs being dropped all together, which is not good. From this project I learned how to develop a scalable networking system, how to send packets between clients and the server, and server versus client authority. If I were to restart this project or do a similar project in Gamemaker Studio I would code in some form of client-side prediction to prevent inputs being dropped and smooth out some of the kinks.

Skills learned:
Networking Architecture

RETURN