Rotorz Tile System

Rotorz Tile System is an editor extension for Unity which I developed using C#. Originally I created this to facilitate the completion of a project although after having completed the project I thought that it would be fun to release as a product on the fairly newly established Unity Asset Store.

I have maintained and updated the asset since it’s original release 5 years ago including new features, bug fixes along with various reworkings to maintain compatibility with each new Unity release. Since its release the asset maintained a 5 star rating and received lots of good feedback. In particular customers mentioned how happy they were with the high quality support that I was able to provide them with.

Tile System Banner

Some of games that used this asset

Rotorz Tile System has been purchased and used by both small and large studios alike for prototyping and developing production quality levels. Some of these games even implement their own in-game level editors using the API that I exposed for them.

Intuitive user interfaces

I designed the various user interfaces so that they would be as intuitive to use as possible from the arrangement of controls, icons, to hot keys, to the workflows of actually using them. Where possible the support for features like drag and drop, context menus, etc was implemented so that users can be more productive.

I developed a range of custom editor controls which were designed to improve the overall user experience of the tool. Here are a few of the more obvious custom controls since many of the custom controls use built-in Unity styles.

Custom editor controls

Each type of brush has it’s own designer allowing the user to define and customize their brushes as needed.

Localization of user interfaces

A couple of years after release I made all of the text of the various editor interfaces localizable. Alex Chouls was very generous with his efforts in creating the French localization which is included with the asset. End-users can also create and use their own localizations where desired. Some customers wanted to be able to customize wording to improve usability for their teams.

I chose to use get-text for localization since there is a lot of tooling support plus it includes good support for singular and plural forms.

It was a little more difficult to localize menu items since the strings have to be hard-coded into Unity’s MenuItem attributes. In order to workaround this I automated the re-generation of the menu integration source file from a template each time the active language changes.

Extensible runtime and editor API

I designed the editor API with various entry points allowing end-users to implement their own tools, brushes, designers and workflows without the need to modify the original source code. This was in part since the asset was distributed as compiled DLLs but also because it would have been very difficult to maintain if end-users were modifying the original source code.

For example, the following allows a runtime script to paint a couple of tiles:

void PaintTwoTiles(int row, int column) {
    tileSystem.BeginBulkEdit();
        brush.Paint(tileSystem, row, column);
        tileSystem.RefreshSurroundingTiles(row, column);
        brush.Paint(tileSystem, row, column + 1);
        tileSystem.RefreshSurroundingTiles(row, column + 1);
    tileSystem.EndBulkEdit();
}

Documentation

For the asset store release documentation was authored with the DITA format because this allowed topics to be written and maintained independently of other topics. The open source DITAC tooling made this a good solution. One of the requirements of the asset store was that the documentation be provided with the asset itself. With DITA it is very easy to automate the generation of a PDF as well as the web facing content.

Technical support

I always strived to provide customers with the best quality and most detailed technical support as possible to help them understand and use the asset. Support was provided via E-mail, support forums and often with screen sharing for remote collaboration.

There was a private BETA testing group where customers were welcome to try out new features and be more involved with the development of the product.

Integration with other assets

Rotorz Tile System was integrated into a number of other assets that are available on the Unity Asset Store including PlayMaker, PoolManager and several assets that are nolonger available.

PlayMaker Example

Transition to open source

After the five years of development I decided to remove the product from the Unity Asset Store since I believe that it had reached a large volume of the target audience and to instead release it with a permissive open source license so that people can fully customize user experience for their teams.

For the open source release all documentation was converted into the simpler markdown format and I wrote a tool to generate GitHub wiki navigation similar to the original documentation that was generated by the DITAC tooling.

Visit the GitHub repository