-
-
Notifications
You must be signed in to change notification settings - Fork 7.5k
Open
Labels
featureFeature request, or something should be improvedFeature request, or something should be improvedhigh priorityrefactor complexityThis issue needs some refactor / modifying several files / rethinking some part of the architectureThis issue needs some refactor / modifying several files / rethinking some part of the architecturetilemap
Milestone
Description
UI design and main goals of the tilemap feature:
- Everything related to tilemaps must be hidden until we create a new tilemap layer using a new Layer > New Tilemap Layer menu option (in this way we avoid bloating the UI with tilemap stuff)
- As tilemaps will be a kind of layer, we'll be able to have several tilemaps in one sprite
- One tilemap layer will have its own tileset, a tileset will have its own tile specs (grid size, etc.), but the tileset could be linked from an external file (with possibilities to embed the external tileset content inside the tilemap optionally)
- Each cel in a tilemap layer will be a new kind of image where each pixels reference a tile:
- Each pixel in the tilemap image will be a 32-bit value with some bits to reference the tile in the tileset and other bits to specify flip and rotation
- When we create a new tilemap layer, it should behave almost exactly like a regular layer, and tiles should be handled transparently/automatically by default (so even if an user creates a new tilemap layer by mistake, she/he shouldn't see a different behavior from a default layer)
- When the active layer is a tilemap layer, a new set of buttons should be displayed in the color bar, those buttons should allow:
- Changing between the palette view <-> tiles view (keyboard shortcut:
Shift+Tab) - Changing between the automatic mode of handling tiles
- Do some special operations to tiles, which should match future operations with the palette too. E.g.
- clean unused tiles = clean unused colors,
- group tile = group colors,
- remap of tiles = remap of colors
- Changing between the palette view <-> tiles view (keyboard shortcut:
- When a sprite contains tilemap layers, the sprite properties dialog should show a section of "tilesets" #3875
- We should be able to reorder tilesets
- We should be able to add new tilesets
- Possibility to link external tilesets
- Persistence (.aseprite information)
- Auto-sync tileset from external file when the original is modified
- UI to select external tilesets
- Special import/external/linked tileset options, e.g. from grids, from frames, from layers, from "Import Sprite Sheet", etc.
- Drawing tile pixels with three modes: Manual (modify the tiles, don't create new tiles), Auto (create/remove existent tiles automatically), Stack (add new tiles when they are modified, keep the existent tiles unmodified)
- Drawing tools with tiles
- Paint with tiles (still buggy)
- Eyedropper for tiles
- Selecting tools with tiles
- Fill, Stroke, and Clear commands for tiles
- Copy and paste tiles
Special Features
Possible advanced features:
- Flip/Rotation per tile in tilemap layer Implement xflip/yflip/rotation flags in tilemap layers #3603
- Overlapped tiles (isometric tiles etc., hexagonal tiles, etc.)
- Palette shifting (e.g. some bits to shift the colors of a tile in the color palette)
- Metatiles (hierarchy of tiles, where the tiles of one tileset is another tilemap with smaller tiles)
Persistence
- Create a new chunk in .aseprite format to save tilesets
- Each tileset should contain specs (tile width/height, type of tiles, etc.) and source of tiles (e.g. for linked tilesets between files).
- Save/load layer tilemaps and their cels
- Save only differences between cels in tilemap layers
- Save (and load?) TMX files
- Convert grid settings into tileset specs and save then in the
.asepritefile if it's possible (Save grid parameters to .ase files #688), this might enable isometric grids too (Isometric object creation tools #720)
Integration
- Check the integration with Tiled mode
Ideas, issues to review, and old ideas about the implementation
Review
- Projects management feature Projects management #126, question, should tilemaps be related to a project? It looks like nothing should be related to a specific project and maybe the projects feature should handle folders only.
- All tilemap related issues tilemap
- This Steam thread: http://steamcommunity.com/app/431730/discussions/1/405692224243720164/
UI Design
Here I'll be updating this issue to talk about the design of this feature. Some questions to solve:
- How we create a new tilemap? (File > New > Advanced > a new tab for tilemaps appears? or we start creating the sprite sheet?)
- Should be the tilemap a switcheable mode like "Tiled Mode"? I don't think so, we could be creating several tilemaps from the same tileset/sprite sheet. So it looks like a tilemap is just a way to say "we are going to create a map feeding tiles from these sprite sheets"
The general idea is this:
- the color bar should be transformed into a tileset where we can pick tiles
- the sprite editor is the tilemap editor where we can put/draw/pick(eyedropper) tiles
Internal tasks
Tasks to do (this list is not complete):
- create a new kind of image that can reference different tiles/
doc::Imageon each area and with different rotation/flipping. (doc::TiledImage?) - create a generic iterator for any kind of image (current doc::Image, and this new tiled image)
- different parts of code will use the
doc::Imageiterators (e.g. file format encoders/decoders) and other areas should use this generic iterator (e.g. spriteEditorwidget). - get tileset from a tilemap (from this thread)
An alternative implementation would be to edit images as a regular image, and after each "tool loop", we update/sync the tilemap/tileset depending on these modifications. Pros: easier to implement (there is no new kind of image), Cons: it will use a lot more memory (and it couldn't be an option for big maps).
wiebow, noisegul, scriptorum, Torguen, cassioKenji and 96 moreAkashaRepo, cassioKenji, niedzielski, hochbaum, sherjilozair and 26 moremr-islam and BBarisKilicTeddyDD, jjhaggar, Torguen, cassioKenji, niedzielski and 46 moreCptspok, despedite, OutbackGames, Alitma5094, BBarisKilic and 2 more
Metadata
Metadata
Assignees
Labels
featureFeature request, or something should be improvedFeature request, or something should be improvedhigh priorityrefactor complexityThis issue needs some refactor / modifying several files / rethinking some part of the architectureThis issue needs some refactor / modifying several files / rethinking some part of the architecturetilemap