Tiler - tile map editor

Tiler is a flexible map editor that lets you easily design large 2D tile maps for your game. Built directly into the Unity editor, it provides a custom workspace and integrates directly into various other Unity systems such as navigation.

Get it now from the Asset Store

I started creating it because there were certain features I felt other editors lacked, especially when dealing with extremely large tilesets (ie. filtering.) Also being built directly into Unity provides a number of benefits such as easier integration into unity projects and not needing to export providing instant previewing.

Video Preview
Release Video

Features
-Efficient editing tools including fill, copy and rotate
-Generate highly optimized colliders
-Easily bake a navigation mesh
-Tile filters to organize large tilesets
-Easily undo or redo texture changes
-Custom built workspace
-Ideal on all platforms
-Supports both Unity 3.5 and 4.x

I’m looking for any feature requests and feedback that’d make the extension more usable.

Wow, this looks great. I understand from your description that exporting was not one of your goals but am wondering if it might be in a future update so one might include such in design documentation?

my issue was the annoyance of having to export from 3rd party applications into unity. i have nothing against exporting from unity into something, anything in particular you wanted?

It already writes the textures to disk as a png so you could edit them in any paint program if that’s all you wanted.

To PNG would be perfect. Looking forward to the release. Great work!

Yeah it already does that so all good!

Anyway had a late night of coding and just finishing up the collision

Can specify a whole tile as a collision, or just sections of it.

Just need to make sure it’s all bug free, write some documentation and I’m ready to release.
Also! I will be releasing 2 versions, a free stripped back version for anyone who just wants to do very basic painting and the paid full feature version which I intend to keep improving.

Looking really good and user friendly!


navmesh generated! I’ve never really played around with them but can I just say it’s a bit silly I have to use a mesh renderer instead of a collider.
anyway it’s on track for a release this week. I also have a volunteer to bug test and give me some feedback tomorrow.

Nav mesh stuff looks really good. What kinda price point you looking at? (Sorry if was mentioned already but didn’t see it)

Also might sound like a strange/dumb question but what about ctrl+z? I found with some other Unity tile set editors that as I’m painting if I hit ctrl+z it does not recognize the painting of a single tile as a record in the editor history. Then it just ends up actually deleting the whole tile set as the editor will see that as the last thing that happened. It might seem like a minor thing but when your used to doing that it’s really hard to change your workflow.

Any sort of layering ability? (Again sorry if it was mentioned but didn’t see it)

Looks great so far.

How I’m creating tile maps I don’t believe the built in unity undo will work as I want (I’ll have to test) but I intend to write my own (it’s last thing I need to implement before releasing, but framework is already there). I do have the ability to temporary override unity global hotkeys (and add my own which I’ve done) so I might be able to bind it to the same thing when using the editor.

As for price, it’d be around $20-30.

For layers it’s not something that’ll I’ll get in for launch, but I really want to add them not too long down the track. I specifically want to be able to add a layer of objects for unusual shapes.

You can have as many ‘tiler maps’ though and place them on different height levels if that’s all you require.

-edit-

as expected I can’t use the built-in unity undo so I just wrote my own. seems to work well.

Looking at submitting this tomorrow to the store, I’ve now uploaded a release video

And there is a written manual http://bovinelabs.com/tiler/readme.pdf for anyone wanting to get a better understanding what Tiler is about.

Very nice. Looking forward to this. Post back when on asset store. Will purchase right away :smile:

I’ve submitted Tiler to the assetstore a few days ago so hopefully it’s up sometime early next week. In the meantime I’ve already started working on layers as promised. I’ll wait till Tiler appears in the assetstore before I publish a new version with layers, but they’ll be in pretty soon after launch.


You can tick the boxes to make various layers visible or hidden to camera in editor, and you can click the text to set the active layer you’re currently working on.

Accepted! You can get it now from the asset store: Tiler | Sprite Management | Unity Asset Store

As I said in my last post, I’ll be releasing an update for layers very soon.

Just purchased and am having problems in 3.5.7

Get these errors when I first open the tiler window :

