Tileset Studio 0.10 (Win only)

Hey folks
I made application for tileset makers. It should help them with their task, which is as I can imagine not easy one…

Requirements:

[ul][li]Windows (made it on x64 7, hopefully it will work on different versions too)[/li]
[li].NET Framework 4.5[/li][/ul]

Installation

[ul][li]extract where you want[/li]
[li]set your cataclysm folder in CataTilesetStudio.exe.config[/li][/ul]

Picture how it looks is here (Updated for 0.3)

Functionality:

[ul][li]shows game objects - loaded from game files and mod files, hardcoded objects are loaded from System.json in app folder (you can add more inside) and are shown in Game/System[/li]
[li]Import tileset - it will generate new project into AppFolder/Projects/NameOfTileset, it will open it after import is done[/li]
[li]Open project - you can open existing project[/li]
[li]Export project - it will override tileset in game folder, you can alter project.json in project folder to change export name / location[/li]
[li]Link tiles to objects - just select object (left tree) and drag tile (right tree) into foregroung / background of selected object (middle of the screen)[/li]
[li]Edit tile in external editor - it will open tile in defined application (the one you have set to open .png files), will refresh image after file is saved in editor[/li]
[li]Clone tile - clone tile and change link to the newly created tile[/li]
[li]Rename tile - you can rename tile (and / or move it to different project folder)[/li]
[li]Filters - you can filter respective tree with them, if you press enter, trees are expanded (branches with 20 or less items inside)[/li]
[li]you can select object (to appear in middle part of screen) by selecting object in object tree (blue rows) or by selecting link to object in tile tree (blue row again)[/li]
[li]project respects changes in folder structure, tweak folders in file manager while project is closed, tiles will be in correct folders after you open project again (tiles must not be directly in the root project folder to load)[/li]
[li]all data about tile are stored in pair of files (tilename.png and tilename.json), if you need to share some tiles with someone, just zip these pairs of files, recipient just unpack them in their project folder and done (good for teams of authors collaborating on one tileset, or if someone just helps with few tiles here and there)[/li]
[li]imported tiles not linked to object are in unused folder, tiles linked to nonexistant objet (not in game / mod files or System.json) are in undefined folder[/li]
[li]…most likely missed something…[/li][/ul]

Missing features:

[ul][li]New project - just import one and alter project.json[/li]
[li]New tile - cloning existing one works just fine for now[/li]
[li]renaming folders, workaround - close project, use file manager, open project[/li]
[li]if you are a tileset maker and are using / plan to use this app and need something implemented, just ask[/li][/ul]

Warning: I did test the application… still, I am sure there are bugs inside.

Workflow (as I use the app)

  1. playing the game until I found tile I want to replace - I check the name of it, save and quit the game
  2. unless it is running already, start Tilestet studio, open project you are working in
  3. find the game object you want add tile to, filter under Object tree comes handy
  4. drag&drop similar tile from Tiles tree into the object foreground
  5. clone it (middle one of small buttons near the tile image), it does two operations

[ul][li]creates a copy of tile - you can change name and directrory, fitting ones are suggested though[/li]
[li]links selected object foreground to newly cloned tile[/li][/ul]

  1. edit the newly cloned tile (top of tiny buttons) in external graphics editor (the one you selected as default in windows for .png), save (you can keep editor running)
  2. check that saved tile, if is correctly drawn in tileset studio, press Ctrl+E for export (keep studio running)
  3. start the game, load save, check if tile looks good in game
  4. if tile is ok, return to step 1), else return to step 6)

Protips

[ul][li]if you click on tile on selected object (middle of the screen), it will locate the tile in Tiles Tree for you (unless Tiles tree filter prohibits it, you may need to clear it first)[/li]
[li]if you expand tile in Tile tree, it will show you all objects it is used in (linked objects)[/li]
[li]if you click on linked object, it will be selected to middle of the screen[/li][/ul]

Filter switches

