Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Strata 1.1 is out!

A topic by mattmirrorfish created Sep 16, 2018 Views: 611 Replies: 9
Viewing posts 1 to 6
Developer

I've uploaded version 1.1 of Strata! Here are the release notes. Huge thank you to keybol and r618 for their excellent and helpful feedback.

I've taken both of your feedback and bug reports on board and hopefully fixed everything. I completely rewrote RoomChain and replaced it with RoomSequence and RoomTiler and I think they are both much much better, including addressing and fixing the previous problems. I also included the 3D demo scene I showed on YouTube and added a new TunnelBrancher generator type that spawns sub-tunnels while it tunnels.

1.1 Release Notes:

1.1:

  • Replaced RoomChain Generator and with RoomSequence and a RoomChain component. RoomChain Generator proved unreliable in generating chains of desired length. New approach is much more robust and always achieves minimum chain length. Also adds support for placing start/end rooms from a RoomList at the end of the RoomSequence.
  • RoomChain component is a data holding object that is created and destroyed during generation. It tracks progress of RoomSequence and RoomTiler generation so that that data is not stored in BoardGenerator, making resetting cleaner and easier.
  • Added RoomTiler. RoomTiler is like RoomSequence but instead of spreading in one direction spreads in all available directions marked by exits for a number of iterations. Grows buildings with connected paths branching off from a center.
  • Added TunnelBrancher: This is like WanderTunnel but has a percent chance to spawn new WanderTunnels every step. Useful for generating branching tunnel systems.
  • Added turnNoiseValue parameter to WanderTunnel, this flips the generation back and forth between preferring to tunnel horizontally first or vertically first based on a random percentage roll, this makes for more irregular, squiggly tunnels. Keep at 0 for clean 90 degree turns in tunnels. Also implemented in TunnelBrancher.
  • Moved some source comments into Tooltips, not all yet.
  • Fixed a path bug when setting up profile for first time
  • Added simple example scenes for TunnelBrancher, RoomTiler and RoomSequence to MiniRogue example.
  • Added Experimental CubeWorld 3D Example Scene: This demonstrates using Strata to spawn non-Tilemap tile data, in this case a world made of cubes. Note that all editing must  still be done on 2D tilemaps, 3D editing is not supported.

hi matt, great update!

room sequencer seems to be producing very consistent results

[ I've only added null check for currentRoomTileSpace in GeneratorRoomSequence.cs:Ln 188, and also added missing board generator profile in MiniRogue BranchingTunnel Only Example scene ]

One small feature request - for adding a way to retrieve the actual final generated chain (previously possible via for example BoardGenerator's roomChainRoomLocationsFilled) for navigation purposes (at least I didn't notice anything usable). It's not a problem to add it manually to e.g. BuildRoomSequence, but maybe 'official' interface for all generators would be more user friendly :)

- Hope this helps, cheers 

Developer

Awesome! Glad to hear you're getting more consistency. 

Thanks for the heads up re the missing BoardGenerationProfile and the additional null check, I'll add those.

I'll take a look at how to replace the lost functionally. I might actually add a new generated GameObject in the scene that persists after generation and holds info about what was generated, to get that out of BoardGenerator, since there is still some info being written back to BoardGenerator like empty spaces.  I might store the final generated grid in there too that BoardGenerator reads out to Tilemap. I am currently using a temporary object with a new RoomChain component on it but that gets destroyed when generation is done. I might need something more persistent.

Would something like that work for your purposes do you think? 

thanks again for the feedback!

Matt

hi, please feel free to use whatever suits you and the overall style the best :)

I am fine with e.g. simple List of coordinates - I am adding to the list as generator progresses with each room right now directly in sequence generator, which works for it - but now it occurred to me that for branching/more complex paths a more advanced structure would be needed (which debug transforms w RoomChain component don't capture either I believe, if I'm not overlooking something  / it also looks like the debug transforms in the editor are not instantiated in correct order right now - they're ordered by coordinates, not path progression - don't know if that was intentional or not)

Anyway, although the overall structural information of the level might be useful in the future, I don't need a generic solution right now -)

- cheers!

Developer

So just to drill in a bit, how is that you want to use this data? You're using it for navigation of enemy agents? 

I agree that writing this data somewhere in a usable form would be a good thing, just need to think precisely how and what data will be needed. The main info you're interested in is the sequential numbering of rooms? You're right though that for stuff like the RoomTiler which spreads in multiple directions a list of coordinates won't help much.

Overall something that I am starting to see is that generating a kind of map/graph at one level of abstraction and then moving down to turn it into tiles makes a lot of this stuff work better, so maybe it makes sense to generate a graph or map of the level and save it somewhere for other gameplay related purposes.

Definitely thought provoking feedback!

it makes sense e.g. for grid based, non physics collision driven levels/movement

currently for testing I generate level and construct crude navigation map based on rooms coordinates (adding some offset to get the middle of each room)), the player/agent can move backward/forward in navmap - i.e advance from one room to the next/previous one:

( - not to confuse with unity's navmesh )

without any structural level information the data is only in tilemap now  - if you don't generate rooms/elements with physics colliders

(tilemap itself _might_ be enough in my case though - if the rooms generated had always exits only to connected rooms)

maybe things like A* would better operate on some preprocessed data rather than on tilemap tiles too, not sure

Developer

If you want to send me an email I can actually send you some code that I wrote that builds a turn / grid based navigation map from the boardGridCharacters data, instead of reading from the Tilemap. It works pretty well and isn't tightly coupled to Strata, it just reads the data and acts on it on it's own. Send me a mail at support@mirrorfishmedia.com and I can send it to you.

Huge thank you to you! This has been awesome and gets better every update. I'll check this out and keep you posted. Cheers!

Developer

I made a video showing the new stuff!


Thank you for the new video!