BSTRhino
I've been working on making a game engine with automatic multiplayer for 4 years now. Recently I added tilemaps, which I think makes it much more possible to make bigger, more interesting games. This is my update post about that.
Show HN: Geography Dash
Hi HN! This is a little game I made where you fly around the world in search for target countries. It's multiplayer, so you'll be racing with whoever else is online.I made this because I was making a data import feature for my game engine, and I thought one fun application of it. I've had quite a bit of fun playing and thought I would share it.
Data-Driven Games
I’ve been making a programming language with automatic multiplayer for the past four years. This month I added compile time data import to the programming language. I thought it was a feature with some interesting trade offs and thought you might be interested.
The multiplayer architecture is rollback netcode, which I think is great because it performs client-side prediction by running your full game simulation step forward on the full game state and not some subset or stripped-down version of the simulation or state. It’s the most accurate client-side prediction model you can have.
Then it achieves eventual state synchronisation by rolling back and rerunning your code when there is a prediction error. It performs automatic rubberbanding to smooth over the error corrections. All the bodies get rubberbanded, so as long as you attach your sprites to bodies (which is what you would normally do), the rubberbanding is automatic.
Rollback netcode is underutilised because it’s difficult to implement on other game engines. It requires your entire codebase and all your dependencies to be deterministic and snapshotable, and so if you’re using another engine like Unity or Godot, it won’t meet these requirements because it wasn’t designed for this. Products like Photon Quantum for Unity get around this by reimplementing all the systems like physics, RNGs and even just ArrayLists in their own deterministic manner. But you have to follow all these rules about writing your code in a multiplayer safe way and there are all these traps to avoid.
Putting the rollback netcode into the programming language means it always works 100% of the time and you can’t make a mistake, which means even a beginner programmer on their first day can make a multiplayer game. That was my ultimate goal and I think it is true that if someone who is an experienced programmer wants to hand-code a specialised rollback netcode implementation for their game then they might be able to do a better job on their game. But the defaults are really good when the rollback netcode is in the language itself and I’ve had teenagers make multiplayer games that they play with their whole class and they’ve all had a lot of fun, and that’s the main thing.
A programming language which lets you code multiplayer games like singleplayer games. Every program written in Easel is guaranteed deterministic and snapshottable, which is how it can automatically make your game multiplayer automatically using rollback netcode.
My hope is that teenagers who makes games in Scratch might like to make games in Easel because it means they can make games they can play with their friends, without having to deploy a server or learn anything about networking on synchronization. People can literally make a multiplayer game on their first day of coding.
Currently been working on adding tilemaps.
Turning your world upside down
A programming language that makes your game multiplayer automatically! It integrates rollback netcode into the programming language itself, guaranteeing that whatever you code is deterministic and can be snapshotted and rolled back. Then it integrates the networking and server automatically so you can just code your game like a singleplayer game and it'll be multiplayer automatically! I've been working on this for four years now.
Hotspots and Nine Slices (what's new in Easel)
Clipping vs. Substepping in Physics Engines
A game programming language that makes your game multiplayer automatically. This month I’ve been developing the tutorials so it’s easier to learn.
I'm the creator of Easel, a game programming language with automatic multiplayer. I've been trying to figure out what to do with the feedback that people have been finding it difficult, and this has been my analysis and my response to the situation. Maybe some of you might find this interesting?
Ease Comes After
We could have potentially used Fusion for this had it existed, but I don't know if we would. We didn't have to support 12 different languages, only 2.
Still working on my programming language which makes your game multiplayer automatically. Currently working on improving the tutorials. When writing the tutorials I followed the "focus on the action" principle from Diataxis (https://diataxis.fr/tutorials/) perhaps too much. Easel is a unique language in a number of ways and it really does actually have to be taught, so I'm trying to make it do a better job of that.