[ul][li]ObjectTree[/li]
[list]
[li]:n - use object name instead of object id for filtering, “:n jackrabbit” will find object with id mon_hare[/li]
[li]:e - show only objects without links (without any attached tiles), this filter takes some computer power, give it few seconds[/li]
[/list]
[li]TileTree[/li]
[list]
[li]:u - show only tiles without links (without any attached objects), good for finding unused tiles[/li]
[/list][/ul]

Planned features

[ul][li]show Foreground and Background as one image, somewhere[/li]
[li]better tooltips[/li]
[li]new tile function[/li][/ul]

Changelog for 0.2

[ul][li]added symbol and description info to the selected object[/li]
[li]object id of selected object is now hyperlink to Item Browser by Sheco[/li]
[li]import and export now running in separate thread (messages like “Importing tileset…” are now actually shown before the work is finished)[/li]
[li]first tile (zero index) of exported tileset is transparent tile now… reasons explained here: http://smf.cataclysmdda.com/index.php?topic=5309.msg98813#msg98813[/li]
[li]various bugfixes[/li][/ul]

Changelog for 0.3

[ul][li]support for CIB’s overlays: https://github.com/CleverRaven/Cataclysm-DDA/pull/8993[/li]
[list]
[li]for items, Worn and Wielded overlays can be added in middle section in Worn & Wielded part [/li]
[li]mutations are added in Game Objects Tree, Game->mutation, for adding mutation overlay you need to add it in Foreground part (Fg)[/li]
[/list]
[li]support for Seasonal Tiles (aka Winter is coming): https://github.com/CleverRaven/Cataclysm-DDA/pull/9200[/li]
[list]
[li]middle section now contain tabs[/li]
[li]General tab is for tiles independent of season, it is rendered when there is no seasonal tile specified for current season[/li]
[li]Spring, Summer, Autumn and Winter are seasonal tabs, if you add tile here, it will be shown in game instead of general tile at time of respective season[/li]
[/list]
[li]updated system objects list[/li]
[li]support for ascii fallback[/li]
[li]can import only tilesets in new format - these containing element ‘tiles-new’ in tileset.json, like MShock and Retrodays[/li][/ul]

Changelog for 0.4

[ul][li]support for Overlays Tweak (gender specific overlays): https://github.com/CleverRaven/Cataclysm-DDA/pull/9257[/li]
[li]mutation overlays should now be set into Worn, Male Worn and Female Worn instead of Foreground [/li]
[li]bug fix of importing tilesets with multiple .png files[/li][/ul]

Changelog for 0.5

[ul][li]bug fix of removing link on seasonal tabs, it could result in[/li]
[list]
[li]if there was no corresponding link on General tab, log showing System.InvalidOperationException: Sequence contains no matching element[/li]
[li]if there was corresponding link on General tab, removing this link instead[/li]
[/list][/ul]

Changelog for 0.6

[ul][li]suggested file name when cloning overlay tiles is now similar to names in exported .json[/li]
[li]selected tile can now be deleted inside of editor (Tile->Delete or Ctrl+Del), it is possible to delete tile with links, so be careful[/li]
[li]links in TileTree are shown as seasonal, if they are (summer foreground) instead of (foreground), for example[/li]
[li]when you select link in TileTree, it will also select correct season tab, not just linked object[/li]
[li]added filter switches, description is in section Filter switches[/li]
[list]
[li]ObjectTree - :n :e[/li]
[li]TileTree - :u[/li]
[/list][/ul]

Changelog for 0.7

[ul][li]filtering in ObjectTree made faster (on multicore processers), noticeable difference is with :e switch, rest was fast enough anyway[/li][/ul]

Changelog for 0.8

[ul][li]new System tiles “explosion_medium” and “explosion_weak”[/li][/ul]

Changelog for 0.9

[ul][li]fix of importing and exporting bug due to changed paths to tileset files
http://smf.cataclysmdda.com/index.php?topic=11005.0[/li][/ul]

Changelog for 0.10

