Asset - Extension Multiplayer Plugin Beta

Hello GM Community:

We are working on a multi-player drop-in for GM2. We originally built it for Unity but since they have gone public they are impossible to work with. The basic concept is an easy development drop-in that provides data, audio, and video capability with no other necessary configuration. There is a web console where the developer can monitor data and usage, and manage all the necessary multi-player aspects.

Our goal is to have an open free public beta on June 1.

I am posting here looking for feedback. Our current plan is to drop Windows support first, then HTML5 a few weeks later.

Open to any comments or suggestions to make the beta as successful as possible.
 

Biosyn

Member
This looks like an interesting concept. Don't have any input to add but curious to see what you come up with.
 
Hi Biosyn, thanks for the comment. Do you have a link or something I searched and found this: https://yellowafterlife.itch.io/, which is an amazing resource but I don't see GMTogether.

We have the plugin working FYI, we built a server component for it and can relay over 300 frames per second between two GML game beta's. We are thinking we will be releasing the GML code as free, and that we will have a free server side component for development, and a paid option if the developer does not want to figure out how to setup a pythion server of their own for the server side. But that's subject to change as we move forward.
 

Biosyn

Member
Sorry, I edited my original post to avoid embarrassing myself for misunderstanding your project's actual goal/scope. But it looks you're replying to the original post so maybe I wasn't wrong afterall lol.

Link is here:

What surprised me about this asset is that it was the closest thing to a "add multiplayer to your game right now" extension that was out there for GMS at the time. Doesn't of course work for more than 2 players (plus some other limitations), but this wasn't a problem for me since my project is 2 player only anyway.

I've tested it and it works pretty well. But again, it's for two players max. Not sure if your system can allow an "out of the box" solution that allows for more than 2 players, but definitely would be awesome to see.
 
Last edited:
This looks like a nice drop in thank you for the link. We're routing through a server instead of peer-to-peer, which is nice because you get metrics about what it going on, what people do in the game, how many people are playing, and so on. Its all anonymous data but you can use for debug and what not.

We love the GML language and IDE, coming over from Unity where we developed before.
 
Hey Waliente: Absolutely. We're behind, of course, but in the best possible way. We have the GM2 Object done, and the core server built, we're working on the developer console so you can see what is going on, turn on enhanced reporting (not really debugging but we'll probably get there). We also pulled out the attempt at video, but have enhanced the audio integration using GM2 build in mic controls.

We're refining 2 things, the GM2 buffering and queues (we had to end up creating queues for sound to keep if form being to choppy), and we had to rebuild the original message infrastructure to have a queue adder and queue sender, due to the multi-event structure of GM2.

All learnings for us (coming from Unity Dev).

Bla bla bla, we're really close, maybe another couple weeks, to dropping the free beta.
 
Hi and thanks so far for the interest. We're getting close. There is a server component but I wanted to post a quick video of the plugin working. If you look close the 13: line shows the messages coming in from the server broadcast once both players are in the same room.


If you want to be part of the beta, send me a PM on the board and we'll get in contact.
 
Another little video with three players. The plugin can handle theoretically unlimited players, but the network is not your friend beyond some smallish number like 5 or 10..


Thanks for the beta interest so far. If you would like to participate and have not PM'ed me please do.
 

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
I'd be curious to hear about the methodology (whether it's RPC, variable/event based sync, deterministic, etc.) - there had been several attempts to replicate Photon SDK for GameMaker, but none of these caught on so far. And/or about the equivalent Unity extension if that had seen the light of the day.

My "GMTogether" tool that someone linked above is slightly different - it uses DLL injection to rewire buillt-in functions to obey deterministic lockstep rules, which does mean that the game doesn't have to do anything to support it, but comes at cost of input latency and general favorability for P2P.
 
Hi YellowAfterlife, we use a pub/sub architecture with callbacks. The real magic is in the socket server we built in python to manage the real-time micro-subscriptions. Everything is very low friction, about 50ms (5% of a second), so the latency is about one frame at 60FPS. We also are able to log every call, so, through the web console a developer can see who is playing (IP) and what they are doing, plus they can examine messages and sequences during development and debugging. We're working to finish the website now that will have some code examples. Our plan is to also allow developers to blacklist IPs if they need to (the framework is there but this is not finished yet and won't be for the beta).
 
New video this one shows the backend server console to start to give an idea to the full scope of the plugin. if you want to participate in the beta please sign-up on the webpage or send me a PM here. (this video has sound talking)

 
OK we're finally opening up the beta. Sorry it took so long. We finished our internal beta with developers that didn't work on the product to get a feel for how it would be used. We were surprised at the, hmm how to say, approach that was taken. They tried to send dozens/hundreds of individual messages every frame back and forth, which of course can't work. The network is what it is.. So I am just writing up some 'best practices' that I will add to the documentation and get it posted then open it up.
 
Top