Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[RELEASED] Tile Composer - Code free procedural generation

Discussion in 'Assets and Asset Store' started by Nonakesh, Mar 19, 2020.

  1. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
    TileComposerTrailer0.jpg





    Overview
    Tile Composer makes it possible to create complex procedural generation without programming knowledge. Simply take or create a tileset, use one of the workflows to define how the tiles are connected to each other, and Tile Composer will handle the rest.

    Showcase
    Connectors Workflow


    Neighbors From Mesh Workflow



    Tile Hierarchies Workflow



    Features
    Various Workflows

    For a variety of use-cases. They can be combined as necessary.
    • Connectors: Fast and powerful in-editor tile editing. Connectors with direction make it possible to create any tile relation you can think of.
    • Neighbors From Mesh: Artist friendly, use 3D models to define how tiles are connected.
    • Tile Hierarchies: Tiles can inherit properties from parents and override properties.
    • Neighbor Matrix Editing: Use the editor tools or a script to handle each pair of tiles for a maximum of control.
    Multiple constraint solvers
    Don't let the tool stop your vision!
    • Wave Function Collapse: Extremely fast for simple models. Additional failure handling lets the algorithm handle larger and more complex models.
    • SMT solver: A industry-grade constraint solver that can theoretically handle any tile-set, no matter how complex, although it might take a while.
    Various Grid Types
    Designed to add more grid types easily.
    • Rectangles
    • Boxes
    • Triangles
    • Prism (3D triangle)
    • Hexagon (3D)
    Maximum Control
    • Change the probability of each tile (WFC), or restrict the minimum and maximum amount of each tile (SMT).
    • Block tiles and fix tiles, the solver will work with your restrictions.
    • Detailed tooltips on every control
    • Full source code included!

    If you have any questions or problems (once it's released) feel free to ask them here, or send me a PM!
     
    Last edited: Apr 3, 2020
    Gekigengar, one_one and Neviah like this.
  2. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
  3. RJP3

    RJP3

    Joined:
    Feb 12, 2017
    Posts:
    12
    This looks VERY Nice!!! Great job!!!

    Question - is this asset compatible for Mobile (Ios/Android) ?

    Thank you - Russell
     
  4. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
    Thank you!

    I have not tested it myself yet, but the asset should be compatible with all platforms!
     
  5. RJP3

    RJP3

    Joined:
    Feb 12, 2017
    Posts:
    12
    Thank you for the response !!
     
    Nonakesh likes this.
  6. Alienmadness

    Alienmadness

    Joined:
    Sep 6, 2012
    Posts:
    109
    is this generated in runtime or just in the editor?

    if at runtime, can you save the generated level? for example in game, if I load into a dungeon, then come back to the ground level, would the procedurally created ground level be regenerated differently or would i be able to save the random seed to ensure i get back to the same?
     
  7. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
    Models can be created in the editor and in runtime. And yes, you can use a seed!
     
    Alienmadness likes this.
  8. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
    I've just uploaded a new version for Tile Composer! It should be available on the asset store in the next few days.

    Here's the changelog:

    Tile Composer 1.1.0
    - Adds a new experimental workflow that uses an example model to find allowed tile neighbors.
    - Adds a feature to offset and scale editor circles.
    - Editor circles now scale with the distance from the camera.
    - Fixes a bug that froze the editor when using asynchronous generation.
     
  9. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
    I'm uploading another new version! :)

    Here's the changelog:

    Tile Composer 1.2.0
    - Adds a new workflow where you can use multiple Tile Composer passes to create increasingly complex models.
    - Fixes Tile editor crashing when trying to add a connector without any defined connectors.
    - Fixes Tile Composer editor crashing when trying to add a custom property constraint without any defined custom properties.
     
  10. conkerjo

    conkerjo

    Joined:
    Apr 14, 2014
    Posts:
    1
    Does this tool support mirroring as well as rotation? I have a tile which can be attached to both sides but only if it's mirrored when on the left.
    I could make a clone of the tile but would rather just have one if it can be flipped
     
  11. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
    You'll have to duplicate the tile manually, if it's not possible to do it with rotations.

    Mirroring is on my TODO list, but I'm not sure if I'll ever actually add it, as it would require automatic mesh manipulation, mesh memory management (Unity Meshes aren't handled by the garbage collector as far as I remember), etc.
     
  12. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
    I've just finished a new update!

    Changelog:

    Tile Composer 1.3.0
    • Adds a plugin system for custom constraints
    • Adds an experimental mirror plugin to demonstrate custom constraints
    • Fixes error messages when a model failed.
     
    thatscraigz likes this.
  13. LassieLemon

    LassieLemon

    Joined:
    Jan 25, 2020
    Posts:
    6
    Very interesting. What type is output after creation? Is it a mesh or a new prefab?
     
  14. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
    Sorry for the late answer, I've had some very busy weeks.

    At its core, Tile Composer outputs an array of indices, but the main component can automatically instantiate the tiles for you. You could create a prefab from it afterwards, or create your own script that combines all meshes immediately, with the output information from Tile Composer.
     
    LassieLemon likes this.
  15. Rissattas

    Rissattas

    Joined:
    Jun 7, 2016
    Posts:
    2
    you can't nest fold out headers end it with endheaderfold outgroup




    ошибки нет на 2019.4.34f1
     
    Last edited: Jan 1, 2022
  16. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
    Interesting, I'll look into fixing the problem. It shouldn't cause any functional problems, but the layout may look broken until it's fixed.
     
  17. Yany

    Yany

    Joined:
    May 24, 2013
    Posts:
    96
    Hey @Nonakesh, I'm considering buying this great tool to generate terrains for a special car racing game. Do you still actively work on it and/or give support? I'm still checking other solutions, but the few materials you provided sound good.
     
  18. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
    Hey, I don't actively work on it at the moment, but I definitely still support it. If you find any bugs or have feature requests, I'll try my best to fix / add them. Of course this depends on the size of the feature and my workload at the time, so large features may be difficult, but I try to fix bugs within a few days.
     
    Yany likes this.
  19. GesserX

    GesserX

    Joined:
    Dec 21, 2016
    Posts:
    8
    Hello @Nonakesh !
    I'm very interested in your tool, because it looks great.
    But I have a fundamental question:
    Does this tool allow out of the box to work like a supporter for custom generation as a rule tile core for 3d hexagonal tiles?
    I've already done generation code for my map, and I need some rule tiles algorithms.
     
  20. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
    Hey, you can use hexagonal tiles in Tile Composer. You can also block and set tiles in the grid via script, so if you have a second algorithm that specifies biomes, or something like that, that would work with Tile Composer. You'll have to do some coding, of course, to communicate between your generation code and the Tile Composer component.
     
    GesserX likes this.
  21. GesserX

    GesserX

    Joined:
    Dec 21, 2016
    Posts:
    8
    Thank you for the answer!
     
    Nonakesh likes this.
  22. artician

    artician

    Joined:
    Nov 27, 2009
    Posts:
    345
    I had a stack overflow issue when using your toolkit.

    SOLVED -
    The issue was that, somehow, one of the nested gameobjects in my tiles already had the Tile component applied to it. I can see why this was an issue, and the error stopped once I removed the nested component.
     
    Last edited: Dec 22, 2023
  23. Nonakesh

    Nonakesh

    Joined:
    Aug 27, 2011
    Posts:
    576
    Hi, I'm glad you could resolve the issue! If you have any other problems you can contact me in this thread, via email (linked on the publisher page), or via Discord (there's a link in the first post of this thread). I'm probably most responsive on Discord.