Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags
(+1)

No problem. I'm really interested how you designed your world, as a fellow Godot user. It seems like it's one big scene, with you using camera limits and lerping them to the next room.  My thought's would be that being one scene and having as many entities as you did would slow the game down, but its all smooth running. Also interested in the map overlay, because it seems like it would be much  better than my solution.

My system is obviously not great.  I start with a Node2D scene and make a tilemap for each room as I block out the whole map. After that I add an additional tilemap that I use to trace the entire collection of tilemaps. In the script on the root node, I get the used tiles from the "stitched/traceover" tile map, iterate through the cells and create a 1x1 rect  in the _draw function. I also add in screenshot functionality, and take a screenshot of the rendering map. After that, I save each tilemap as its one scene to be instantiated in the actual room scene.

Then I create the actual map scenes which has a TextureRect root node with the screenshot as the texture, and for each room (Node2D), I add Polygon2D's that cover their respective rooms and doors.  The highlighting and revealing of new rooms are just signals connected to it from the player.

It's a tedious solution, and came up with it my first time entering the this jam. I wanted to change this during this jam, but my focus was learning better character movement by learning and implementing state machines. I did figure it out and am able to implement them now, but it took half the month and the design of my game ended up suffering.

Sure I can give you a bit of insight.

Every room I have is it's own instance, that inherits from a base room class that defines its coordinates, map icon, and other information. I then have a big map scene where I put down all the rooms and then use a tool script to generate an array that contains the position in coordinates (generated from its global position) and the filename. This array I then use in my main game scene to create the world during runtime. How this works is that there is always a starting coordinate. that gets added first. then I create an array called "needed_rooms" which determines all the rooms that are connecting to the current room. Then I check if any of those are already loaded and if not I add them. 

The camera also gets a signal when the room is updated  (the signal contains the coordinates of the room ) and moves accordingly. 

The map works almost the exact same way, except I'm not loading rooms but map icons instead. (The conversion into 0:1, 1:1 coords is what allows me to have square rooms in the overlay map instead of 16:9 ones btw)

In retrospect it would have probably been better to use a custom resource that contains map data to save multiple iterations of the map at the same time.