Skip to main content

Make games with EaselEasel

It's never been so easy to code games you can play together!
Easel is a beginner-friendly programming language for 2D online games!

A game programming language designed for humans

Easel is a 2D game programming language designed to match how humans, not computers, think about game logic. Most game engines make you think in the frame-by-frame model to match how computers run games. Easel instead uses a hierarchical, event-driven and concurrent model designed to match how humans think about game logic. That's why experienced programmers find Easel refreshingly productive, but also why beginners find it approachable and fun!

Below is an example of a complete game that has not only ships, asteroids, lasers, but also a user interface, physics and multiplayer, all in 50 lines of code! In what other programming language can you express so much so quickly?

pub tangible category Category:Ship
pub tangible category Category:Projectile
pub prop owner.Score = 0
pub game fn World.Main(maxHumanPlayers=10) {
SpawnEachPlayer owner {
Subspawn ship {
use body=ship, radius=1, shape=Equilateral(numPoints=3), color=#00ffbb, layer=1
Body(pos=20*RandomVector)
PolygonCollider(category=Category:Ship)
PolygonSprite
on Pointer {
Heading = Angle(Pointer - Pos)
}
on ButtonDown(Click) {
behavior<thrust> on BeforePhysics {
Velocity += Heading.Direction * 0.5
Spark(color=#ff8800, bloom=5, shine=1, splatter=1, velocity=-25*Heading.Direction)
}
Spawn projectile {
use body=projectile, radius=0.25, shape=Circle
use color=#bb00ff, luminous=1, bloom=5, bloomAlpha=1, glare=1, layer=3
Body(pos=ship.Pos, velocity=50*ship.Heading.Direction, bullet=true)
PolygonCollider(category=Category:Projectile, parent=ship)
on Paint { Streak }
once BeforeCollide {
Score += 10
repeat 3 { Spark(splatter=1) }
Expire
}
once Tick(5s) { Expire }
}
}
on ButtonUp(Click) {
delete behavior<thrust>
}
await BeforeCollide
repeat 5 { Spark(splatter=1, speed=20, luminous=1, shine=1, bloom=5) }
Expire
}
TopContent {
with Score { H1 { %(Score) } }
}
}
on Tick(1s) {
Spawn asteroid {
use body=asteroid, radius=3, shape=Circle, color=#ff0000
Body(pos=RandomVector*50, velocity=-20*pos.Direction)
PolygonCollider(category=Category:Projectile)
on Paint { Spark(splatter=1, fade=#ff8800) }
once BeforeCollide, Tick(5s) { Expire }
}
}
}
Tap on a line of code to learn more about it.
Hover over a line of code to learn more about it.

Code multiplayer games without coding the multiplayer

Effortless multiplayer: Make games that are even more fun and meaningful by bringing people together. Code as if all your players are inside one shared game world, like a singleplayer game, and Easel will make your game multiplayer. Automatically.

Automatic multiplayer? How is that possible?Multiplayer is baked into the fabric of the Easel programming language itself. That is why anything you code in Easel is multiplayer without any special effort on your part. It's like magic!

Skip to the fun part: Multiplayer often takes years of programming experience to master, but not with Easel. No need to learn a thing about networking or synchronization. Don't know what a remote procedure call is? You never need to! Easel does all the multiplayer for you automatically so you can focus on actually making your game.

Beginner-friendly: No pitfalls or traps to avoid. No worrying about doing everything in a multiplayer-safe way. With Easel, it's impossible to make mistakes when it comes to multiplayer, even if you're a complete beginner. It just works.

Smooth and responsive: Easel's state-of-the-art incremental rollback netcode implementation will give your players a smooth and responsive multiplayer experience, even with players spread across the globe.

Learn to code, the fun way!

Make games you can play together: With Easel, making multiplayer games is so easy that you can even do it on your first day of coding. Learning to code is so much more engaging when you can actually play your game with your friends, family, teachers, classmates and anyone else online. You'll want to keep learning so you can make your games even better!

Powerful yet accessible: With its hierarchical and event-driven programming style, Easel has been designed to make coding intuitive, while maximizing the fun and creative possibilities. It is a great choice for your first programming language.

Get started right away: Code games in your web browser using our online editor, no download required. Even works on a Chromebook or iPad (with a keyboard), which makes it perfect for school students.

Learn by example: A great way to learn is by looking at the code for games you already know and love. That is why the source code to every Easel game is available to view and remix. Click the Remix button on any game page to see how it was made!

How does Easel compare to Scratch?Scratch is a great way to get started with programming, but it it is missing many important game features like cameras, physics, and multiplayer. That's why even some simple games can be difficult to make in Scratch. Easel is still beginner-friendly, but has all the features you need to make fun multiplayer games, right out of the box.

A safe, ad-free zone: Worried what your teenagers are being shown online? There are no ads on the Easel platform, so that is one less thing for you to worry about. Subscribe to Easel+ and support our safe ad-free zone where teenagers can make and play games.

Intrigued? Try our quickstart tutorial and see for yourself how easy it is to learn to code with Easel!

What is Easel?

Easel is a beginner-friendly programming language for 2D online games. It particularly excels at making multiplayer games, but its intuitive programming model makes it fun for making all kinds of 2D games.

Easel is also the online platform that hosts all Easel games. Because all Easel games are made with the Easel programming language, they can efficiently share the same servers, making it much more cost-efficient than other multiplayer solutions. That is what enables Easel to bring multiplayer game development at scale to everyone of all ages. We are democratizing multiplayer game development, and we can't wait to see what you create with it!

Why is it so easy to make multiplayer games with Easel?

Normally, to make a multiplayer game, your entire codebase must respect two rules:

  • Determinism: any modifications made to your game world must be done in a way which can be repeated identically on all machines.
  • Authority: a machine must only modify the state that it is the authority over. If it is not the authority, it must instead ask the machine that is the authority to make a change on its behalf.

Every single line of your entire codebase must respect the rules. If there is even one line out of place, it will cause the entire game to desynchronize. It is easy to get wrong, especially for a beginner. Making a multiplayer game is normally a challenge only reserved for those with years of programming experience. Easel however, lets you code a multiplayer game on your very first day of coding.

In Easel, the rules of multiplayer are baked into the programming language itself. That is why, any code you write in Easel is automatically multiplayer, without any special effort on your part. Code as if all your players are in one shared world, like a singleplayer game, and Easel takes care of all the networking and synchronization for you. It is completely automatic, it never gets it wrong. It just works. Like magic.

What makes the Easel programming language so special?

The way you code Easel is completely different to how you would code a game in another programming language. In one word, Easel is reactive. Below is a very short example which attempts to capture the essence of this idea. Imagine you want a health bar that slowly fades from green to red as the the hero loses health:

with Health {
PolygonSprite(color = (Health / MaxHealth).Mix(#ff0000, #00ff00))
}

In Easel, you use constructs like with to detect changes to properties like Health, and when they change, you respond by replacing components like PolygonSprite. This pattern of linking state to effects makes Easel feel like a high-level declarative programming language, and nothing like any game engine you have used before.

The engine and the compiler are doing a lot of magic behind the scenes to make those 3 lines work. See Why Easel? for a deeper dive into the details.

I'm new to programming. Is Easel for me?

Yes! Easel is designed to be a great first programming language. Learning to code is like learning to swim or riding a bike - you cannot just read books about it or watch video tutorials. You have to actually do it. Easel makes this easy in a number of ways:

  1. No installation required, which is often the first hurdle. Get started instantly with the online editor and all game-making functionality built-in.
  2. Because Easel is designed for making games, it enables a quick iteration cycle between writing code and seeing its effects visually, allowing you to learn by doing.
  3. Easel has intentionally been designed to be intuitive with its hierarchical and event-driven programming style, which makes it easier to learn while having fun way and without getting discouraged.
  4. Learn by example. Lets say you want want to add a leaderboard to your game. The source code to every Easel game is available, which means you can find another Easel game with a leaderboard and learn how they did it!
  5. Play together! Easel games can be published online with just a few clicks and instantly shared with your friends, family, teachers, classmates or other people online. Sharing your learning-to-code journey with other people will make it more meaningful and help you stay motivated.
I've been programming for a long time. Is Easel for me?

If you've programmed before, you'll have a lot of fun making games with Easel. Its hierarchical approach and its event-driven concurrency model let you be refreshingly productive. Easel is both familiar but different from other programming languages and it will inspire you to think in new ways.

At the same time, Easel is first and foremost designed to be approachable to beginners, and there are numerous instances where we have intentionally chosen simplicity over power. Be warned - Easel is not Unity, Unreal or Godot and ambitious programmers may become frustrated by its limitations. We hope people love Easel in a similar way to Pico-8, another fantasy console engine that has been kept simple intentionally. The constraints breed creativity, and allow you to actually finish games instead of letting your dreams spiral out of reach.

Is Easel free?

Easel's generous free tier is enough to make a complete games and share them with your friends and classmates, so you can get started right now!

If you intend to make your game for the world (we are talking hundreds of players a month), you may need to subscribe to Easel+ to cover the bandwidth costs, and/or encourage your players to subscribe. By subscribing to Easel+, you'll be helping in our mission to bring the joy of coding to the next generation.