Keyboard driven 2D level editor
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
KikooDX 165d605eec Parameter buffer (#6) 9 months ago
src Parameter buffer (#6) 9 months ago
.build.yml Add build manifest. 9 months ago
.gitignore Configurable default window size ; default is "intelligent". 9 months ago
LICENSE Level uses memory allocation + LICENSE file 10 months ago Parameter buffer (#6) 9 months ago
build.zig Added docstrings to structure functions. 10 months ago Add versioning byte. Remove bloat goal from 9 months ago
level.kble Parameter buffer (#6) 9 months ago
sample.kble Add versioning byte. Remove bloat goal from 9 months ago

KBLE, a KeyBoard driven Level Editor

A work in progress level editor with extensive keyboard support. Designed for tile based 2D platformers. This is a work in progress program in unusable state.

Short term design decisions

Subject to change.

  • Efficiency, simplicity and clarity are key goals.
  • Fully keyboard driven modal editing. Mouse support is secondary.
  • GUI software made in Zig with raylib.
  • Configurable (editing src/conf.zig).


Runtime requirements: raylib.

Precompiled binaries status

Manual compilation

Build requirements: Zig master branch, raylib. For Arch users, I made kble-git available in the AUR.

$ # Clone this repository
$ git clone && cd kble
$ zig build
$ zig-cache/bin/kble

Press escape to close the program.

Command line argument

Not available on Windows. Accept a path to KBLE file to open. If the file doesn't exist, the given path will be used for saving. Defaults to level.kble if no argument given.

$ kble #level.kble
$ kble sample.kble
$ kble $HOME/projects/kble/sample.kble


In src/conf.zig, edit values from BEGIN USER CONFIG. The configuration is applied at compile time. You have the possibility to:

  • Disable mouse support.
  • Swap mouse buttons.
  • Disable backups.
  • Change default grid size.
  • Change default scaling level.
  • Disable adaptive window size.
  • Change and add colors.
  • Edit keybindings.

Default keybindings


  • 09: behavior similar to Vi.


  • h: left
  • j: down
  • k: up
  • l: right
  • y: up-left
  • u: up-right
  • b: down-left
  • n: down-right


  • <space>: clear selection
  • d: delete selection
  • r: replace selection with parameter
  • +: increase scale (zoom)
  • -: decrease scale (dezoom)
  • =: reset scale

File (read/write):

  • e: read (load) level
  • w: write (save) level
    See for technical informations.

Parameter buffer (change default value of verb calls):

  • p: set parameter buffer to current parameter (defaults to 1)
  • P: set the tile ID the keyboard cursor is on as parameter buffer


  • <return>: normal mode, default
  • i: free selection mode
  • v: rectangle selection mode
  • I: free unselection mode
  • V: rectangle unselection mode
  • c: camera mode [not implemented]

Default mouse control

  • Right click: free selection.
  • Shift + left click: rectangle selection.
  • Right click: libre unselection.
  • Shift + right click: rectangle unselection.
  • Left or right click while un·selecting: end selection.


Safety backups are made when:

  • Reading operation is started (backup_read.kble)
  • The program exit (backup_exit.kble)


Copyright (c) 2021 KikooDX

This project is under the MIT license. See LICENSE for more details.