This is the first version of Textyle and it’s more like a Minimal Viable Product. I wanted to have a minimal set of working features instead of implementing tons of buggy systems.
The main goal of this launch was to stablish a overall architecture for the project while placing React, Rust and WebGL in their respective modules. I think this objective was achieved, each layer of the stack now clearly has one main purpose:
- React JS: UI
- Rust (WASM): Tilemap maths, logic and algorithms
- WebGL: Tilemap rendering
There’s still some small adjustments I need to work on the export format to make it better for using in games and importing back into the editor. But in a general view, I worked hard to eliminate all the bugs I could find until now and to maintain the UI simple at the same time.
Here’s a list of the main features available in this version:
- 2D batch rendering
- Pencil tool (single tile placement)
- Fill tool
- Eraser tool
- Zoom in / zoom out
- Pan tool
- Multiple layers
- Multiple tilesets per layer
- Variable tile size (even within the same project)
- Export to JSON
- Show / hide grid in each layer
Now I want to have some days of code refactor. I won’t go too far, I just want to make sure the code remains clear. Also, one of next urgent goals is to port the code to TypeScript. I was somewhat tired of C++ types when I started the project, so I decided to make the initial development iterations easier with dynamic typing. However, I’m beginning to spend an uncomfortably amount of time on problems that would be easily avoided with types.