Announcing Limn Engine โ Draw Your Game Into Existence
Source: Dev.to
๐จ 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
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);
}
Enter fullscreen mode
Exit fullscreen mode
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
Enter fullscreen mode
Exit fullscreen mode
๐ฏ Circle Collision
Perfect for coins, balls, and round enemies:
coin.enableCircleCollision(15);
if (player.crashWithCircle(coin)) collect();
Enter fullscreen mode
Exit fullscreen mode
๐ผ๏ธ Dynamic Images
Swap images at runtime โ perfect for power-ups or damage states:
player.setImage("hero_powered.png");
player.setColor("red"); // back to rectangle
Enter fullscreen mode
Exit fullscreen mode
๐จ 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);
Enter fullscreen mode
Exit fullscreen mode
๐ Complete Audio System
const soundManager = new SoundManager();
soundManager.load("coin", "coin.wav");
soundManager.play("coin");
soundManager.playMusic("theme.mp3");
Enter fullscreen mode
Exit fullscreen mode
๐บ๏ธ 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();
Enter fullscreen mode
Exit fullscreen mode
๐ญ 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");
Enter fullscreen mode
Exit fullscreen mode
๐ 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");
Enter fullscreen mode
Exit fullscreen mode
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. ๐