TargetException: Non-static field requires a target
System.Reflection.MonoField.GetValue (System.Object obj)
Tiler.UnityInternal.CreateDropInfo (System.Object dropArea, DockPosition dockPosition, Int32 size) (at Assets/Tiler/Editor/Util/UnityInternal.cs:370)
Tiler.UnityInternal.Dock (UnityEditor.EditorWindow window, UnityEditor.EditorWindow dockToWindow, DockPosition dockPosition, Int32 size) (at Assets/Tiler/Editor/Util/UnityInternal.cs:290)
DrawWindow..ctor (.TilerWindow window) (at Assets/Tiler/Editor/Windows/Main/Draw/DrawWindow.cs:48)
System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
System.Reflection.MonoCMethod.Invoke (BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
System.Activator.CreateInstance (System.Type type, BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture, System.Object[] activationAttributes)
System.Activator.CreateInstance (System.Type type, System.Object[] args, System.Object[] activationAttributes)
System.Activator.CreateInstance (System.Type type, System.Object[] args)
TilerWindow.Update () (at Assets/Tiler/Editor/Windows/TilerWindow.cs:42)
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters)
UnityEditor.HostView.Invoke (System.String methodName, System.Object obj)
UnityEditor.HostView.Invoke (System.String methodName)
UnityEditor.HostView.SendUpdate ()
UnityEditor.EditorApplication.Internal_CallUpdateFunctions ()


NullReferenceException: Object reference not set to an instance of an object
UnityEditor.SplitView.PerformDrop (UnityEditor.EditorWindow w, UnityEditor.DropInfo di, Vector2 screenPos)
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters)
Tiler.UnityInternal.Dock (UnityEditor.EditorWindow window, UnityEditor.EditorWindow dockToWindow, DockPosition dockPosition, Int32 size) (at Assets/Tiler/Editor/Util/UnityInternal.cs:299)
DrawWindow..ctor (.TilerWindow window) (at Assets/Tiler/Editor/Windows/Main/Draw/DrawWindow.cs:51)
System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
System.Reflection.MonoCMethod.Invoke (BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
System.Activator.CreateInstance (System.Type type, BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture, System.Object[] activationAttributes)
System.Activator.CreateInstance (System.Type type, System.Object[] args, System.Object[] activationAttributes)
System.Activator.CreateInstance (System.Type type, System.Object[] args)
TilerWindow.Update () (at Assets/Tiler/Editor/Windows/TilerWindow.cs:42)
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters)
UnityEditor.HostView.Invoke (System.String methodName, System.Object obj)
UnityEditor.HostView.Invoke (System.String methodName)
UnityEditor.HostView.SendUpdate ()
UnityEditor.EditorApplication.Internal_CallUpdateFunctions ()


NullReferenceException: Object reference not set to an instance of an object
BrushWindow.Toolbar () (at Assets/Tiler/Editor/Windows/Main/Draw/BrushWindow.cs:62)
BrushWindow.OnGUI () (at Assets/Tiler/Editor/Windows/Main/Draw/BrushWindow.cs:35)
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)

Get this error when I click file in the tiler window :

ArgumentException: You can only call GUI functions from inside OnGUI.
UnityEngine.GUIUtility.CheckOnGUI ()
UnityEngine.GUILayoutUtility.DoGetRect (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options)
UnityEngine.GUILayoutUtility.GetRect (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options)
UnityEngine.GUILayout.DoBox (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options)
UnityEngine.GUILayout.Box (System.String text, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options)
Section.ToolBar () (at Assets/Tiler/Editor/Windows/Main/Section.cs:57)
DrawWindow.ToolBar () (at Assets/Tiler/Editor/Windows/Main/Draw/DrawWindow.cs:169)
Section.OnGUI () (at Assets/Tiler/Editor/Windows/Main/Section.cs:18)
DrawWindow.OnGUI () (at Assets/Tiler/Editor/Windows/Main/Draw/DrawWindow.cs:110)
TilerWindow.OnGUI () (at Assets/Tiler/Editor/Windows/TilerWindow.cs:61)
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)

After these errors then the windows freak out and I cant close any of them.

This was in an empty project (Besides tiler of course). I tried it out in Unity 4 and it works fine but 3.5 seems broken. :frowning: Is there an extra step or something to make it work in 3.5?

hmm I developed it in 3.5.7f6 so it should work fine. I know exactly what part is causing that error. I access some of the internal unity engine functions to do docking but I thought I had all cases handled… I’ll look into it for you. Do you have the exact version that you’re using so I can check?

I’ve quickly added a error check to see if for some reason the version someone is using is unsupported. This will just mean auto docking will not work until I add a specific check for the versio but it’ll prevent the error and will let you use it anyway.

sorry for any inconvenience, i’ll publish a fix as soon as possible.

Hi tertle,
can we get some textures examples , it will be fine
Thanks.

Sorry, I’m not exactly sure what you’re asking for. Could you elaborate.

Yep I’m using 3.5.7f6 Pro version. I also reinstalled Unity again to make sure and still got the error.

I’m sending you a private message with a new version.

Hi guys, it appears there is currently an issue with using Tiler on a mac. I am in the process of acquiring one to try solve the issue. Hopefully this doesn’t take more than a day or two, sorry for any inconvenience.