A downloadable tool for Windows

Download NowName your own price

Grunka is a hybrid tile editor for game developers, artists, and anyone working with tile-based graphics. Grunka uniquely combines pixel-level control with tile-based editing, offering unprecedented flexibility and creativity in designing tile-based environments.

Features

  • Comprehensive Tileset: Grunka features the MRMOTEXT tileset by @MrmoTarius, a comprehensive collection of 1-bit 8x8 px sprites suitable for creating a wide range of fun and complex shapes.
  • Grid Snapping: Tiles automatically snap to a grid, facilitating clean, aligned layouts.
  • Pixel-Shift Control: Allows shifting stamped tiles by individual pixels for precise positioning.
  • Freeform Movement: By holding down the shift key and moving the mouse, place tiles without snapping to the tile grid.
  • Tile Manipulation: Flip tiles horizontally and vertically, and invert sprites to create complex and interesting compound shapes.
  • Groups: Hittting Ctrl+G will group the selected draw operations, letting your perform all operations like flipping, nudging, selecting color - on the entire group.

Download

Grunka is available for free during the alpha and beta development period, after the 1.0 release it will be available for a small fee.

This application requires 64-bit Windows 10+

How to Use

Select a tile from the MRMOTEXT spritesheet on the right, then stamp it in the workspace on the left. Holding down SHIFT while stamping a tile unlocks the tile grid snapping, giving you pixel precision.

The list of draw operations show you all the tiles you’ve stamped. Select them to flip them, invert them, change colors, or move them around. Right click, or ESC to deselect the tile or selected draw operation.

Saving the document also exports a PNG file in the same directory.

Export options are available under Edit -> Preferences.

Keyboard shortcuts

This list of keyboard shortcuts, and a more exhaustive reference is accessible inside Grunka by hitting F1. The most important operations that are only available as keyboard shortcuts are:

Flip (F, Shift+F) Flips the selected draw operations horizontally or vertically.

Invert (I) Inverts the colors of the selected draw operations.

Mask (M) Toggles whether the selected draw operation includes the mask (black) color.

Nudge Nudges the selected draw operations one tile up, left, down, or right. Shift+Nudge moves the selected draw operations one pixel instead of one tile. (W, Up, Shift+W, Shift+Up) (A, Left, Shift+A, Shift+Left) (S, Down, Shift+S, Shift+Down) (D, Right, Shift+D, Shift+Right)

Cut, copy, and paste The standard operations. (Ctrl+X, Ctrl+C, Ctrl+v)

Delete Deletes the currently selected draw operations. (X, Delete, Backspace)

Group & ungroup Groups and ungroups the selected draw operations. (Ctrl+G, Ctrl+Shift+G)

Collapse group Toggles the collapsed state on the selected groups. (C)

Move selection up & down Moves the draw operation selection up or down, or in and out of the currently selected group. (Alt+W) (Alt+S) (Alt+A) (Alt+D)

Grow selection up & down Increases the draw operation selections up or down. (Shift+Alt+W) (Shift+Alt+S)

Shift selection up & down Shifts the selected draw operations up or down. (Ctrl+W, Page Up) (Ctrl+S, Page Down)

Palettes

Grunka loads by default with the arne-16 palette, by @AndroidArts.

Grunka can load JASC palette files via File -> Load palette. Palettes need to be between 2 and 64 colors. Palettes are then saved with your document. You can swap palettes by loading a new palette and the colors of each tile will maintain it’s palette index. But be mindful that going from a larger palette to a smaller means some tiles color index could be reset.

The assets folder includes a few example palettes.

Preferences

Edit->Preferences enables a list of display and export options.

Background color This setting renders selects the background color from the palette. When transparent background is enabled, draw operations with disabled mask toggles, will be drawn over this color.

Export scale Grunka renders its content and UI upscaled a few times - 8x8 pixel sprites are too tiny to work with! By default, when saving file, the images are exported at 1x export scale. You can change this to 2x, or 4x with this drop-down.

Crop to content Grunka can either crop the entire image to just the bounds of the draw operations or the entire workspace.

Transparent background Grunka will export PNG images with transparent background if this setting is enabled.

Changelog

v0.0.4-alpha Added export scale option to preferences.

v0.0.3-alpha First public alpha release.

Roadmap

There are quite a few more features planned until the final release - this presents a rough outline of the major features left to implement.

Zooming, scaling, and panning

The workspace is currently locked to a certain zoom and resolution. The idea is to be able to change the zoom steps as well as pan the workspace.

Animation

This is the big feature that needs to be completed before 1.0.0. The big, empty space in the bottom right is meant to house a grid of frames where you can jump back and forth, adding, removing, and nudging draw operations. Grunka then exports your document as individual PNG frames.

Customization

It’s possible to change the assets/config.ini file to customize Grunka to work best for you. It’s not very well documented, but if you’re clever - you can infer a few things.

Grunka loads the MRTOTEXT tileset by default, but you can enable custom tilesets by updating setting [canvas] sprite_filename. This assumes a RGBA PNG image - white pixels on black background. The image needs to have square sprites, tightly packed with no padding or margins. Each sprite is a sprite_size pixel square. You must also configure sprites_wide and sprites_tall, which indicates how many sprites wide and tall the image is. The various char_achar_b, and so on - indicates the tile index of the character for a and b. These need to work as these are used by Grunka to draw its UI. Aside from these, there are a few hard-coded sprites used in Grunka - such as the checkmark, which might make it difficult to set a completely custom tileset.

Default keybinds can be changed in config.ini under the [actionbinds] section. This is fairly straightforward - but note that you mustn’t include a space between multiple keybinds. Follow the examples in the default keybinds.

Palettes can be downloaded from places like lospec.com, but they need to be betwee 2 and 64 colors.

Support and Contribution

For bug reporting, please get in touch with me at hans.sjunnesson@hey.com or @hans_nerd.

Acknowledgements

Grunka sprang out of the inspiration from the work of @MrmoTarius and @LootBndt.

Example palettes included in Grunka by @AndroidArts@lexaloffle@KerrieLake.

License

Grunka is © 2023 Hans Sjunnesson All Rights Reserved.

The MRMOTEXT tileset by @MrmoTarius, used with permission.

rnd.h Copyright © 2016 Mattias Gustavsson

stb_image_write.h and stb_image.h Copyright © 2017 Sean Barrett

Dear ImGui Copyright © 2014-2023 Omar Cornut

cJSON Copyright © 2009-2017 Dave Gamble and cJSON contributors

Bitsquid Foundation Copyright © 2012 Bitsquid AB

backward-cpp Copyright © 2013 Google Inc.

Download

Download NowName your own price

Click download now to get access to the following files:

grunka_v0.0.4-alpha.zip 2 MB

Development log

Comments

Log in with itch.io to leave a comment.

(+1)

After using rex paint and playasci for a while, its awesome to see a fresh take and i'd say better program in this area. thank you so much