🎨 Announcing Limn Engine — Draw Your Game Into Existence
The 2D Game Engine That Puts Creativity First
After years of development, countless late nights, and more cups of coffee than I can count, I'm thrilled to announce Limn Engine — a zero‑configuration, browser‑based 2D game engine designed for people who want to make games, not fight with tools.
What is Limn Engine?
Limn (verb) — to draw, paint, or portray.
It's the perfect name for an engine that helps you bring your game ideas to life, one line of code at a time.
Limn is a zero‑configuration, browser‑based 2D game engine that prioritizes creativity over complexity.
- No build steps — just HTML and JavaScript
- No package managers — one file, that's it
- No complex tooling — start coding in seconds
<script src="limn.js"></script>
<script>
const display = new Display();
display.start(800, 600);
const player = new Component(40, 40, "blue", 400, 300);
display.add(player);
function update(dt) {
if (display.keys[39]) player.speedX = 300 * dt;
if (display.keys[37]) player.speedX = -300 * dt;
move.bound(player);
}
</script>
That's it. Your first game, ready in seconds.
Why Another Game Engine?
Most game engines fall into two categories:
| Category | Problem |
|---|---|
| Visual/no-code engines | Limited control, hard to extend |
| Professional engines | Steep learning curve, complex setup |
Limn bridges the gap. It's powerful enough for real games, yet simple enough for beginners. Every feature exists because I was tired of writing the same code over and over:
-
move.bound(player)— no more edge detection boilerplate -
fixed()— UI follows the camera automatically -
destroy()— memory management without headaches
"Common outcomes should be functions." That's the philosophy.
What's Inside
⚡ Dual-Renderer Performance
Limn uses a hidden "fake canvas" to cache static content (tilemaps, backgrounds). The result? 60 FPS on a Toshiba with 4GB RAM. Static elements render once, dynamic elements render on top. Simple. Fast. Effective.
📷 Professional Camera System
display.camera.follow(player, true); // smooth follow
display.camera.shake(8, 8); // screen shake
display.camera.setZoom(1.5); // zoom in
display.camera.shakeRotation(0.07); // rotational shake
🎯 Circle Collision
Perfect for coins, balls, and round enemies:
coin.enableCircleCollision(15);
if (player.crashWithCircle(coin)) collect();
🖼️ Dynamic Images
Swap images at runtime — perfect for power-ups or damage states:
player.setImage("hero_powered.png");
player.setColor("red"); // back to rectangle
🎨 Particle System with Presets
move.particles.explosion(ps, x, y, 30);
move.particles.sparkle(ps, x, y);
move.particles.blood(ps, x, y, 15);
move.particles.magic(ps, x, y);
🔊 Complete Audio System
const soundManager = new SoundManager();
soundManager.load("coin", "coin.wav");
soundManager.play("coin");
soundManager.playMusic("theme.mp3");
🗺️ Tilemap System
Levels as native JavaScript arrays — no external editors required:
const level = [
[1,1,1,1,1],
[1,0,2,0,1],
[1,0,0,0,1],
[1,1,1,1,1]
];
const tilemap = new TileMap(display, level, tiles, 800, 600);
tilemap.show();
🎭 Sprite Animation
One image, many frames. The engine handles the rest:
const hero = new AnimatedSprite("hero.png", 64, 64, 400, 300);
hero.addAnimation("idle", 0, 0, 1);
hero.addAnimation("walk", 1, 4, 8);
hero.playAnimation("walk");
📝 Rich Text with Tctxt
const score = new Tctxt("24px", "Arial", "white", 20, 40,
"left", false, "alphabetic", "rgba(0,0,0,0.5)", 10, 5);
score.setText("Score: 0");
The Numbers
| Category | Rating |
|---|---|
| Overall Score | 94/100 |
| Ease of Learning | 96/100 |
| Performance | 95/100 |
| API Design | 96/100 |
| AI Readiness | 97/100 |
The Story
Limn Engine started on a Toshiba laptop with 4GB RAM, offline W3Schools, and borrowed siblings' laptops. No team. No funding. Just determination.
- 2023: JGame (unpublished)
- 2024: TCGame, TCJSGame V3
- 2025: Dual-renderer breakthrough (4 FPS → 60 FPS)
- 2026: Limn Engine V1
From a Toshiba to a professional game engine. That's the journey.
Who Is Limn For?
| You are... | Limn is for you |
|---|---|
| A beginner | Most approachable code-first engine |
| A solo developer | Get games shipped faster |
| A game jam participant | Zero setup, instant prototyping |
| A teacher | Students learn in hours, not weeks |
| An AI-assisted coder | API designed for predictability |
What's Next
Limn Engine is production-ready and free forever under the MIT license.
- 📥 Download: limn-engine.vercel.app
- 📚 Documentation: Beginner → Intermediate → Advanced → 10x guides
- 💬 Discord: Join the community
- 🧪 Try it now: Copy the example above and paste it into an HTML file
The One‑Line Summary
"Limn Engine is a 94/100 professional-grade 2D game engine that prioritises simplicity, performance, and developer joy — built by one developer who refused to give up."
Draw Your Game Into Existence
Limn Engine V1 is ready.
No more fighting with tools. No more boilerplate. No more excuses.
Download Limn Engine · Read the Docs · Join Discord
Owolabi Kehinde
Creator of Limn Engine
Built on a Toshiba with 4GB RAM. Powered by determination. 🚀
Top comments (0)