[ul][li]support for items with “copy-from” attribute[/li][/ul]

You can download latest version of the application here: https://drive.google.com/drive/folders/0B6HiQfak4JQSSUxVN1Rqc3dDcHM

So far it appears to be working extremely well. Haven’t encountered any real issues with it. I’ve only spent about a half hour playing around with it and I plan to spend a bit more time with it over the next day or two, so if I find any issues I’ll report back. If it works as intended it’d be an awesome utility and may save a lot of time making tilesets.

Thank you.
I am grateful for any testing. It is needed indeed.

I will release version 0.2 today or tomorrow, with some fixes and new features. I will also post better example of using the app later… I am using it personally to add some tiles to RetroDays tileset for experimental build I am playing (CDDA1137) and it works great, for derived tiles especially.

For example, there are 2 new flowers that grows everywhere alongside of mutated poppy, these are dahlia and bluebell… adding them as clones from poppy, recolor them a bit, export the tileset and now all those pesky unknown tiles are gone!

Original Mutated Poppy
Dahlia
Bluebell

Downloaded the Tileset Studio to add in the missing flowers in one of the recent RetroDays releases.

Suggestions:

On first launch ask the user to locate their cataclysm directory or to type its path into a config window. (Importing with the invalid default directory you have specified in the default config file crashes the program.)

You said you were working on instructions. You’d want to include those along with version information and credits into a readme and release them along with the tool itself. Couldnt hurt to have links back to the forum post just in case someone gets their hands on it sometime down the road and has questions.

Search feature. Having no experience with editing tilesets, i do not know where to look for the tile that i want to change. (After typing this i realized that there is an unlabeled search box at the bottom of each column. Who knew that mutated poppies were under furniture… id hate to know what happens if you sit on one. Just getting close enough to touch it often knocks you out for an hour… and in Cataclysm bad things often happen to you when you sleep.)

EDIT:

Clicking on some of the empty squares in the tileset window appears to crash the program on win7 64. Maybe im not supposed to click them unless i have something selected?

Reimporting causes the program to pop up a warning box: Project already [exists.] Overwrite? Theres a grammar error there. “Project already exist” instead of the correct “Project already exists”

I will add it a dialog to find game folder if there is none (or is invalid). It may not be in 0.2 though…

You said you were working on instructions. You'd want to include those along with version information and credits into a readme and release them along with the tool itself. Couldnt hurt to have links back to the forum post just in case someone gets their hands on it sometime down the road and has questions.

That is good idea, I will add short readme with link to forum.

Search feature. Having no experience with editing tilesets, i do not know where to look for the tile that i want to change. (After typing this i realized that there is an unlabeled search box at the bottom of each column. Who knew that mutated poppies were under furniture.. id hate to know what happens if you sit on one. Just getting close enough to touch it often knocks you out for an hour.. and in Cataclysm bad things often happen to you when you sleep.)

I will probably expand search functionality later, I am still thinking about the best way to do it. And yes, flowers in furniture was surprise for me as well :slight_smile:

Clicking on some of the empty squares in the tileset window appears to crash the program on win7 64. Maybe im not supposed to click them unless i have something selected? Reimporting causes the program to pop up a warning box: Project already [exists.] Overwrite? Theres a grammar error there. "Project already exist" instead of the correct "Project already exists"

Thanks for reporting these. Found and fixed for next version.

Clicking on squares in middle is supposed to select corresponding tile in the tile tree (on the right side), if there is something to click on. If you wanted to assign tile, it is done via dragging the tile from right tree into the empty square.

Changelog for 0.2

[ul][li]added symbol and description info to the selected object[/li]
[li]object id of selected object is now hyperlink to Item Browser by Sheco[/li]
[li]import and export now running in separate thread (messages like “Importing tileset…” are now actually shown before the work is finished)[/li]
[li]first tile (zero index) of exported tileset is transparent tile now… reasons explained here: http://smf.cataclysmdda.com/index.php?topic=5309.msg98813#msg98813[/li]
[li]various bugfixes[/li][/ul]

