Tools grid


Tidy Tile Mapper is an easy-to-use, intuitive and powerful tile-based game creator for Unity, perfect for creating both 2D and 3D tile-based games. More Information

Tidy Maze Maker is a plugin for Tidy Tile Mapper that allows you to generate mazes with which to amaze your friends and perplex your enemies. More Information

A handy little mesh-modifying script - perfect for creating water or fire in your favorite Tile-Mapping tool... Tidy Tile Mapper!
More Information

Tidy Text Adventures - the zero-code-required, text-based-adventure creation tool of your dreams!
More Information
 
Tidy Tile Mapper is an easy-to-use, intuitive and powerful tile-based map editor
for Unity, perfect for creating both 2D and 3D tile-based levels.

Wednesday, January 2, 2013

Tidy Text Adventures: The Video

You've seen it in prose, now see it in action!



If you're super-pumped after hearing my tired voice - buy the tool right now!
Or if you're feeling bookish, go ahead and read the documentation a little. It's not as decisive, but if you picture that bookworm from Toy Story 3 it's slightly more magical.

-Joshua McGrath

Friday, December 21, 2012

Tidy Text Adventures: Documentation now live

Hello friends, 

I have added Tidy Text Adventures to our documentation site. 

Here you can get specific help per layout (if you own the tool, the small ? button in the bottom left will take you to the relevant page).

If you don't own it but you are curious about creating text-based adventures in Unity with Tidy Text Adventures, take a look - screenshots ahoy!

Check out the new documentation here.

-Joshua McGrath

Wednesday, December 19, 2012

Tidy Text Adventures


Hello tool enthusiasts!

After the release of "Ball of Woe" I gave myself an early Christmas present - and took a few weeks 'off' to develop our new tool: "Tidy Text Adventures".

Tidy Text Adventures is a zero-code-required tool allowing you to build Text-based Adventure Games right inside Unity. That means... you can build them to whatever platform you wish to - and generally enjoy all of the benefits Unity has to offer.

So how does it work, in general?

  1. You create a new Adventure.
  2. You create a Room and put it in your World Map (see above).
  3. You create an Item and put it in your Room.
  4. You create some UseCases with which your player can interact with the Item (e.g: "Smash Teapot with Hammer")
  5. You add some Language with which the player will drive the world ("North","South","Look", "Take")
  6. You press 'Play'!
And some of the features?
  1. Super-intuitive design layout.
  2. Contextual help for every field.
  3. Inbuilt scheduled backup system - never lose your work!
  4. Styled UI provided - all you need to do is make your Adventure and press 'Play!'
  5. Full source code provided. Because people seem to like that.
  6. The same obsessive support you've come to expect from me.
That's really the sum of it. 

A pure, simple form of gaming using the most powerful graphics processor known to man: The human mind.

