Tile engine design

Started by
2 comments, last by LordRhys 11 years, 3 months ago

I'm working on a 2D tile engine and looking for some general design and/or programming advice from more experienced programmers. What I want is an engine capable of handling both essentially limitless transition-free tilemaps (i.e., broken into chunks, loading the chunk the player is in and pre-loading adjacent chunks to make sure the player never sees an empty abyss at the edge of the screen) and Castlevania/Super Metroid style "rooms" of set size (for instance, an open overworld and segmented interior spaces). So, a few specific questions:

1. I've been using the Tile Engine and Level Editor from Kurt Jaegers' XNA 4.0 Game Development by Example as a starting point, but I'm finding they're fundamentally different from what I want to create (static tilemap class predefines a set const map size, tile size, number of layers, etc.)--rather than simply extending them as planned, I'm having to completely gut them to the point that I'm beginning to wonder if it would be more manageable to simply start fresh. I've managed to add support for maps with different properties (in such a way that the level editor still works, surprisingy), but it's messy. Thoughts?

2. Room-based tile engines are pretty easy to find info on, but I haven't been able to find any specific tutorials on how to code chunk-based tile maps. Anyone know of any? Specifically, I'm having trouble comprehending how to handle loading more than one tilemap, and how to get the camera to treat it as if it's all one giant map, only ceasing to scroll when it hits a place where there are no further chunks to load (the edge of the world). I assume I'll need to store the names (x,y coordinates) of all the chunks in an array to tell the engine which map files to load depending upon the coordinates of the chunk the player is in, but beyond that, I'm lost.

Advertisement

[quote name='TheSasquatch' timestamp='1358375909' post='5022329']
I'm working on a 2D tile engine and looking for some general design and/or programming advice from more experienced programmers. What I want is an engine capable of handling both essentially limitless transition-free tilemaps (i.e., broken into chunks, loading the chunk the player is in and pre-loading adjacent chunks to make sure the player never sees an empty abyss at the edge of the screen) and Castlevania/Super Metroid style "rooms" of set size (for instance, an open overworld and segmented interior spaces).
[/quote]

So you want "infinite" scrolling 2d tile map levels (procedural generation??) akin to Minecraft, or are you talking streaming in custom maps in real time that are pre-made in an editor. Or are you talking both?

[quote name='M6dEEp' timestamp='1358383789' post='5022388']
So you want "infinite" scrolling 2d tile map levels (procedural generation??) akin to Minecraft, or are you talking streaming in custom maps in real time that are pre-made in an editor. Or are you talking both?
[/quote]

Custom maps from the editor I'm working on alongside the game. While I'm extremely interested in procedural terrain generation, for now I just need to learn how to load the additional tilemaps and have the player/camera treat them all as one continuous map. I've been thinking about it all day, and I just can't figure out where to start.

There are multiple Tutorials you can use to get a basis for this. You can try a couple on Youtube, there is also a good overall RPG tutorial that will get you started at www.xnatutorial.com. ALso remember that the tutorial in the book is just a starter and you can modify it in any way you like, change the static values to variables you read in from a saved file or that you enter in textboxes.

As to your player/camera issue, you can tie the camera to the player and include an offset from the player and also a world offset, as your player moves the map scrolls. Your Drawing routine draws the map based on your view screen. This method lets you load the full map into memory but only draw the part of the map that fills your view screen.

This topic is closed to new replies.

Advertisement