A game engine that lets you code multiplayer games without coding the multiplayer! My idea was to put multiplayer into the fabric of the programming language itself. This allows the engine to automatically turn your game into a multiplayer game, without you needing to learn anything about networking or synchronization. I imagine there are lots of people who have the talent and creativity to create a multiplayer game but don't have the interest or patience in learning how to code multiplayer, and so that's who this is for!
I've been working on this for 3 years and there were lots of tricky parts rolling back and deterministically executing a whole programming language, but it's working now! My next phase is to increase the breadth of features so better games can be made with it!
To be honest, that's kind of why I'm here posting about it. I think https://gatew.easel.games is impressive, but I also know the engine is capable of so much more than what people have made with it so far, and I'm trying to find people who have dreams but haven't found the right tool yet so I can build that for them.
The pricing model and how to run Easel sustainably is a huge question. Easel is basically a free product, which is what I want because (a) I would just like people to use it and (b) multiplayer games need lots of players. I made the upfront decision to never run ads on Easel because I want parents and schools to be happy with it being used by their teenagers, and that has greatly changed the business dynamics. I have very delicately managed the cost-efficiency of Easel only expecting about 1% of people to ever subscribe to Easel+. For this reason, I've avoided expensive features so that one dedicated server can run at least 1 million projects and handle thousands of concurrent players at a manageable cost. It's been a real slimming exercise.
I know the catalogue is small, but despite that, there are some people who come back and play one game every single day on Easel. There are also people who come back and make games every day on Easel. And there are some who do both. We have people exceeding 100+ hours a month sometimes. It's these people who Easel+ is for. Easel+ is designed as a package deal with a bunch of different game-playing and game-making perks so that people can decide for themselves what parts of the package they find valuable. But I would honestly be happy to have thousands of people using it and not paying a cent. This is my life's work and I just want it to be used, even if I have to fund it all myself.
I'm not sure who this is for. On one hand multiplayer games are complicated to make, even with a dedicated framework, but on the other the tutorial wastes time explaining to me how to undo with ctrl+z and there's even a large infobubble on how to copy and paste text.
This is good feedback! I thought it’d be a great first programming language for people and so I think I have aimed the tutorial far too basic, probably even for them. Maybe that’s where I am losing people. I am going to edit it and see if that improves the retention.
This is an impressive project and hopefully it will allow more programming beginners to get into multiplayer programming. Huge congrats. However, I am wondering: if your programming language is aimed at complete beginners, why make your language untyped and include undefined? Those are both fully loaded foot cannons. Sure, the language looks more inviting and probably gives the impression of faster development, but I'm not sure it's worth the amount of bugs that will be introduced eventually.
Yes, in the end I just made this decision pragmatically and it's not a grand statement about how I think programming languages should work. I felt that it would be possible to add gradual typing to Easel eventually, and so chose to prioritise other programming language features.
One of the original "agitators" which caused me to make Easel was because I was so surprised at how popular the modding tools for my previous game were with first-time coders. The modding tools used JSON, which might sound primitive, but if you look past the JSON it was actually defining a hierarchical declarative language for defining game behaviour. I have many theories for why first-time coders could just pick it up, but one of them is I think the hierarchical shape meant everything could be written inline, without indirection or jumping around. This format allowed all these gamers to just accidentally fall into coding and it was quite impressive how far they got without any help.
But those old modding tools were quite limited really, and that limited how much coding people could learn. So for years I just kept wondering what would happen if someone made that magic hierarchical declarative shape unlimited by merging it with a traditional imperative programming language. Would it allow gamers to accidentally fall into learning actual coding? It took me about 2 years to squash together these two seemingly-opposed paradigms and make the Easel programming language. Doing this required slimming down on the other language features in order to iterate quickly on this big problem, so that's how we ended up not having strong typing, amongst other things. But I don't regret what I chose to prioritise, and I hope to address this in the coming years!
Very cool! I'll play more around with this later but right off the site UX is great. Being able to hit 'launch editor' and have it load a project right up without requiring an account or anything is just beautiful.
Yes you only have to sign up if you are publishing a game permanently, which I figure is reasonable since that means you will be taking up space on my server forever. But people can make whole games a never sign in if that’s what they want!
Small request: if you could please add a "copy this page" button near the top of each page in the docs (perhaps next to the title of the page), it would make it easier to feed the docs into an LLM for guidance on how to build a project on top of Easel. Neat project!
A game engine that lets you code multiplayer games without coding the multiplayer! My idea was to put multiplayer into the fabric of the programming language itself. This allows the engine to automatically turn your game into a multiplayer game, without you needing to learn anything about networking or synchronization. I imagine there are lots of people who have the talent and creativity to create a multiplayer game but don't have the interest or patience in learning how to code multiplayer, and so that's who this is for!
I've been working on this for 3 years and there were lots of tricky parts rolling back and deterministically executing a whole programming language, but it's working now! My next phase is to increase the breadth of features so better games can be made with it!