Editor2D Project
C++ Tools for 2D Level Creation.
This is our in-house solution for creating and managing tile-based levels for 2D style games, comprising a robust C++ library for data handling, a user-friendly GUI application for visual editing, and a couple of other tools for good measure.
Introduction
This project provides a complete workflow for 2D game level design, split into two main components:
- A C++ Library: Designed for game developers to easily load, save, and manipulate tilemap data within their game engines. It defines the core data structures for levels, tilesets, layers, and entities.
- A GUI Editor Application: A standalone tool built on top of the C++ library, offering a visual interface for artists and designers to construct levels, manage tilesets, arrange layers, and place entities.
Our goal is to offer a flexible, efficient, and user-friendly solution for 2D game level creation.
Features
C++ Library
- Data Structures
- Efficient Data Storage - Metadata is saved in .json files, while the layers' raw-tile-matrices are stored in flat binary files.
- Load & Save utilities
- Global Tile ID (GID) System
GUI Editor
- Visual Tile Painting: Intuitive tools for drawing and erasing tiles on different layers.
- Layer Management: Add, remove, reorder, hide/show, and adjust properties (opacity, parallax) of layers.
- Tileset Management: Import texture atlases, define tile dimensions, and set individual tile properties.
- Entity Placement: Place, move, resize, and configure custom properties for game entities.
- Project Workflow: Create new levels, open existing ones, and save changes.
- Real-time Preview: See your level come to life as you build it.
Dependencies
Managed Dependencies
Redacted Software Libraries are automatically managed as part of the build toolchain. They are enumerated here for documentation's sake.
- @maxine/mcolor
- @josh/Event
- @josh/jlog
- @josh/ArgsParser
- @josh/J3ML
- @josh/json
- @josh/JGL
- @Redacted/ReWindow
- @Redacted/ReArchive
- @josh/ReJUI
Your Responsibility
Below is the list of software you will need installed on your system. Package names are included for the main Linux Distributions we test on.
- OpenGL
- Fedora / Rocky / RHEL:
mesa-libGL-devel
- Ubuntu / Debian:
libgl-dev
- Arch:
mesa
- Fedora / Rocky / RHEL:
- Vulkan
- Fedora / Rocky / RHEL:
vulkan-devel vulkan-loaders-devel vulkan-headers
- Ubuntu / Debian:
libvulkan-dev
- Arch:
vulkan-devel
- Fedora / Rocky / RHEL:
- FreeType:
- Fedora / Rocky / RHEL:
freetype-devel
- Fedora / Rocky / RHEL:
Known Bugs / TODOs
Contributing
Acknowledgements
This project is developed and maintained by Josh O'Leary from Redacted Software.
Thanks to William Redacted for building the archiving system, much of the render code, and extensive performance optimization.
Special thanks to my wife, Ash, for requesting me to make this as a tool to allow her to design levels.
Kudos to Tiled Map Editor for being the primary design inspiration on this project.
License
This work is expressly dedicated to the Public Domain, and is licensed under the Unlicense.