(That's a paraphrased reference to The Big Bang Theory)

You can play a short demo right here - during which you explore the trials and tribulations of making my morning coffee: "Hello, Strawman".

The tool was approved in record time and caught me unawares - so I'm busy stocking the documentation site and making help videos. In the meantime, have an explore - it has contextual help and is very intuitive to use.

Enjoy!

-Joshua McGrath

Monday, December 3, 2012

Ball of Woe - Built with Tidy TileMapper



Hello friends, well-wishers, Tile-mapping enthusiasts.

We've done it! After five long months of development we have released "Ball of Woe" - built in Unity using Tidy TileMapper.

The project began as a basic test to assure that Tidy TileMapper handled three-dimensional upward-growing maps using the Runtime API (we make a lot of these tests on our side to assure that everything runs smoothly) but evolved, twisted and grew into a fully-fledged project.

Take a look at the promo video (above) and then - if your appetite has been whet, take a look at the longer development video below.

Ball of Woe has been currently released for iPad (we built and tested on the iPad 1, getting delicious frame-rates between the 50 and 60 mark - capped at 60 to preserve battery) - and is free.

So - feel free to get it from the App Store now.

And if you have any questions about how we did it - particularly: "Wait... I thought Tidy TileMapper was for building side-scrolling platformers?" - I'd love to give you more information - maybe in a video or blog?

Enjoy!

-Joshua McGrath

Tuesday, September 4, 2012

Tidy TileMapper: Streaming Maps - the update!

Streaming maps! The new (long-overdue) addition to Tidy TileMapper.

Submitted as at the 5th of September, glorious year of 2012 - so it should be live for download within a few days.

Enjoy!

-Joshua McGrath

Wednesday, May 16, 2012

Tidy TileMapper: Dynamic Background Generation and Click-to-paint game logic



A quick "In development" video for a few future Tidy TileMapper updates.
I'm excited!

-Joshua McGrath

Tidy TileMapper: Introducing Tidy Controllers



A short introduction to the latest update of Tidy TileMapper: Tidy Controllers.

-Joshua McGrath

Tidy TileMapper: Turning your models into Blocks



-Joshua McGrath

Sunday, May 6, 2012

Tidy Tile Pack #1 Available Now

It is with great excitement that we announce the release of Tidy Tile Pack #1 - our first pack of block-sets designed for use with Tidy Tile Mapper

Tidy Tile Pack #1 includes 15 block-sets and a total of 59 block variations - all lovingly-crafted in a lush, retro-painted style.

All blocks are pre-configured for use with Tidy Tile Mapper - simply import Tidy Tile Pack and get down to business.


I'll be starting work on new tile packs soon, so if you have any requests or suggestions for future block-sets please let me know. And if you have used Tidy Tile Pack #1 I would love to see screenshots of your creations.

- Jess

Friday, May 4, 2012

Top-down maps and Block Orientation.



Another tutorial for you today, my friends - this time demonstrating and explaining top-down mapping in Tidy TileMapper.

Hopefully this is helpful to you all.

-Joshua McGrath

Monday, April 23, 2012

Tidy TileMapper: Your First "5" Minutes



A quick tutorial video that should introduce you nicely to the "philosophy" behind the use of Tidy TileMapper.

Watch, digest, enjoy!

-Joshua McGrath

Tuesday, April 3, 2012

Tidy TileMapper: Character Controllers - Coming soon!



Yes yes. I've had a vision.

A vision of the future of "Tidy Tile Mapper" - and by proxy, the future of the human race itself.

I'll summarise it in a quasi-"vision statement" right here, for your entertainment:

"One click: Map
Two clicks: World
Three clicks: Player
Four clicks: Play!"

I think that conveys what I want to do here. I want to extend the "have fun and paint" philosophy that I try to have "Tidy Tile Mapper" bring to level-painting, and bring it to the entire game-creation process.

So over the next few weeks, I'll be releasing paint-able game components - character controllers, event triggers, and so forth.

So look forward to that! I certainly am.

-Joshua McGrath

Wednesday, March 21, 2012

Tidy Tile Mapper: A Very Big World



A short demo utilizing the Tidy Tile Mapper Runtime API.
Something to wet your appetite for massive procedural worlds.

Enjoy!

-Joshua McGrath

Monday, March 19, 2012

Tidy TileMapper: Runtime API

NOTE: This ad-hoc documentation has been replaced by a super-smooth API site, accessible via the sidebar on the left (Technical Documentation) or by clicking this link.

All API functions are held within the BlockUtilities class.

Example: To create a new block map with a standard tilesize you would call:

BlockUtilities.CreateBlockMap("NewMap",new Vector3(1.0f,1.0f,1.0f),5,5,BlockMap.GrowthAxis.Up);





Functions:


public static BlockMap CreateBlockMap(string mapName, Vector3 tileScale, int chunkWidth, int chunkHeight, BlockMap.GrowthAxis growthAxis);
Create a new Block Map


Parameters:
mapName: The name of your new block map
tileScale: The scale of the tiles within your new blockmap
chunkWidth: The width of the chunks within your new blockmap (Recommend: 5)
chunkHeight: The height of the chunks within your new blockmap (Recommend: 5)
growthAxis: The direction in which your new blockmap will grow when blocks are added to it
Returns BlockMap:Your shiny, new blockmap



public static Block GetEmptyBlock(BlockMap map);
Returns an empty block (useful for deleting blocks but retaining trigger functionality)


Parameters:
map: The map to which this block will be added (required in order to correctly size the trigger of the block)
Returns Returns an empty block

public static void RemoveBlockFromMap(BlockMap map, int x, int y, int depth);
Remove a block from the map (replacing it with an Empty Block)


Parameters:
map: The map from which you wish to remove the block
x: The x coordinate of the block
y: The y coordinate of the block
depth: The depth of the block



public static void RefreshMap(BlockMap map, bool randomise);
Refresh the map - correcting orientations on all blocks


Parameters:
map: The map that you wish to refresh
randomise: Randomise the block variations within the map?



public static void CleanMap(BlockMap map);
Cleans the blockmap - removing all unused variations and orientations


Parameters:
map: The map that you wish to clean



public static Block GetBlockAt(BlockMap map, int x, int y, int depth);
Get the block located at the given coordinates


Parameters:
map: The map from which you wish to retrieve a block
x: The x coordinate of the block
y: The y coordinate of the block
depth: The depth of the block
Returns The block, if one exists, null if not.



public static int GetMapUpperDepth(BlockMap map);
Returns the lowest depth that is populated within the given map


Parameters:
map: The map from which you wish to retrieve the depth
Returns The lowest depth recorded in the map



public static int GetMapLowerDepth(BlockMap map);
Returns the highest depth that is populated within the given map


Parameters:
map: The map from which you wish to retrieve the depth
Returns The highest depth recorded in the map

public static int GetMapHeight(BlockMap map);
Returns the height (in tiles) of the map


Parameters:
map: The map from which you wish to retrieve the height
Returns The height of the map



public static int GetMapWidth(BlockMap map);
Returns the width (in tiles) of the map


Parameters:
map: The map from which you wish to retrieve the width
Returns The width of the map



public static void AddBlockToMap(BlockMap map, Block b, bool randomise, bool refreshUponAddition, int x, int y, int depth);
Add a block to the desired map


Parameters:
map: The map to which you wish to add a block
b: The instantiated Block object that you wish to add to the map (if null, will add an EmptyBlock object)
randomise: Randomise the variant of this Block upon addition to the map?
refreshUponAddition: Refresh the surrounding blocks upon addition to the map?
x: The target x coordinate
y: The target y coordinate
depth: The depth to which to add the block



public static void RefreshBlock(BlockMap map, int x, int y, int depth);
Refresh the target block - correcting the orientation of the block and the surrounding blocks


Parameters:
map: The map housing the block that you wish to refresh
x: The x coordinate of the block to be refreshed
y: The y coordinate of the block to be refreshed
depth: The depth of the block to be refreshed



public static void CleanBlock(BlockMap map, int x, int y, int depth);
Cleans a single block


Parameters:
map: The map containing the target block
x: The x coordinate of the target block
y: The y coordinate of the target block
depth: The depth coordinate of the target block



public static MapChunk GetChunkAtCoordinates(BlockMap map, int x, int y, int depth);
Returns the chunk at the given block coordinates


Parameters:
map: The map from which to retrieve the chunk
x: The block x coordinate
y: The block y coordinate
depth: The depth coordinate
Returns The chunk (if one exists) - null if not



public static Vector3 GetMathematicalPosition(BlockMap map, int x, int y, int depth);
Returns the local position of the given coordinate (useful for character movement


Parameters:
map: The map from which you wish to retrieve the position
x: The block x coordinate
y: The block y coordinate
depth: The block depth coordinate
Returns The local position that is central to this block coordinate



public static Vector3 GetMathematicalCoordinates(BlockMap map, Vector3 localPosition);
Mathematically divine the coordinates of the localPosition provided within the blockmap


Parameters:
map: The map within which you wish to divine your coordinates
localPosition: The local position of the transform (parented to the map)
Returns The x,y,z coordinates of the transform, gathered mathematically. NOTE: This is not of use on a map that involves arbitrarily-placed blocks (e.g soft selection)



Enjoy!

-Joshua McGrath

Tidy TileMapper: Runtime API Demonstration



Hello friends,

The first release of the Tidy TileMapper Runtime API has been released and is now live on the Asset Store.

Take a gander at the video above, which gives you a nice taste of the functions achievable using the library.

Stand by for API documentation and example code - should wet your procedural-generation appetite.

-Joshua McGrath

Sunday, February 26, 2012

Feature Requests and In-Development

The purpose of this post is to keep track of feature requests, bugs and other features in-development.


Please feel free to leave a comment if you want to elaborate on a feature, or request something new, and I'll add it, track it, and send it home to momma.


In-Development

  • 27/02/2012:  Tidy Gameplay
    • Summary: A set of "functional blocks" for paint-and-play game design.
    • Includes: Character controllers, AI controllers and other functional blocks (e.g: Level end zone)
  • 27/02/2012:  Block-set texture packs
    • Summary:  More texture packs for blocks. 
  • 09/04/2012: Allow arbitrary layer-visibility
    • Summary: Allow the user to preview a range of layers (extended beyond the all-or-one function)

Feature Requests
  • 27/02/2012: "Act Empty" modification to support negative tilesets
    • Completed.
    • Summary: Modify "Act Empty" feature to tile with other "Act Empty" blocks, to allow negative tilesets.

  • 27/02/2012: More orientations
    • Summary: Add more block orientations to allow more fine-tuned painting of maps.
    • Comments: I'm going to add a "Custom Orientation" tool, allowing the user to create custom orientations (by mapping to a grid just like the icons in the Block Editor). These will be saved for use across any block, and evaluated before built-in orientations. This should balance simplicity with power. Like a motorcycle.

  • 27/02/2012: Slanted blocks using Soft Selection
    • Summary: Allow programmatically-slanted blocks when creating pyramid-styled constructs.
    • Comments: I like this idea. It sounds like a fun thing to develop. I'm not sure how universal the usefulness will be, but it will just add another button to the UI, so shouldn't hurt anybody.

  • 27/02/2012: UI-integrated Mesh Combine
    • Summary: Mesh-combine logic integrated with the Map Painting interface - allowing geometry combination across chunks.
    • Comments: This has been something in the back of my mind for a while, but it will need to be delayed until I've finalized the internal logic for procedural generation and other game logic (Active blocks vs. Passive blocks).

  • 27/02/2012: Procedural Generation / Runtime modification API
    • Completed (but always improving).
    • Summary: An API allowing runtime modification of Block Maps.
    • Comments: This is largely already implemented, but I am currently developing a test project against the API to assure that drastic future changes won't be required (and thus, break everybody's projects).

  • 27/02/2012: API Documentation
    • Completed  (but always improving) .
    • Summary: Document the API so that all of your friends can use it with gusto.
    • Comments: Again, this is one that I'm delaying a little until I'm certain drastic internal changes won't take place. By "delaying" I mean a week or so, nothing drastic.

  • 27/02/2012: Help documentation, Tutorials, Videos.
    • Summary: Put together some help/tutorial resources to allow everybody to get the most out of Tidy TileMapper.
    • Comments: I will. I promise. I've been putting this off for a long time. Videos take a long time to make. But in the end, everybody benefits from knowledge.

  • 27/02/2012: Delete Layer chunk
    • Completed
    • Summary: Allow a user to delete a layer-chunk when adding layers.
Bugs and other Miscellany

  • 27/02/2012: Tile Mapping window "popping" from docked position upon pressing 'Play'
    • Fix Submitted: 28/02/2012 
    • Summary: Tile Mapping window pops from its docked position when the editor enters Play-mode. In some reported cases, this returns a Null Reference error (when the window attempts to draw an icon that hasn't been loaded yet).
    • Comments: This has something to do with the reconstruction of static classes kept in memory (allowing universal access to icons and other loaded files - prefabs and such). I'm on the case.

  • 27/02/2012: Slow the input rate of Add Layer
    • Fix Submitted: 28/02/2012 
    • Summary: Input rate of layers is currently too fast. Slow this to avoid the addition of multiple layers accidentally.

Tuesday, January 24, 2012

Tidy Tile Mapper: How to create Custom Blocks.



Hello friends - at the request of the excellent community on the Unity forums, I've put together this tutorial video demonstrating the use of the Block Editor and the creation of custom blocks with Tidy Tile Mapper.

If you have any questions, please feel free to leave a comment.

Enjoy!

-Joshua McGrath

Saturday, January 21, 2012

Tidy TileMapper: Official Video



Witness, and enjoy - the new Tidy Tile Mapper video!

100% less speaking, 100% more chiptune.

Soundtrack - "The Boss" created by Multifaros - see his excellent work here: http://freemusicarchive.org/music/Multifaros/

-Joshua McGrath

Thursday, January 19, 2012

Tidy TileMapper: Version 1.1 - Three dimensional manoeuvres in the dark.



Tidy Tile-Mapper Version 1.1 has been submitted to the Asset Store and will be available momentarily - excitement of all excitements!

In the meantime, take a look at the video above - where my sultry early-morning tones will guide you toward your Soft Selection aspirations.

-Joshua McGrath

Wednesday, January 18, 2012

Tidy TileMapper: It's mysterious.


Tidy Tile Mapper has been approved by the excellent individuals at Unity and is now large, in-charge and available for purchase on the Unity Asset Store.

During the fevered wait for this approval, I've been working on Tidy Tile Mapper V1.1 - the evocative results of which you can see above.

This was achieved using the new "Soft Selection" tool for moving individual blocks. I won't give too much away (I'll save that for another husky video) - but I will say - If there is anything you'd love to see in the next Tidy Tile Mapper release, get to typing! Leave us a comment. My "To Do" list is beginning to frighten me with its emptiness.

As always, gentle folks:

Stay Crunchy.

-Joshua McGrath

Disqus for Doppler Interactive Tools