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

[Released] Wildtile - 3D autotiler that supports iterative tileset building

Discussion in 'Assets and Asset Store' started by fuser, Aug 4, 2022.

  1. fuser

    fuser

    Joined:
    Nov 23, 2013
    Posts:
    10


    On the Asset Store now!

    Wildtile allows you to create levels using your own 3D tileset in a Townscaper style editor. It will indicate all missing tiles, allowing you to author only the tiles to support that level and spend your time efficiently.

    No mark-up required:
    The Wildtile importer takes raw model files in Unity and creates a tileset. The connections between tiles and tile layouts are inferred automatically. Artists only need to split the models into tiles, and Wildtile will take care of the rest.

    Configurable importer, but always has a one-click reimport:
    The default settings for the importer will get you started, but as you get more experience you can change how different materials are used when calculating connections and tile layouts. No matter the settings you change, artists only need to click one button to reimport the tileset.

    Powered by a custom wave function collapse algorithm:
    Based on the many talks by Townscaper developer Oskar Stålberg, Wildtile implements a similar algorithm with a few twists. The core innovation makes the algorithm resilient against missing tiles, which Wildtile indicates as red wildcard tiles. Author tiles to fit in place of the wildcards and Wildtile will place them in the current level. Wildtile will automatically use them in the future.


    Comprehensive tools for debugging tiles:
    Any tiles not working how you expected them to? Wildtile explains in great detail why tiles cannot be connected to one another.


    All feedback welcome!

    Documentation
     
    CodeSmile likes this.
  2. CodeSmile

    CodeSmile

    Joined:
    Apr 10, 2014
    Posts:
    4,191
    I keep coming back to this asset because I think it enables designing levels/worlds that seem more organic than purely tile-based levels but still more consistent than, say, a (voxel) terrain mesh.

    I have two questions:
    • Is there a fixed number of meshes one has to create to allow for every possible combination, or is this dynamically adjusted based on the layout of the map?
    • Am I right to assume that algorithmically generating tile meshes should be possible, because the connection shapes (seams) are well defined by the wildtile algorithm?
    I am pondering integrating creating tiles in the wildtile format with the Mesh Graph tool I'm working on. Provided that there's a well-defined ruleset / algorithm that defines how tiles connect with each other - then I could let users procedurally generate the in-betweens of the tile mesh.

    Naturally I'll be doing regular (2d) tile generation first but I think wildtile would be a nice milestone #2. :)
     
  3. fuser

    fuser

    Joined:
    Nov 23, 2013
    Posts:
    10
    Hi CodeSmile, thanks for checking out Wildtile. Yep, that's what I wanted too for my own game - I hope when you come to milestone #2, you'll want to use Wildtile.

    It is dynamically adjusted based on the layout of the map.

    One of WFC's core strengths is that it can handle very few tiles, so Wildtile doesn't require tiles you don't need. If you made a flat floor of voxels, you could use precisely one flat floor model, and it would all work. Oskar Stålberg talks a bit about this strength here (6:33-7:34)

    From what I understand you want, you could use one of two options: The simple one is to create models in Unity without interacting with Wildtile, then go through Wildtile's standard import process. Once a model's in Unity, Wildtile should be able to import it, no matter where it came from. I've not tried importing proc-gen models yet; while it should work, if you do have any problems, let me know and I'll help fix it. Wildtile's importer automatically finds all edges along each tile-cube's face (the seams), so you wouldn't have to interact with Wildtile's code if you went down this route.

    If you want more control, e.g. to augment an existing tileset with in-betweens as you suggested, you might be better served manipulating the imported
    Tileset
    asset. The seams for each face are hashed during import, so the
    Tileset
    asset only stores hashes, not the raw edge data. If you added your models to the Tileset and reused those hashes then Wildtile would accept them without question and attempt to use them in collapse.

    The Tileset asset layout is backend code, and a near-future optimisation will require significant changes. From what I know of your requirements, I recommend the first option generating the in-between models outside of Wildtile and using the importer.

    Wildtile doesn't store edges from which you could construct in-betweens, but I have decoupled the seam analysis from hashing/the rest of the algorithm so that the debugger could use exactly the same code as the importer. You should be able to find the seam analysis calls yourself, or give me a shout if it's not clear. This would give you your adjacent seams, from which you could build the in-betweens.

    Mesh Graph looks fantastic. I use Blender and tried to use geo nodes to create my sample tileset, but a lot of the geo nodes operators treated everything as a vertex, not as a loop. I can definitely see the appeal in a more BMesh-y node graph! I'm very interested in seeing what you'll do with it, with or without Wildtile.
     
    CodeSmile likes this.
  4. CodeSmile

    CodeSmile

    Joined:
    Apr 10, 2014
    Posts:
    4,191
    Thanks for the input! I'll surely come back to it. :)
     
    fuser likes this.