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. Join us on Dec 8, 2022, between 7 am & 7 pm EST, in the DOTS Dev Blitz Day 2022 - Q&A forum, Discord, and Unity3D Subreddit to learn more about DOTS directly from the Unity Developers.
    Dismiss Notice
  3. Have a look at our Games Focus blog post series which will show what Unity is doing for all game developers – now, next year, and in the future.
    Dismiss Notice

[Released] Tessera : Generate 3d tile based levels with Wave Function Collapse

Discussion in 'Assets and Asset Store' started by BorisTheBrave, Nov 28, 2019.

  1. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,415
    No worries, I was simply referring to using the mouseover to display a color near the mouse cursor (or right where you draw the face), or even just color the tooltip with said color. You could make the faces into "slots" and display the color there in the center or something too. If you're just drawing a 3d cube gizmo, I don't remember if you can set the material for it somewhere or not, but that makes me wonder how this face thing works for non-cube prefabs.

    Also, maybe you could just draw a slightly "larger" (white or dark-gray) 3d cube gizmo behind the existing (selected) gizmo to better display the color of those faces on the prefabs? -- It would save a bit of work messing with overlays and whatnot, while also showing the color clearly (and it would be nice to give the user the option to toggle this background cube/gizmo on or off).

    I get that not everyone is a UX wizard, and Unity is particularly unwieldy in that area. No worries. I am still hoping you can toggle between the most recently used colors via the same shortcut key (i.e. I hit "X" two times to toggle back to my third most recently-used color after using the first one -- i.e. colors A, B, C >>> "X" x1 = color B, x2 = color C, x3 = color A, x4 = color B, etc. ... )


    As for the other shortcuts, simply holding Shift and right-clicking should be the color-picker (and should display the preview color and name before picking on the main palette window possibly). X, of course, should swap between the three most recently-used colors. Clicking in the Palette window on the colors there (with Shift held down) should likely set the most recently-clicked colors as the recently-used color for x1, x2, or x3 keypresses of the "X" shortcut (or indexes 1, 2, and 3 by default, if nothing but the default color index is selected yet). Showing the selected color/face name should really be visible in the palette (as well as the three face types that are selected for toggle between).

    Hopefully the above paragraph helps with this.

    I know it will be immensely helpful to have at least three "colors" available at all times. At the very least, as a more simple-to-implement alternative, let users use Shift + 1,2,3 to "pick" these color indexes from the palette via shortcut (and from nearby faces using RMB). RMB will set the color of whatever index slot is currently active (whether it's 1,2, or 3). However, X should cycle through and activate one of the three colors after another regardless of how they get assigned in the interface. Cycling through colors is very necessary for speed while assigning different prefabs similar colors/face types, limiting the need to go click on windows and color swatches constantly during this critical process.

    Right-clicking a face (with Shift) could bring up and close the palette window (in case it takes up too much screen real-estate), and it would be useful if that window popped-up right where the mouse cursor was (but this isn't necessary as long as it is at least in the center of the screen).


    Perhaps adding a new Layer via Shift + L (which would be consistent with Photoshop) or Shift + V to add a new volume rule area.

    Outside of what's been said above, I think that should cover the workflow in terms of necessity of speed and ease-of-use ergonomics. I've not played with the more advanced features, but slopes and sky aspects might need some love (to make them a little more straightforward in terms of discovery). Regardless, I've got no complaints otherwise. :)
     
  2. LineKernel

    LineKernel

    Joined:
    Dec 11, 2013
    Posts:
    46
    i m slightly colorblind , the main problem i have in life is thoses images with the circles of many colors , or red text on white background , your tool is fine for my colorblindness
     
    awesomedata likes this.
  3. kca

    kca

    Joined:
    Nov 27, 2013
    Posts:
    6
    Hi!

    I need help with some strange issues, possible bugs.
    Some related to generation in general and a few to the "Generating on Mesh Surfaces" feature and another to the "Overlapping Model" feature.

    Unity version 2021.2.15f1.
    Tessera Pro version 5.1.1.
    The 3D tiles made by ProBuilder 5.0.3.

    A.) when we generate the layout in edit mode
    1.) objects from the scene view randomly (?) disappearing (looks like the ones used as reference tiles for the layout generation).
    2.) the buttons of Clear/Generation from the "Tessera Generator" script of the Inspector tab also disappearing.
    To make them reappear I used to press the undo/redo keys.


    B.) the generated object/objects of the layout on the surface mesh become "independent" from the surface and also scaled up non-uniformly:
    1.) in game mode when the surface was already generated in editor mode (except if it is generated by "Generate On Start" script, then it is fine).
    2.) in editor mode when we open up a scene that was saved with a generated layout.
    3.) in editor mode when the generator object selected in the Hierarchy while the generator button pressed in the inspector.

    Screenshot 2022-04-19 192316_LI.jpg

    4.) in editor mode when we select an element object of the generated layout of tiles in the scene view.

    Screenshot 2022-04-19 193400.png

    Screenshot 2022-04-19 193538_LI.jpg

    C.) when Overlapping model is selected we cannot add samples to the list of samples, cos in its place an error message appears:
    "You can't nest Foldout Headers, end it with EndHeaderFoldoutGroup."

    Screenshot 2022-04-20 000431_LI.jpg


    Thanks for your help.
     
  4. kca

    kca

    Joined:
    Nov 27, 2013
    Posts:
    6
    Hi there!

    I just figured out the problem described in B.) is ProBuilder (obviously).
    After I export the meshes (Tools > ProBuilder > Export > Export Asset), delete Pro Builder Shape (Script) and ProBuilder MeshFilter, the unity's basic Mesh Filter automatically added (, with the prev exported meshes !! ? ), and all the issues of point B. are gone.

    Sadly my workflow lost some flexibility, but that's it.

    But point C. is still here ("You can't nest Foldout Headers, end it with EndHeaderFoldoutGroup.") and I have no idea what is the problem.

    It shows up even if I create an empty project and import only Tessera Pro, and load in a sample scene ('GrassPathsOverlapping').
    I opened the above project with a bunch of Unity Editor LTS versions, and also with the 2022.1.0b16 BETA, but the error message sits.

    Thanks,
    kca
     
  5. littenli

    littenli

    Joined:
    Dec 18, 2019
    Posts:
    33
    Help Wanted!

    Hello, I am using "Tessera Procedural Tile Based Generator". When I click the "Paint" button of "Tessera Tile", the "Tile Painting" window should appear according to the tutorial, but it does not.

    This causes me to be unable to continue using it.
    By the way, I'm using Unity 2021.2.10f1c1.

    Please help me, thanks.

    Snipaste_2022-04-22_14-32-43.png
     
  6. kca

    kca

    Joined:
    Nov 27, 2013
    Posts:
    6
    Hi!

    Try to open it up manually through the menu Window > Tessera Tile Painting.

    Screenshot 2022-04-24 205733.png

    kca
     
    littenli likes this.
  7. kamGames

    kamGames

    Joined:
    Apr 2, 2013
    Posts:
    33
    Hello @BorisTheBrave I have been working with you system(Tessera Pro) and was wondering if there is a way to change the Tiles during runtime(a Build system), like update only an 3x3x3 cube to match the one in the center and also ignore the Tiles that don't need updating(If I missed in the guide a reference will be grate too)
     
  8. BorisTheBrave

    BorisTheBrave

    Joined:
    Nov 18, 2018
    Posts:
    43
    Thanks for your reports
    .
    > objects from the scene view randomly (?) disappearing (looks like the ones used as reference tiles for the layout generation).

    I think I need a more detailed report on this one.

    > You can't nest Foldout Headers, end it with EndHeaderFoldoutGroup

    This is almost certainly some foolishness on my end. I think unity changed the behaviour in 2021. I will prepare a fix for the next version. In the meantime, I suggest you comment out the Begin/End HeaderFoldoutGroup which will allow you to proceed.

    > was wondering if there is a way to change the Tiles during runtime

    I'm afraid there is no guide, but most things can be changed at runtime. The API Documentation will help you further.

    It *sounds* like you are trying to change the tilemap after tessera has generated it. You're a bit more on your own there. At the moment, tessera generates stuff by instantiating the objects, then it totally forgets about them. So you can't really use it for changes. You can either use the normal Unity methods for altering objects, or you can delete tiles and then ask Tessera to re-generate the whole area. Tessera reads tiles already in the scene, so this will cause it to replace the deleted tiles and keep everything else in place.

    > the "Tile Painting" window should appear according to the tutorial, but it does not

    As KCA says, try the menu option instead.
     
  9. kamGames

    kamGames

    Joined:
    Apr 2, 2013
    Posts:
    33

    But it can be done like in your example on your website (https://www.boristhebrave.com/2022/04/25/editable-wfc/)

    I may have not explained that I was hoping to get some insight on how to begin to work on a Editable WFC with your system
     
    Last edited: Apr 29, 2022
  10. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,415
    @BorisTheBrave

    Any chance on supporting "meta" tile chunks that don't need to be regenerated on larger maps? -- i.e. I have a grid of 128x128x1 tiles, but with (4x) sub-areas as 64x64 "chunks" that contain 1x1x1 and 1x1x2 tiles that I would like to later cull/replace with a LOD so that I can see these areas from a distance (without them occupying too much memory)?

    It seems like optimizing a generative pattern to include subareas like that would make tiles Tessera generates A LOT easier to work with for serious game level creation -- especially when it comes to optimization. Right now, I still use Houdini because it is easier to use than Tessera + layers of logic for stuff like this. However, I feel like Tessera isn't far away from being able to do this well enough itself. I would much prefer to stay in Unity as much as possible (which is, essentially, the fundamental reason why I bought Tessera). Perhaps a simple "baking" to mesh and "baking" these tiles and meshes to a grid (with subsections -- as in the example above), is a functionality that is a little harder to translate (quickly and simply) from within Houdini to Unity mesh instances.

    Just something I was hoping for since I found Tessera -- and food for thought.
     
  11. BorisTheBrave

    BorisTheBrave

    Joined:
    Nov 18, 2018
    Posts:
    43
    > But it can be done like in your example on your website

    I write articles on lots of subjects. That blog post does not say anything about Tessera. It may be a feature in the far future, but it's not in Tessera's feature list atm. There's a large gap between "understand something and it works" and "production ready feature that is user-configurable and bug free".

    > Any chance on supporting "meta" tile chunks

    Tessera's default behaviour of just instantiating an object per tile isn't great for huge maps. And the mesh output coalesces everything into one mesh, which is also not very useful. So yes, I have considered some sort of chunking support in future, I might work on it once i finish my current project.

    However, you *can* use Tessera as part of a more complex pipeline. If you set the OnComplete callback, then Tessera will not create anything, but provide you with all the data about what it will create. You can use that however you like. Perhaps you can find an existing LoD asset, and feed the data into that?
     
    awesomedata likes this.
  12. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,415
    Thanks, that would be ideal. Honestly, while I initially wanted to purchase Tessera because I wanted to be able to handle 3d tilemaps of huge sizes, when I read this wasn't part of Tessera, I was pretty disappointed considering how great it was otherwise for the generating side of things. It seemed like low-hanging fruit that just wasn't there for such a great product otherwise.
    That being said, the option to handle some of this on my own is definitely a plus. Sadly I'm no longer really a power-user who tries to bend Unity's meshing algorithms to my will anymore (at least in the graphical department), so I tend to use Unity's existing display features (along with some third-party tools like Tessera, as well as applications like Houdini) to do the "heavy-lifting" for me in the procedural-generation departments.
    However, a Unity-specific tool like Tessera would be better than Houdini if it offered at least some basic level of generic or mesh-based meta-tile support and optimizations so that I could create a ton of tiles and have my worlds repopulate or generate LODs only within certain areas where I want it to (when I want to tweak specific tiles to be specific things in specific meta-tiled areas and procedurally-generated chunks). This as a feature, to me, would crush any competition for Tessera when it comes down to quickly generating (and playtesting) tile-based worlds. Right now, getting into a world we generate in Tessera is more of a long-term goal (due to needing to create tile-handling infrastructure) than a "generate-and-play" scenario (which is what most users tend to want with something like this). In fact, I can see this feature alone giving Dungeon Architect a run for its money. Just saying. :)


    This is an idea, but I don't own any LOD assets. I typically generate the LODs I use in Houdini (which handles textures and everything in batches). Essentially, I have to program my own version of an ideal form of Tessera in Houdini. That isn't as difficult as it might sound, but it would require a few days of development time to do (as well as a pretty sound knowledge of Houdini -- not to mention the interface wouldn't be as nice/friendly as Tessera when it comes to designing the specifics in my levels). Therefore, in the end, I would prefer to rely on Tessera whenever possible for the tile-based generation and loading/unloading of tiles/metatiles specifics and instancing/LOD usage -- especially when DOTS gets closer to being ready. Having a system architecture in place for handling the loading and display of this kind of stuff like this would be a great selling point for myself and others looking for a usable drop-in system like yours (without hassling us to learn the API of a tool -- or build one ourselves -- when it comes time to visualize our levels and performance).

    I'd love to use Tessera for something serious with larger and more detailed worlds. If the metatile loading/unloading/lod systems are generic enough in their design, it definitely has that kind of potential. I could see using this for the projects that don't even use tiles for (except for level-streaming). Either way, thanks for considering this idea! -- Just something to think about for the future. :)
     
  13. BorisTheBrave

    BorisTheBrave

    Joined:
    Nov 18, 2018
    Posts:
    43
    Thanks aweseomdata - i'm still working on Tessera enhancements, it's been slow going.

    Everyone else - I've relased Tessera 5.2.0 which I think fixes all the issues mentioned above. Let me know if things are still broken for you.
     
    kca, awesomedata and StevenPicard like this.
  14. petervrenken

    petervrenken

    Joined:
    Dec 17, 2014
    Posts:
    1
    Hi Boris, great asset - purchased the Pro version a few days ago.

    Small question:
    I'm currently working on a small game that uses a hex grid for floating islands. Tiles in use are next to the primary ground tile a lot of border tiles that give the outside of the island somewhat more detail. The water (or clouds ;-)) are empty gameobjects tiles which then get removed and replaced by a water/cloud plane.

    However the islands are very fragmented and shattered into many small ones instead of a fewer bigger ones.
    I'm somewhat confused on how to best change this as giving different weights to the tiles does not really seem to help.

    Could you give some hints or guidance on how to best approach the creation of islands, or did I maybe miss an example somewhere from where I can distill the tricks of the trade? Any small tip would already be very much appreciated.

    In the meantime: keep up the great work!

    KR from Germany,

    Peter Vrenken
     
  15. BorisTheBrave

    BorisTheBrave

    Joined:
    Nov 18, 2018
    Posts:
    43
    Hi Peter, that's a great question. I've actually struggled with that myself. You generally want to increase the weight of non-edge tiles, so water and land, rather than coast. However you never really get a natural looking coastline - that just seems to be how the generation algorithm works.

    You could also try using a Path constraint. Using the connected setting, you can force the generation to only make a single island. Combine with a count constriant to get a single, *large* island.
     
  16. Gunhi

    Gunhi

    Joined:
    Apr 18, 2012
    Posts:
    296
    How can I make objects follow the generated paths. I want some cars moving on the sample HexRaceway.
     
  17. BorisTheBrave

    BorisTheBrave

    Joined:
    Nov 18, 2018
    Posts:
    43
    Tessera only handles level generation. Using the level is your own responsibility. So I don't have any advice on that.