explaingit

arcademakersources/arcademaker

13C#Audience · developerComplexity · 3/5ActiveLicenseSetup · moderate

TLDR

Early-stage 2D game engine and IDE written in C# with its own scripting language called Exp, modelled on GameMaker 8 and built on MonoGame.

Mindmap

mindmap
  root((ArcadeMaker))
    Inputs
      Exp scripts
      Sprites and rooms
      Object events
    Outputs
      Playable 2D games
      Editor previews
    Use Cases
      Build small 2D games
      Learn a GameMaker style workflow
      Contribute engine features
    Tech Stack
      CSharp
      MonoGame
      NuGet
      Visual Studio

Things people build with this

USE CASE 1

Open the solution in Visual Studio or Rider and run the IDE to try the engine

USE CASE 2

Write a tiny game in the Exp language using Create, Step, and Draw events

USE CASE 3

Contribute missing engine features like background support or parent objects

USE CASE 4

Study how a small C# game engine and custom scripting language fit together

Tech stack

C#MonoGame.NETNuGet

Getting it running

Difficulty · moderate Time to first run · 30min

You need a working C# toolchain and an IDE that can restore NuGet packages, and the engine backend is incomplete so many editor features will not run yet.

MIT license, you can use, copy, modify, and redistribute the code commercially as long as you keep the copyright notice.

In plain English

ArcadeMaker is a 2D game engine that comes with its own small programming language and a built-in editor. The engine and the editor are both written in C#, but when you actually make a game inside ArcadeMaker you write the game logic in the author's own language, called Exp, not in C#. The look and feel is modelled on GameMaker 8, so anyone who has used that old tool should find it familiar. Underneath, the graphics and sound come from MonoGame, a free library that runs on desktop computers, phones, and games consoles. The author also wants to add a second backend called KNI later so that games can run inside a web browser. Right now the project ships a build in the GitHub Releases section, but the README is clear that this is an early snapshot rather than a real release. There is no button to export a finished game into a standalone program, and finishing a real game with it is not yet realistic. The project has been put together over several years in separate bursts, which is why some pieces are further along than others. The editor already supports backgrounds, parent objects, and many object events, but the new engine core only understands the Create, Step, and Draw events so far, and several features that exist in the editor have no matching code in the engine yet. The next item on the list is to add background support to the engine, followed by parent objects and a fix for view-follow speed. The author explains that they are open-sourcing the project because they no longer have enough time to push it forward alone, and they hope other people will experiment with the engine, improve the Exp language, fill in missing functions like drawRect or setFont, write documentation, and produce example games. Building it locally is a normal C# workflow: clone the repository, open the solution in Visual Studio, Rider, or VS Code, restore NuGet packages, build, and run the editor project. The code is released under the MIT licence. The README notes that GPT helped write the README itself and that Claude helped with the collision-detection maths, but the rest of the engine, editor, and language is hand-written.

Copy-paste prompts

Prompt 1
Walk me through cloning ArcadeMaker, restoring NuGet packages, and launching the IDE project in Rider
Prompt 2
Show me how to write a Step event in the Exp language for a player object in ArcadeMaker
Prompt 3
Add background rendering to the ArcadeMaker engine backend so it matches what the IDE already exposes
Prompt 4
Implement a drawRect function in the ArcadeMaker engine and wire it into the Exp language runtime
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.