No More Levels Editor MK. 2

Why a New Editor?

A new editor was designed and produced to keep up with the growing use cases for the NML level format. Since my first few posts, this level format has been implemented into several personal projects that have needed more features than the original NML editor was able to provide. Features such as an interactive palette, in-editor script placement, and better editing tools. The new editor also provides an update to the base NML level format to allow for background images. The current iteration only loads one image, but this feature could be expanded for use in platformers to create parallax scrolling effects.

A small platformer to demonstrate new NML backgrounds

New Palette

In the new NML editor, I have utilized a separated windowed design over the previous legacy-inspired one to simplify it’s use. The palette is located in it’s own window, typically on the top right side of the editor. It features the same functionality as the previous iterations, allowing for many sprites to be loaded and selected, however was changed to incorporate sprite reordering and reorganizing.

The new NML Editor
The old NML editor

In-editor Script Placement

Along with the new windowed palette, there’s a new script window. It allows scripts to be loaded into the editor and placed like tiles into certain sections of the map. It even allows scripts to be attached to sprite objects to enable in-editor interaction scripting. By default, the scripts placed on normal map tiles are treated as a trigger for an event in the script, triggering the onTrigger() event. Scripts placed on sprite objects do not share this event. Instead, they run a normal onInit(), onUpdate(), and onRender() script.’

Better Editing Tools

New to our editor are smart fill tools. These tools allow artists and map creators to select regions of the map and fill them with either certain tiles or scripts. The regions can be bound to the foreground, background, script layer, collisions layer, or really any layer that the user adds.