2D Isometric Tile Editor

Hi, I have been working on an Isometric Tile Editor for a while now and I thought it might be interesting for other people who are creating Isometric Tilebased games (Starcraft, Warcraft, Transport Tycoon Deluxe, etc etc) to follow this.

Part 1 - Massive amount of objects
I know that Unity isn’t very good at handling massive amounts of objects. I’m not sure how many GameObjects it can handle but at best its about 64k? That would also result in a massive load-time and lagspikes in and outside the editor when working with them. The size of the level would also be tremendous.

I managed to create a custom rendering system of induvidual objects that can handle a huge amount of objects.

In this example I have a grid of 1024 * 1024 objects. That’s a total of 1 048 576 objects. Each object is an individual and can be treated so. All objects have a bounding box and can be selected and deleted.

As you can see I have 328 FPS. 1855 objects is visible, meaning that 1 046 721 gets culled. I can move the camera around, zoom in and out and it works just fine so the culling algorithm is working each update.

The loading time is about 2 seconds and the size of the level is about 29 megabytes . This might seem much but remember that it’s over a million individual objects and it’s still room for optimization.

Other things that I am working on:

  • A terrain brush to paint/delete a big amount of objects at the time, including AABB collission testing.
  • Automatic depthsorting in several layers.
  • Pathfinding with up to 4 connections per tile.
  • Easy assetmanagement.
  • Animated objects.
  • An example game, I will recreate one of my favourite games which is Transport Tycoon Deluxe.

Would anyone else be interesting in the use of this?
What features would be desirable?

3 Likes

Part 2 - Painting terrain

Start with selecting an brush. You can then select the size of the brush. Everything from 1x1 to 20x20 (400 tiles). Still at 400 tiles everything will run very smoothly. While painting, a collission test is made towards all previously placed tiles so that none will be placed on top of another. The math is handling all the snapping and makes sure that the isometric placement is very easy. Even when 1 million tiles is placed on the map, everything will run smoothly.

3 Likes

Part 3 - Depthsorting

Here is a demostration of depthsorting in action. All objects is sorted using an algorithm following these steps:

  1. Find the tile most to the left in world-space on the object.
  2. Recalulcate that tiles World space position to Isometric space position.
  3. Calculate the depth by adding the x and y value together (depth = isometric_position.x + isometric_position.y)

In this video I demostrate how well this works.

3 Likes

Part 4 - Pathfinding

This is how pathfinding will work. When an object is to be added to the set of available objects, each tile will be allowed to have 4 path-connectons. One in each direction. In this movie I am demostration an example when this is useful. In this case we are adding road-tileds to the scene. Some roads are straight, but some are crossroads and in the future we might have corners as well. In the “add tileobject tool” I am enabling and disabling the nodes so that the system will know how to connect them to other objects.

3 Likes

I am working on something similar and i must admit your work seems absolutely great. Would love to see a release :slight_smile:

Hello Extra!

That’s great to hear. Are you working on a 2D Isometric editor or are you planning to create an 2D isometric game?
I am hoping to have a beta out by a week or two.

Cheers!

Hi Tedlin,

I am working on a Isometric Tile Editor, but in a far less advanced state as I am quite a beginner in game development.
When it will be ready, my goal is to make an adventure game, but I am focusing on learning technical things right now.

I am very curious to see how you managed to optimize performances. My guess is that you avoid having one gameobject per tile. Maybe using planes ? But I can’t find a way to manage z-sorting when working on a single plane with vertices.

Anyway, keep up the good work, and if you need someone to test it, I am definitely your man :wink:

1 Like

No way - I just decided with a buddy of mine that we were gonna work on making an isometric turn-based game, this looks marvelous - you mentioned that you’d like to have a public version of it released soon. Any goals?

1 Like

That sounds great! Hopefully I can have e beta ready after this weekend :slight_smile:

Very nice. One of the types of games I want to create at some point is an isometric city-builder, with the graphics style of TTD. And this is exactly what I could use for that.

1 Like

i would love to see something like this for unity. Unity should have a default built in tool like this T_T

1 Like

I have been working hard but I still think it’s too early for a beta. There is still some matters to take care of but I’ll keep updating to let you know of the progress. Here is a demo of how I created a Transport Tycoon -like game using the tile editor. More to come!

3 Likes

may i use it :smile: . Give it already xD

Have you thought about supporting a transition system for using transition tiles to blend two different textures? Like in Warcraft 3 or what this asset does for Unity terrains.

I guess you could paint them manually with the current system you have, but that would be pretty time consuming.

Everything is possible in the future but it was nothing that I had previously planned for.

I really want this!

That is great. I am accually wrapping up a beta as we speak. It will be far from perfect and missing out on alot of documentation but atleast you guys will have a chance to try it out and contribute to the development of it :slight_smile:

1 Like

Wow! That’s great:)
I can’t wait to use this Editor!

With your pathfinding setup, is it possible to have different path ‘layers’ defined per tile?
ie. the road demo is great for vehicles but you might want a separate navigation graph for dismounted movement.

This was planned in the original roadmap and I started to implement it but then I removed it as I wanted to keep things simple at the beginning. I can easily implement this though. You want it?