HNHacker News
TopNewBestAskShowJobs

BSTRhino

306 karma · joined September 12, 2018

Creating https://easel.games
submissionscomments
BSTRhino··on Data-Driven Games
Hi HN!

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.

BSTRhino··on A custom virtual machine for the Stars 4X game
I loved this game back in the day and was looking for a way to play it just last month! I will definitely be trying this.
BSTRhino··on Ask HN: What are you working on? (September 2026)
Yes, that's true, we could add an API to let the server generate the random number so it is unpredictable, I can consider that for a future update :)
BSTRhino··on Ask HN: What are you working on? (September 2026)
Yes, I spent quite a few years building and iterating on some quite elaborate mechanisms to handle latency too: https://easel.games/docs/learn/multiplayer/rollback-netcode - it’s taken a lot of continual playtesting to discover and address many issues.

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.

BSTRhino··on Ask HN: What are you working on? (September 2026)
https://easel.games

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.

BSTRhino··on Show HN: What if the speed of light was 5 km/h?
Less latency in multiplayer games or Zoom calls. Because light can travel around the Earth 7 times in one second, that means one roundtrip to a server on the other side of the world must take ~140 ms (1/7th of a second) which is a timescale you are able to feel. That's lag in multiplayer games. I'm constantly amazed that the reason why multiplayer client-side prediction strategies like rollback netcode exist is because light is slow enough on a human scale that we actually have to architect around it. Light is surprisingly slow in some ways.
BSTRhino··on Turning your world upside down
Hello HN! For the past 4 years I've been making a game programming language that makes your game multiplayer automatically. There is always a lot to do when making a game engine in order to make it capable of making real games. These are the latest updates for this month!
BSTRhino··on Show HN: C# Game Engine with its own scripting language and IDE
I think if you're looking for other people to use your game engine, it helps to have one killer feature. I'm not clear what yours is at this point. Even if your killer feature is not something you have yet completely implemented, but it is simply a long-term goal, I think it is worth listing that front and center.
BSTRhino··on Ask HN: What are you working on? (August 2026)
https://easel.games

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.

BSTRhino··on Hotspots and Nine Slices (what's new in Easel)
Hello, I am a solo developer making a game programming language with automatic multiplayer. I'm constantly trying to make it more and more powerful so that teenagers and adults alike can make the cool multiplayer games they dream of without having to deal with all the networking. This month I focused on making user interfaces better and easier, among other things, and this is my write-up.
BSTRhino··on Clipping vs. Substepping in Physics Engines
Hello HN! Just sharing something I have learned while making my physics engine which people might find interesting.
BSTRhino··on Ask HN: What Are You Working On? (July 2026)
https://easel.games

A game programming language that makes your game multiplayer automatically. This month I’ve been developing the tutorials so it’s easier to learn.

BSTRhino··on Show HN: Neil the Seal Game
haha this is cool :) What made you choose to code this as a webgame? In either case, good idea much easier to share
BSTRhino··on Astro 7.0
Very cool! What was the trickiest part of coding Sätteri?
BSTRhino··on Show HN: Homegames. An open-source game platform I've been making for 8 years
Wow! Can you tell us a bit about what the past 8 years have looked like for you?
BSTRhino··on Ease Comes After
Oh, I never thought about this, that's cool!
BSTRhino··on Ease Comes After
Yes it's great, I've never forgotten this either. It's from Rich Hickey in his Simple Made Easy talk, all credit to him!
BSTRhino··on Ease Comes After
Hi HN!

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?

BSTRhino··on Fusion Programming Language
I once had a C# server with a TypeScript frontend (this was for work, so I didn't choose the tech stack). We had one part of the code which had a lot of calculations. We wrote the code in a C# library, then used Roslyn to analyse the C# code and generate TypeScript code that matched it identically. This way the client could visualise the results on the client with zero latency, no server roundtrip, but ultimately the server would be in charge of the final calculations. It was a great solution, I would do it again.

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.

BSTRhino··on Ask HN: What are you working on? (June 2026)
https://easel.games

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.

BSTRhino··on Ask HN: What Are You Working On? (May 2026)
https://easel,games

