Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice
  3. Join us on November 16th, 2023, between 1 pm and 9 pm CET for Ask the Experts Online on Discord and on Unity Discussions.
    Dismiss Notice

Ultimate Isometric toolkit v 2.3

Discussion in 'Assets and Asset Store' started by codebeans, Apr 3, 2015.

  1. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    Ultimate Isometric Toolkit discussion






    DEMOS
    DOCS





    Features:


    Isometric Depth Sorting
    Isometirc Collisions
    Isometric Physics
    Mouse & Touch inputs

    GridMap datastructures
    Supportive editor extensions to speed up level design, such as:

    custom handles for isometric directions
    Isometric snapping
    Precise positioning
    Approx. 480 diffrent sprites for 3 diffrent settings
    Medieval Kingdom
    City Buildings/Cars/Roads/...
    Exoplanet/Sci-Fi
    Sample Character Controllers for:
    TurnBased Games
    Continuous Movement
    Discrete Movement
    Movement restricted by Collision Detection
    Tower defense games
    5 Sample Scenes
    Easing-Functions

    move objects around in more natural ways
    Procedual Level Generation
    save time by generating levels


    let me hear what you think about it

     
    Last edited: Sep 18, 2015
  2. yelekin

    yelekin

    Joined:
    Mar 9, 2015
    Posts:
    3
    I sent an email to you about the product and a question, i hope to get an answer soon. By the way, its been a great product, thanks
     
  3. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    i just replied. I hope this helped with your problem.
     
  4. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    First Video online. Hope you like it
     
  5. cel

    cel

    Joined:
    Feb 15, 2011
    Posts:
    46
    really cool, any chance in having playmaker actions for your kit, something that could interact with the movement of the sprites and so on??
     
  6. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    Ultimate Isometric Toolkit is on madness sale. And it is doing great
     
  7. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    I did not check out the Playmaker Asset yet.
    But sprite movements are supported currently.
    Easing functions, moveToPosition functions, movement per frame, etc.
     
  8. cel

    cel

    Joined:
    Feb 15, 2011
    Posts:
    46
    I can access all of those features using playmaker's get/set property, but there are some issues with playmaker when exporting to ios when we use a lot of get set property, having native actions for it would sort the problem, I had a look at your code and though I dont fully understand it ( I could only figure out the maths for positioning) I think that a proficient coder would easily port it to playmaker (maybe the guys at hutonggames.com could help you?).

    Also, how would I do to have a character follow the contour of a tile, I mean, if we have a ramp and we want the character to smoothly go over it, like you have in your towerdefense scene , where they go over a slightly curved bridge,but without using nodes?

    thanks for your time
     
  9. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    A controller that moves along a set of nodes seems quite handy to me. To make your objects move up a ramp, just add another node that is positioned upwards slightly.
     
  10. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    without nodes you would need something like collision detection. But not only would this be hard to write, it would also take a huge overhead.
     
  11. stevelie

    stevelie

    Joined:
    Feb 6, 2015
    Posts:
    15
    Hi There,
    so I got some troubles setting up the iso Object size of a certain sprites. Especially when the sprites have different tilesize. It always messes up with the sorting. Setting up the pivot point of the sprite is also a struggle too for me. Can you give me some best practices on how to do all these on using the toolkit? I also attached a screenshot, so you can have a better perspective on what i meant.

    cheers
     

    Attached Files:

  12. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    Hi Steve,
    your problem is a known issue. Setting up the pivot point is basically up to you, but I get best results putting it right to the center or at least very close to it. I will later explain why.

    About the overlapping parts of your sprites. I put a lot of work and effort into finding a solution for this, but I guess there isn't any better solution than what I have found.
    The problem is this: If sprites differ a lot in size these overlapping areas will occur, no matter what.

    This is because each sprite gets not only a position (x,y) but also a depth in 3d space. This depth applies for the whole sprite ( or for all pixels), where you'd probably want want to calculate this for each pixel individually with individual positions to get perfect results and no overlapping areas (this does not work) .

    For your example.The whole temple has a single calculated position including the depth (transform.position) which has best accuracy at its pivot. The same goes for the groundtiles and every other sprite.
    The stairway of your temple has the same position as the rest of it, while the groundtile's position when calculated is in front of the temple (switch to 3d perspective to see this).
    In essence the stairway is to far away from its pivot relative to the most outer pixels of the groundtiles.

    Now there are 2 solutions for this.
    1. You split up your temple into smaller individual chunks so that there are different positions for (stairway, roof, basement, etc.) to calculate a depth from. This technique is well known amongst other isometric game engines. I would highly suggest to use this approach.

    2. You use the layers of the sprite renderer to generate disjunct areas such as ( underground, 1st floor, 2nd floor, etc.) Just choose ascending numbers for your layers in your scene.
     
  13. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    I could make a video about best practices with this toolkit. Please let me know what was most confusing or interrupted your worklow.
     
  14. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    I uploaded version 1.3 yesterday for both the pro and the new lite version.

    Hopefully it will be online in a week.
     
  15. H_DANILO

    H_DANILO

    Joined:
    Feb 7, 2013
    Posts:
    1
    How does it handle Colliders? Lets say I want to add an OnMouseDown on an IsometricTile, it's simple as adding my script which contains the OnMouseDown function to the IsometricTile? Or I have to do something else? Looking at the documentation I saw something about Ghost field in the IsoCollider and from what I have seem, the object that has IsoCollider itself doesnt seem to have any kind of Collider within, which makes me concerned if the object will handle OnMouseDown properly.

    Also: How does the iso object monobehaviour behaves if the gameObject is child of a non-iso object, and the father moves...

    I'm considering this asset for a 2d isometric farm-like game
     
    Last edited: Aug 12, 2015
  16. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    Hi. With the new update 1.3 I improved the whole isometric collision and physics part.



    Yes. IsoColliders are now just Mesh colliders that are properly generated by the IsoCollider script.
    All you have to do is mark them as convex in the editor.

    I skipped the whole idea of ghost objects (3d cubes) that would link themself to an IsoObject and mirror their movements.
    IsoRigidbodys are obsolete now too. You can use the standard Rigidbody with all its functionalities (explosion forces, drag, etc.). As long as your Scripts would work on a regular 3d object, they should work on an IsoObject too.
    So I do not see any problem for clicking/selecting/dragging and using the standard callbacks OnMouseOver/Enter/Exit

    An IsoObject's functionality can be boiled down to this: It is wrapper for the standard Transform component and offers custom handles and editor tools for proper positioning. So that you can not only read or apply a position via transform.Position = value, but also isoObject.Position = value. Which will project your input vector value to an isometric perspective and then apply it to the transform.Position. This projection is isomorphic. It works both ways.
    If you now move your object (with or without an IsoObject script attached) its child object would move with it, just like you are used to in Unity and the IsoObject.Position and Transform.Position would update themself.
    Please note that a childs object position in Unity is relative to its parent's position, the same applies to an IsObject since it just wraps the transform.Position value.

    Given nice looking Sprites for your isometric farm game I would say you can safe a lot of time and money using the toolkit and end up with good results.
    I put now more than 100 hours of recherche and coding in it. Updating it constantly to meet customer demands and giving support to the best of my knowledge.
    Not to mention the performance increase since you skip the whole 3d rendering and lighting part.

    I hope this answers all your questions :)
     
  17. destapp

    destapp

    Joined:
    Oct 22, 2012
    Posts:
    18
    hi.
    is this support isometric hexagonal grid?
    thx
     
  18. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    I was told it works by another customer under one of my videos


    So, I didnt try it and I did not use it for a hexagonal grid yet.

    I would say that my Toolkit isn't the best option available for a hexagonal game, but you should get it working.

    An alternative would be this asset I guess: https://www.assetstore.unity3d.com/en/#!/content/21650

    So you have a another option to pick from ;)
     
    destapp likes this.
  19. destapp

    destapp

    Joined:
    Oct 22, 2012
    Posts:
    18
    hi .
    i want to ask about isometric toolkit lite version
    functionally, is there any difference between pro version and lite version besides example scene?
    also is there possible if i want to make movement like "touch/click - move" using raycast physics?

    thank you :)
     
  20. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    @desta
    the lite version contains the core functionality only.

    Addiotional content/features in the pro version are:
    • draggable objects for touch/click user inputs
    • hundreds of more sprites for various themes
    • gridMap dratastructures for your tilebased games
    • character controllers for almost any use case
    • additional sample scenes
    • runtime level generation
    • Easing functions to move players around
     
  21. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    GIVEAWAYS

    Want to win a free voucher code for the Lite version of the Ultimate Isometric Toolkit ?

    Post your brief idea of your next isometric game in the forum thread [Here]

    or follow me on twitter @code_beans and [Tweet this]

    till Sep 18th 2015 to get a chance.

    There will be 8 prices in total worth 200$ distributed under all participants.

     
    Last edited: Sep 14, 2015
  22. BusyRobot

    BusyRobot

    Joined:
    Feb 22, 2013
    Posts:
    148
    Would it be possible with your asset to create a situation where the game knows which isometric tiles attach to others? similar to what happens in the PC game Big Pharma?
     
  23. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    Hi
    the attachment is just datastructure. Isometric projections, graphics, transitions, comfort when creating isometric games in unity in general and high performant code is what the toolkit does for you.

    The toolkit offers a GenericGridmap script which allows you to store and create simple datastructures.
    You could store data in it like
    • which are a tile's adjacent tiles
    • what type of objects are these adjacent tiles (assembly line, machine, portal, whatever...)
    But, no illusions here. Big Pharma does look like quite some money and know-how went into it. As long as you can break down the problems that come with the development of such a game, I can't see any reason why it shouldn't work with the Ultimate Isometric Toolkit.
     
    BusyRobot likes this.
  24. BusyRobot

    BusyRobot

    Joined:
    Feb 22, 2013
    Posts:
    148
    Are you able to place isometric tiles in real time like Big Pharma does it?
     
  25. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    Of course. That is what the toolkit is supposed to do. The pro version has controllers for the objects as shown in this video.
    Take a look into the TurnBasedIsoObjectController

     
    Last edited: Sep 19, 2015
    BusyRobot likes this.
  26. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    An article on theappguruz about the Ultimate Isometric Toolkit
     
  27. astinus_lorekeeper

    astinus_lorekeeper

    Joined:
    Dec 21, 2015
    Posts:
    1
    Hi,
    Your toolkit looks terrific. Our game has a stealth component, which will likely use raycasting for line of sight. Will raycasting/linecasting work fine with levels created with your toolkit? Thanks.
     
  28. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    I am using raycasting to detect proper inputs at the company I am working at right now.
    So in general I don't see a problem with it
     
  29. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    we are on sale
     
  30. soulburner

    soulburner

    Joined:
    Mar 25, 2012
    Posts:
    167
  31. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    @soulburner I tested the other asset too. Isometric 2.5D toolset uses a topological sorting on a per frame basis given that something in your scene changed. Only objects visible will be resorted though.

    Isometric 2.5D:

    Pros:
    • It actually sorts objects in isometric space and is therefore "correct"
    • It allows to sort objects of various sizes because unlike my asset it uses both the position and size to figure out a final renderering order using a topological sorting
    • Playmaker support (I'm working on this)
    • Support of mixing 2D sprites and 3d objects

    Cons:
    • Topo Sort is a significant overhead and I've seen framerates drop below 30fps on multiple devices (lowest device tested was an samsung galaxy note 2) at around 1000+ visible entities
    • The downside of using a topo sort is that you can run into cycles which will look glichty because the render order isn't deterministic anymore (See "A conundrum" : here). If you have a complex scene it is pretty easy to get these cycles. It's a common problem in isometric sorting
    • Physics support via Ghost/Fake Objects. e.g. for every IsoObject in the scene that has a IsoCollider attached there is a hidden GameObject that would mirror the behaviour (pretty much the approach I took up until patch 1.2.1)

    Ultimate Isometric Toolkit
    Pros:
    • It allows to add as many isometric objects as Unity can handle since there is no overhead in sorting. It uses a matrix vector transformation only which is O(1)
    • Built in controllers for various game types
    • No Cycles, because there is no actual sorting required
    • Easing functionality
    • LevelGenerator to generate worlds using a seed value and other parameters
    • Online Documentation
    • Significantly more performant the more objects you have visible in your scene
    Cons:
    • Currently requires manual labor to slice sprites (will be an automated process with the next patch)
    • just basic support for mixing both 2d sprites and 3d meshes. and I will probably not continue on that
    • worse learning curve because it offers a lot (i"d say to many) features that aren't as intuitive as they could be.

    I can't make any statements about his support though, since I never contacted him on any issues.

    Bottom line:
    I use a form of a tiled isometric world which requires no extra sorting and has therefore a better performance especially when it comes to large amounts of (visible) objects or low end devices.

    Isometric 2.5D Toolset uses a topological sorting approach, which comes in handy when you have objects of various sizes. Downside to this is the very likely case of running into cycles and the overhead of exploring the dependency graph and the topo sort itself. On mobile I have seen stable 60fps at around 200 visible objects max on low-end devices.
     
  32. BlackMat

    BlackMat

    Joined:
    Jan 8, 2015
    Posts:
    266
  33. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
  34. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    the new version 2.1 is now avaiable.
    It comes with
    • A* pathfinding support
    • New sorting strategies
    • better physics support
    • new Documentation
    • Raycasting support

      check out the new update video
     
  35. Zante

    Zante

    Joined:
    Mar 29, 2008
    Posts:
    429
    This is a great tool and it's now forming the base of a new project. I have a question, is there a best practice for storing level data?

    This is the behaviour we're exploring currently:
    1. Move to the edge of the scene
    2. Land on a level transition tile trigger
    3. Load next scene or, alternatively, activate GameObject which contains tiles for next scene

    • What are the memory implications of storing an entire world in a scene?
    • Is it better to have one scene per tileset to reduce the number of sprites in memory?
     
  36. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    There are too many variables here to give you a definite answer like:
    • What is the target platform and how much ram do you have max?(on mobile the OS will terminate your app at some point)
    • How many sprites are you using and how can you pack them best? (sprites used in the same level/scene should be packed)
    • How big is a typical scene, and how much of it is visible at the same time => has to be rendered at the same time?
    Regarding storing scenes there are a lot of options. Here is what I would do :
    If scenes are somewhat static I would just store them as individual unity scenes and use sprite packing.
    If your scenes are more like dynamic or user generated content I would first try to store them as JSONs and load them at runtime and also pack at runtime and see where that gets me.

    Would really like to hear about your project and if possible add some screenshots to the key images of the toolkit in the asset store :)
     
  37. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    version 2.2 went just online





    Changelog:
    • Support for any orthogonal projection (isometric,dimetric & trimetric)
    • A* Agent bug fix - BoxCast support in IsoPhysics
    • Layermask support in IsoRaycast
    • better documentation on pathfinding heuristic
    • added 3 more sprite sets - add components in Editor via ComponentMenu (AddCompoent/UIT/...)
    • added 'standingOnGround'-check for AdvancedIsoObjectController
    • LevelGenerator won't instantiate objects under root
    • added support for OnMouse callbacks - bugfix for IsoSnapping
     
  38. cagezero

    cagezero

    Joined:
    May 8, 2012
    Posts:
    20
    Hi youtilities. I am trying out your free version now and I am wondering if there is an algorithmic approach to setting PixelPerUnit value for custom sprites. I am asking based on this note in your documentation:
    Thanks.
     
  39. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    Hey @cagezero
    Yes there is an algorithmic approach at least when dealing with isometric and dimetric sprites.

    TL; DR
    desired PPU = widthOfA1x1InPixels/sqrt(2)


    Here is how you can derive the formula

    Here we have an isometric object that we consider to be one tile/1x1 in our game.
    It has a pixelWidth of 135. The width of our 1x1 cube/plane/... is sqrt(2).

    We now have to get the pixels per unit.
    So 135 pixels should represent sqrt(2) unity units

    135/sqrt(2) = 95.45

    Sometimes you want a little overdraw to make things look less tiled/separated so you scale things up a little by subtracting from that value.

    I hope that helps

    cheers!
     
    Krumelur likes this.
  40. Joe-Abd-Halim

    Joe-Abd-Halim

    Joined:
    Aug 22, 2016
    Posts:
    5
    Hi,
    I'm a new buyer of your toolkit. I just read your documentation (QuckGuide and UserGuide), but I think it could be updated to make it more friendly to new users. Is it possible to have some basic tutorials on the best practice in using your toolkit? A bullet list or numbered steps would be fine, as long as the news users can setup the basic scenes like the ones you supplied with the plugin.

    Thank you.

    Cheers,
     
    Last edited: Jan 22, 2017
  41. cagezero

    cagezero

    Joined:
    May 8, 2012
    Posts:
    20
    Thanks!
     
  42. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79

    There is a new documentation online http://code-beans.com/UltimateIsometricToolkit/documentation/

    I hope that helps.
     
  43. w4rgo

    w4rgo

    Joined:
    Jun 23, 2014
    Posts:
    1
    Hi,

    I am having troubles to use IsoMeshCollider, in the inspector it only shows the covex option therefore I cannot add a mesh to it.

    Do you know what I am doing wrong ?

    Im trying to use the mesh collider to create a ramp/ stairs, is there any easier way to deal with stairs with your framework ? (using phisics)
     
    Last edited: Feb 22, 2017
  44. NAiLz

    NAiLz

    Joined:
    Apr 17, 2013
    Posts:
    88
    Hi,

    I'm finding it hard to find your tutorials. I found one on implementing dragable objects by googling it but I don't see it in your channel's list of videos or playlists. Is there a complete list of the video tutorials somewhere I'm missing? Also is there a tutorial anywhere on how to implement AI using Astar Agent? I don't see it in the videos or documentation. Thanks!
     
  45. codebeans

    codebeans

    Joined:
    Apr 7, 2014
    Posts:
    79
    Hey. I moved most of the documentation to http://code-beans.com/UltimateIsometricToolkit/documentation/
    I just added section on how to add pathfinding to your project under the manual section. If you have any questions feel free ask me here or send me an email.
     
  46. NAiLz

    NAiLz

    Joined:
    Apr 17, 2013
    Posts:
    88
    Thanks Youtilities!
     
  47. Xalvez

    Xalvez

    Joined:
    Nov 19, 2012
    Posts:
    1
    Why I can only hit my raycast in Play Mode and not Edit Mode?

    I am using IsoBoxCollider.

    Code (CSharp):
    1.  
    2. private void OnSceneGUIDelegate(SceneView sceneview)
    3.         {
    4.             Event e = Event.current;
    5.             if (e.isMouse)
    6.             {
    7.                 Ray ray = Camera.current.ScreenPointToRay(new Vector3(e.mousePosition.x, -e.mousePosition.y + Camera.current.pixelHeight));
    8.  
    9.                 var isoRayOrigin = Isometric.UnityToIsoSpace(ray.origin);
    10.                 var isoRayDirection = Isometric.UnityToIsoSpace(ray.direction);
    11.                 Ray isoRay = new Ray(isoRayOrigin, isoRayDirection);
    12.  
    13.                 if (e.type == EventType.MouseDown && e.button == 0)
    14.                 {
    15.                     IsoRaycastHit isoRaycastHit;
    16.  
    17.                     Debug.Log("Same value in both Edit and Play Mode: " + isoRay);
    18.  
    19.                     if (IsoPhysics.Raycast(isoRay, out isoRaycastHit))
    20.                     {
    21.                         Debug.Log("Only hit in Play Mode: " + isoRaycastHit.Point);
    22.                     }
    23.                 }
    24.             }
    25.         }
     
  48. Shilo

    Shilo

    Joined:
    Jun 8, 2014
    Posts:
    20
    Hello, I'm interested in buying your asset. Does it come with full Tiled map editor support? If not, does it provide a quick and simple map editor without the need to manually place each object?
     
  49. Deleted User

    Deleted User

    Guest

    Is this asset still supported? I purchased it but am having issues getting my player to collide with other objects when moving the transform directly.
     
  50. joubqa

    joubqa

    Joined:
    Jul 8, 2014
    Posts:
    13
    Is there a mouse click to move controller?