Download link updated in first post.

Trying out the new editor to add in the flowers that i never got to add in previously. Success! (After way too much time spent trying to debug the fact that i was being stupid.)

EDIT posted as a reply below.

[quote=“Ratha, post:7, topic:5395”]Trying out the new editor to add in the flowers that i never got to add in previously. Im afraid that i dont know what im doing. :slight_smile:

As far as i can tell, i have managed to replace the f_dahlia and f_bluebell… atleast they now look like they should in the lefthand and righthand panes. But thats as far as i am able to get.

I assume that i am supposed to export it the set, but what do i do with the set after its been exported?

EDIT: Wait… working with too many directories may have caused me to try to launch the game from the wrong directory. Starting over and cleaning up, see if i can do this right.[/quote]

After export is done, no additional steps are needed. Export overwrites tileset you imported, essentially replacing original. Launching the game and choosing the tileset in options (if not done before) is enough.

Note that all this is done in game folder you set in application configuration. If you installed new version of game in different folder, you have to copy exported tileset from old game folder into new one.

Once all is set, it allows for very quick adding of new tiles. I am working like this.

  1. playing the game until I found tile I want to replace - I check the name of it, save and quit the game
  2. unless it is running already, start Tilestet studio, open project you are working in
  3. find the game object you want add tile to
  4. drag&drop similar tile into the object foreground
  5. clone
  6. edit the newly cloned tile in external graphics editor, save (you can keep it running)
  7. check that saved tile is correctly drawn in studio, press Ctrl+E for export (keep studio running)
  8. start the game, load save, check if tile looks like I want to in game
  9. if tile looks good, return to step 1), else return to step 6)

Now that im no longer using 4 copies of the same directory in multiple different places and trying to derp-launch the updated tileset from the wrong game folder… seems that the editor works pretty decently. Its a bit unintuitive to me personally, especially adding in new tiles, but thats probably just due to lack of experience with the program.

I dont know if it was the correct procedure, but in order to add a new tile that did not exist in the tileset i was using, first i had to drag and drop any tile from the tileset that i did -not- want to use and then clone it. After it was cloned a new png and json file was automatically created in the proper project folder, in this case f_bluebell.png/json. After that was done, then i saved the f_bluebell.png from this thread and used windows explorer to copy it over the top of the incorrect png file that i had just cloned.

It seems like an unnecessary step to copy/clone a tile that you dont want into a new object that you want to create in the tileset, but i think i understand why you would do it that way. If you wanted to ‘clone’ the f_mutatedpoppy and use your editing program to change its color, that would be the perfect use for it. But its not a fully intuitive method for adding a new item.

Something that would be more explanatory (to me) is if the empty tile had a right click function: “Create new.” Selecting this option would then create a new png and json with the same file as the object named in lefthand pane. From there you would then have the standard options to edit, clone, remove, rename and so on. In order for this to work there would have to be a default .png that was created. This could be the default .png from the main game object list, or it could be a “Robik’s Empty Tile” that came with the program.

Alternatively it might be nice to ‘locate’ a .png that you wanted to use via a “Create new tile and open an explorer window so that i may choose which tile to overwrite the default one with.” button.

Both of those options are probably unnecessary once you understand how to use the program however. I also suspect that the reason that clone is the better option overall is that it copies an existing tile, meaning that the sizing is already set properly and theres no room for user error there?

I did seem to accidentally un-assign the original mutated poppy tile, but that was probably due to a lack of safety feature on the “remove” button. (Im guessing.) Perhaps an option in the menu for “Confirm removal” might be useful? Or even instead of using tiny buttons to control all of the functionality to edit, clone, and delete, maybe they should be handled via a right click menu instead? That would allow you to fit all of the options into a single click command, so that some options were not only in the menus and some only on the buttons.

Thats all ive got to comment about at the moment. Good work so far. :slight_smile:

