Hello,
I just learned the automapping feature and it is awesome. And I was wondering if an entire level can be handled by tiled. What I mean with this is a level such as Rayman Legends or any other 2d platform game, having a massive amount of tiles and different background sprite. And even more, designing all in a huge wide canvas (say 20000 px * 1080 px).
The reason I am asking is because all the tutorials and examples I see are for small maps and usually from a top down view (like classic Zelda).
Also since Tiled now has parallax included it seems like it is the perfect to create the entire level, but I am not sure how this is usually done. Massive map or small maps loaded after each in game?
thx
While Automapping can be used to fully decorate entire levels, because it works on a predictable system of rules with only some basic randomisation, it doesn’t usually offer the level of control and polish of hand-decorated games like your examples. In addition, this level of polish usually requires a large number of complicated rules, and there still needs to be a good amount of manual work to tell the Automapping where you want what. So, it’s more typical to do a fair bit of work manually using features like Terrains and Stamps, and then have Automapping do clean-up and add some extra detail, instead of doing everything with Automapping.
Automapping can be used just fine for side-scrolling games. You can use the MatchType “Empty” tile in your input layers to refer to empty tiles.
Simple automapping examples show the functionality of the system. You can build up actually useful rules from these simple elements. Automapping rules for real games can consist of hundreds or even thousands of rules, and would be difficult to learn from. For example, one of my current projects’ automapping, which is far from finished as I haven’t drawn all the tiles yet, currently consists of 65 rule maps, many of which build on each other, and each of these maps contains from a few to several hundred rules, many of them with tens of input layers. Without a thorough understanding of my tileset and my workflow, most of these rules wouldn’t make sense to anyone.
As for how levels are usually done: it varies, as it depends on how you want your game to play and feel. In most side scrollers, anything you can access without a loading screen or fade is a single map, and this can be small (e.g. many Metroidvanias have many single-screen rooms), large, and anything in between. For very large worlds (think seamless open-world games) though, it’s common to break them up into numerous smaller maps to avoid the need to store the entire world in memory at once.
Edit: Also, pixel sizes don’t say much about the level size in tile-based games. 20000x1080 might be a giant map if it’s made out of 8x8 or 16x16 tiles, but if it’s made out of 256x256 tiles, then it’s tiny!
Cool thanks for the explanation. That helps. Wow, hundreds of rules. I would never thought that. Good to know. In your last paragraph you mention how levels are set when it comes to the size. In my case it is a run and gun, kind of like metal slug, contra, etc…
When I mentioned loading maps I didn’t mean with loading screen. For instance, say we have 10 independent maps of 1920 px each. They way I would code it is that when the first map width coord is < 1920, the second adjacent map is loaded dynamically. And when the first one is completely out of screen, I deleted from memory. And we continue this process until we reach the 10th map.
Now, the alternative would be to merge all 10 maps as one big map of 19200 px (so 1920px * 10). That way all is loaded at once during a unique loading screen, and no “dynamic” loading as before is required.
I can’t ind any information of which worklow is best, or even if my second suggestion of a 19200 px width map is even possible or recommend.
There’s no information on which workflow is best because there is no best workflow. As with many other things, it depends on your specific needs!
Dynamic loading is usually done to reduce the amount of data that has to be stored in memory all at once. So, if your maps are so large that they don’t fit in memory in your target hardware, then you should use dynamic loading. If they fit just fine, then there’s no benefit.
Tile-based levels, if implemented properly, usually have a fairly small memory impact, so you might not need dynamic loading. I’d recommend starting with a single large map and seeing how good you can get the performance (remember, you don’t have to render anything off-screen, and in a run-and-gun, you don’t generally update enemies that are beyond a certain distance from the player). You can always split the map into several chunks later if you need to.
Cool,
I’ll do that. My game is targeting pc so I will see how everything performs in a large map and how comfortable it feels the workflow of each method.
Cheers!