A reactive programming language for games! Properties signal when they change and you can register blocks that tell the engine how to use that property, not just once but every time it changes. It’s a more declarative way of making games which I think is lots more productive.

I’ve been working on this for four years, it’s been a big project!

BSTRhino··on Making your own programming language is easier than you think (but also harder)
Great write up!
BSTRhino··on A physics engine with incremental rollback for multiplayer games
That is helpful feedback, thank you, yes all things I can work on in the future! Thanks for taking the time to write this up.
BSTRhino··on A physics engine with incremental rollback for multiplayer games
I would LOVE to one day make a source-available standalone license for Easel that you can run on your own server! I just have a bunch of problems to solve to get there before it’s ready.

1. The people who really love Easel right now are teenagers who have mastered Scratch and are looking for more. Expert game devs who come from Unity or other programming languages find it’s missing some capability they really want and tend to get frustrated right now. I’ve been solving so many issues every month, like we got multiple cameras the other month for example, but there’s so much left. If I made a standalone version now, no one would buy it because it doesn’t yet do what they need, and if you did I would probably be refunding you quite soon. We might need another 6-12 months to be ready for experts. Sign up to the mailing list and we can keep you updated.

2. I would be willing to go as far as source available to licensees but there’s are some practical issues with fully open source. First, it makes it easier to cheat at all Easel games. Easel is client authoritative for certain things. Why? So I can keep the server costs within what I can actually afford because I am one person. Maybe once I can afford 30 servers we can make it all server authoritative and I won’t worry about this anymore. Second, I expect a net decrease in my productivity if I have to argue and defend my code, and become the BDFL to the open internet all the time in an open source environment. I’ve been really really productive just working by myself.

BSTRhino··on A physics engine with incremental rollback for multiplayer games
I would love to make a license where you could export and then you can run it forever yourself on your own server! It’s not because I don’t want to do these things, it’s just I’m one person and I never get the time to do everything I would like to do.
BSTRhino··on A physics engine with incremental rollback for multiplayer games
Wow, I’m amazed someone noticed this. I’d be interested to know more about your background and interests. How much have you been looking at programming language design vs just designing for complex systems in general?

I ask because yes, I have put in a great deal of time and effort into the programming language design, and to me, I think that is the greater achievement, more than the automatic multiplayer. But the benefits of automatic multiplayer are easy for the general population to understand and the improvements programming language design is hard to convey and so people don’t normally get it. The fact that you can see what I’ve been trying to do so quickly shows you must be coming from a place which has developed that discernment for you.

While there are many inspirations, like I love coding using React for example, my primary inspiration is the last game I made, I released all the modding tools along with them and lots of non-coders loved it. The modding was JSON, which might sound primitive, but it was actually a hierarchical declarative domain specific language and it seemed to really work for people intuitively.

Easel was born from me spending 2 years trying to make an imperative programming language in a similar shape as that declarative one. I wanted it to be just as easy, but infinitely more powerful. It took a lot of iteration to merge the declarative and imperative styles into one language. There is so much to it - lexical lifetimes and ownership, reactivity like you noticed, but also weaving in concurrency and asynchronous programming seamlessly took time as well.

I really wish this is more the part of Easel that would stand out and be talked about more because I think it’s the coolest part.

BSTRhino··on A physics engine with incremental rollback for multiplayer games
Okay, in that case you can upload a stub with a transclusion of the game. If there is enough demand I would definitely work on a standalone export system!
BSTRhino··on A physics engine with incremental rollback for multiplayer games
I’ve been working on this for four years. I’m trying to make this my full time job!
BSTRhino··on A physics engine with incremental rollback for multiplayer games
Yes, sounds like you get it, Giant Wall changed so it gets rolled back to point A, then it resimulates, which might mean Giant Wall might push some other things this time around that it didn't before during the predicted simulation. It kind of uses a transaction log copy-on-write kind of mechanism, so there will be a log entry for previous value of the Giant Wall slot and it will restore that into its old slot. It's a bit more advanced than that but that's the gist.
BSTRhino··on A physics engine with incremental rollback for multiplayer games
That is a cool idea! Could be a great application of rollback!
Page 1 of 5Next →