If you have pictures already, you can copy them in one of project folders (not root folder though). Application will add them automatically when opening project, even with missing .json. If you do not have picture, cloning similar one is the best way to create new tile.

It seems like an unnecessary step to copy/clone a tile that you dont want into a new object that you want to create in the tileset, but i think i understand why you would do it that way. If you wanted to 'clone' the f_mutatedpoppy and use your editing program to change its color, that would be the perfect use for it. But its not a fully intuitive method for adding a new item.

Something that would be more explanatory (to me) is if the empty tile had a right click function: “Create new.” Selecting this option would then create a new png and json with the same file as the object named in lefthand pane. From there you would then have the standard options to edit, clone, remove, rename and so on. In order for this to work there would have to be a default .png that was created. This could be the default .png from the main game object list, or it could be a “Robik’s Empty Tile” that came with the program.

Having new tile function is planned feature, cloning was implemented first, because it is more useful and can easily be used instead of creating new tile.

I did seem to accidentally un-assign the original mutated poppy tile, but that was probably due to a lack of safety feature on the "remove" button. (Im guessing.) Perhaps an option in the menu for "Confirm removal" might be useful? Or even instead of using tiny buttons to control all of the functionality to edit, clone, and delete, maybe they should be handled via a right click menu instead? That would allow you to fit all of the options into a single click command, so that some options were not only in the menus and some only on the buttons.

I would add confirmations only on actions that delete something permanently or can break something that cannot be repaired easily. You removed the link between game object and tile, it was visible immediately, logged in message window, and repairing it require only one drag&drop operation + maybe search in tiles tree. Buttons are tiny though and their tooltip is probably lacking, so there is room for impovements.

Thats all ive got to comment about at the moment. Good work so far. :)

Thank you very much for thoughtful post and testing the application. It is appreciated :slight_smile:

Also, there are lots of things for improvement, but as it seems I am the only user of the application, future improvements will be done mostly in areas that I would like to use personally. And I am pretty happy user already and do not need anything else… not right now at least.

I honestly thought that there will be more people interested in such application, because making tileset without any kind of editor sucks. If it is because tileset makers are on Linux or are using something better… I have no idea.

That said, if there is or will be someone who use / want to use the application to make a tileset and needs some specific features, let me know and I will add them.

New version of editor 0.3 is up and running.

Change log is in the first post, which also contains

[ul][li]updated pictuce[/li]
[li]Workflow section[/li]
[li]Protip section[/li]
[li]some minor edits in the rest of the text[/li][/ul]

I love you for this. I always wanted to try my hand at some tile art, but was always too lazy to figure out how to edit them properly.

Hi, maybe add option to show foreground and background combined?

Hey!
You mean to see how it looks together? Like in some floating tooltip when you mouse over foreground or background?

Hey!
You mean to see how it looks together? Like in some floating tooltip when you mouse over foreground or background?[/quote]
I was thinking as third square or near ascii symbol.

Hey!
You mean to see how it looks together? Like in some floating tooltip when you mouse over foreground or background?[/quote]
I was thinking as third square or near ascii symbol.[/quote]

Near ascii is possible, but that would be only for main Fg+Bg, not for other 8 others (and seasons), unless I combine it with that mouse-over trigger.

As third square I don’t like much, because these squares are active elements with specified functionality and third one behaving differently would be confusing, IMO.

New version of editor 0.4 is up. Change log is in the first post.

Update instructions from 0.3:
If you did not mess with mutation overlays. Install as normal.

If you did mess with mutation overlays, you have 2 options

[ol][li]Export project with 0.3 and import it with 0.4[/li]
[li]Manually change mutations you messed with by dragging same tile it is in Foreground into Worn and remove it from Foreground[/li][/ol]

New version of editor 0.5 is up. Change log is in the first post.

It fixed serious bug in link removing on seasonal tabs, so I decided to release new version immediately.

Sorry about that.

Good job on updating. Is there going to be an option to delete tile, that I don’t use no more, I’m lazy like that.

I will add that, yes. Most likely today.