Ronin is a game I’m working on to demo my team’s Firebase Plugin speed
I just started work yesterday, so there’s not much to show yet, but it will be a drop-in deathmatch similar to agar.io . Players attack each other by dashing (in any direction), and Lobbies will be large fields with plenty of platforms and hazards to do combat with, and random pickups / aesthetic items that need to be attacked to open will randomly spawn, causing large groups of players to kill each other while attacking the item to unlock it. Lobbies will probably cap at 50 player death-matches for logistical reasons.
Here’s what I’ve got so far;
Player state information and position are live uploaded to the Firebase database, and updated to all other players in milliseconds.
Pretty cool. I’d personally suggest against the rotating thing you got their when you change directions, instead make it immediate. But that’s just me.
Database multiplayer is usually done in turn based games but if its quick enough then why not? also your pos is an integer, how does it convert to a vector2?
Example of the speed of the DB with no netcode over a 4g connection. The position’s being broadcast from my phone, to the google database, back to my laptop where it’s being interpreted literally (no prediction).
Little multiplayer demo. Still absolutely zero netcode (movement is -literally- just position data that they players snap to), after I add some physics netcode and attacks I’m probably gonna publish a little game demo!
I’m so proud of how fast OpenFire is, this is gonna be good when it’s done.
It’s doing a sinerp right now. I’m going to do full-on net-code soon, but for now I’m just dealing with that.
The high ping is also due to me forcing a high ping to get a 20hz network update rate to make it smooth; a more reasonable 80hz gets about 70ms ping round-trip.
Is there a server behind this that authenticates the user’s actions? In other words, is the server authoritative? I’m currently working on a little networking project on my free time and got everything working (connecting, disconnecting, sending messages), but now I’m integrating the server side into unity to allow for authoritative servers that can handle the physics on their side to compare with the users.
There is not currently (for budget reasons), but running an authenticated instance that sends sync packets wouldn’t be the most difficult thing in the world.
Currently, simulations are run client-side, with sync operations being handled by peers (enough to mitigate hackers; not 100% prevent them, but nobody can speed-hack, kill the entire server, etc).
OpenFire (if used as a backend for games) is basically a way to do p2p with low latency and high stability.