4cecoder / kap

A dead simple 2D game engine for browsers with a visual editor

Repository from Github https://github.com4cecoder/kapRepository from Github https://github.com4cecoder/kap

Kap - Dead Simple 2D Game Engine

A beginner-friendly 2D game engine for browsers with a visual editor. No build step required - just pure ES modules!

๐Ÿš€ Quick Start

  1. Run the visual editor:

    bun run dev
    # or just open index.html in your browser
  2. Try the examples:

    • examples/games/platformer/ - Full platformer game
    • examples/games/vanilla/ - Vanilla game loop example
    • examples/demos/ - Simple demo

๐Ÿ“ Project Structure

kap/
โ”œโ”€โ”€ src/                    # Source code
โ”‚   โ”œโ”€โ”€ core/              # Core engine systems
โ”‚   โ”‚   โ”œโ”€โ”€ engine.js      # Scene management
โ”‚   โ”‚   โ”œโ”€โ”€ renderer.js    # Canvas rendering
โ”‚   โ”‚   โ”œโ”€โ”€ input.js       # Input handling
โ”‚   โ”‚   โ”œโ”€โ”€ assets.js      # Asset loading
โ”‚   โ”‚   โ””โ”€โ”€ utils.js       # Utility functions
โ”‚   โ”œโ”€โ”€ systems/           # Game systems
โ”‚   โ”‚   โ”œโ”€โ”€ sprite.js      # Sprite animation
โ”‚   โ”‚   โ”œโ”€โ”€ tilemap.js     # Tile-based maps
โ”‚   โ”‚   โ”œโ”€โ”€ physics.js     # Physics system
โ”‚   โ”‚   โ””โ”€โ”€ entity.js      # Entity management
โ”‚   โ”œโ”€โ”€ engine/            # Simplified API
โ”‚   โ”‚   โ””โ”€โ”€ index.js       # Main engine entry point
โ”‚   โ”œโ”€โ”€ editor/            # Visual editor
โ”‚   โ”‚   โ””โ”€โ”€ index.js       # Editor interface
โ”‚   โ””โ”€โ”€ game/              # Game-specific code
โ”‚       โ”œโ”€โ”€ index.js       # Game entry point
โ”‚       โ”œโ”€โ”€ scenes.js      # Scene definitions
โ”‚       โ”œโ”€โ”€ player.js      # Player logic
โ”‚       โ””โ”€โ”€ level.js       # Level/tilemap setup
โ”œโ”€โ”€ examples/              # Example projects
โ”‚   โ”œโ”€โ”€ games/            # Complete games
โ”‚   โ”‚   โ”œโ”€โ”€ platformer/   # Platformer example
โ”‚   โ”‚   โ””โ”€โ”€ vanilla/      # Vanilla game loop
โ”‚   โ”œโ”€โ”€ demos/            # Simple demos
โ”‚   โ””โ”€โ”€ templates/        # Code templates
โ”œโ”€โ”€ assets/               # Game assets
โ”‚   โ”œโ”€โ”€ images/          # Sprites and images
โ”‚   โ”œโ”€โ”€ audio/           # Sound effects and music
โ”‚   โ””โ”€โ”€ fonts/           # Custom fonts
โ”œโ”€โ”€ docs/                # Documentation
โ”œโ”€โ”€ tests/               # Test files
โ””โ”€โ”€ config/              # Configuration files

๐ŸŽฎ API Reference

Simple API (for beginners)

import { setBackground, addPlatform, addPlayer, movePlayer, jumpPlayer, onKey, engine } from './src/engine/index.js'

// Set up your game
setBackground('#87ceeb')
addPlatform(0, 448, 640, 32, '#228B22')
addPlayer(64, 416, 32, 32, 'player.png')

// Add controls
onKey('ArrowLeft', () => movePlayer(-120, 0))
onKey('ArrowRight', () => movePlayer(120, 0))
onKey(' ', () => jumpPlayer())

// Start the game
engine.start('game')

Advanced API (for developers)

import { Engine } from './src/core/engine.js'
import { Renderer } from './src/core/renderer.js'
import { Input } from './src/core/input.js'
import { Assets } from './src/core/assets.js'
import { Sprite } from './src/systems/sprite.js'

// Create engine instances
const canvas = document.getElementById('game')
const engine = new Engine()
const renderer = new Renderer(canvas)
const input = new Input()
const assets = new Assets()

// Define scenes
engine.addScene('game', (dt) => {
    renderer.clear('#87ceeb')
    // Your game logic here
})

// Start the engine
engine.start('game')

๐ŸŽจ Visual Editor

The visual editor provides:

  • Drag & Drop: Place objects visually
  • Property Panel: Edit object properties
  • Grid System: Snap to grid for precision
  • Templates: Quick-start templates
  • Export: Generate standalone HTML files
  • Undo/Redo: Full history support

๐Ÿ› ๏ธ Development

Prerequisites

  • Bun (recommended) or any modern browser
  • No build tools required!

Running Examples

# Start development server
bun run dev

# Or open examples directly in browser:
open examples/games/platformer/index.html
open examples/games/vanilla/index.html
open examples/demos/index.html

Code Style

  • Use ES modules (import/export)
  • 2 or 4 spaces for indentation (be consistent)
  • No semicolons required
  • Use camelCase for variables/functions
  • Use PascalCase for classes

๐Ÿ“š Examples

Platformer Game

A complete platformer with:

  • Player movement and jumping
  • Tile-based collision
  • Sprite animation
  • Multiple scenes (menu, game, gameover)

Vanilla Game Loop

Shows how to build a game without the engine:

  • Custom game loop
  • Manual collision detection
  • Direct canvas rendering

Visual Editor Demo

Interactive editor with:

  • Drag & drop object placement
  • Real-time property editing
  • Code generation and export

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test with bun run dev
  5. Submit a pull request

๐Ÿ“„ License

MIT License - see LICENSE file for details

๐Ÿ™ Acknowledgments

  • Built for educational purposes
  • Inspired by classic 2D game engines
  • Designed to be approachable for beginners

About

A dead simple 2D game engine for browsers with a visual editor


Languages

Language:JavaScript 73.1%Language:HTML 19.2%Language:TypeScript 7.6%