Currently, all map grids in Ultima Ratio Regum are contiguous on the human level. Which is to say the map continues scrolling as you walk to one side or another, and when you get close enough to a new map grid that grid is loaded. The palyer's @ stays centered in the screen at all times unless you reach the absolute edge of the map, in which case I believe it currently crashes, so please don’t test that and just take my word for it. Good. As of version 0.3 (due to be released in August!), this is changing. You will no longer be able to move contiguously between grids on on the human level, which is to say that when you choose a grid to load from the Travel screen, that grid and that grid only loads. When you reach the edge of a grid, it will cease to scroll and you will bump up against the edge of the map. If you try to move over it asks you if you want to go over, and if you say yes, it loads the next grid along, moves you to it and unspawns the one you’re on.
You will therefore still be able to move across the entire world on foot rather than travelling, but it will be through distinct map grids. This is a significant change, but one with three causes. I hope to explain my reasoning as clearly as possible here, as I think this is a big positive move for the game.
1) Loading and memory. Loading times suck. People kept saying this about 0.2, and they were correct. This change hugely reduces the regularity and size of load times.
2) Contained player experiences. I think there’s something to be said for making each area feel like a distinct area – you enter that area and explore that area. Open-world games have a very particular kind of exploration, but that’s not quite the kind I’m now after. Having been playtesting it, this makes a real change to how it feels entering a new grid - psychologically it's akin to loading up a new level in XCOM, for example, rather than loading up a new level in Dwarf Fortress.
3) Doubling (!) the space of play. Weirdly, this change would actually give you over 50% more play on each grid without loading zones. ALLOW ME TO EXPLAIN. Currently each grid is 200×200 tiles. When you enter that grid, you enter at a point appropriate for the direction from which you can in from. If you enter from the north, you appear at 100/50 – so in the middle of the northern edge (i.e. 100 squares in from the left, 50 squares in from the top). The south-east spawns you at 150/150, and so on. The trigger for loading neighbouring grids is the player being < 30 or > 170 on either axis, as the picture below shows:
In this image a ziggurat has spawned within the non-loading boundaries. If the player attempts to enter, for example, the pale green area on the right, it will load the grid on the right. Entering any of the light green corners would result in three full grids being loaded (which takes maybe 30 seconds). Believe it or not, this system actually means that less than 50% of a map grid can be explored without straying into a load zone! The grid is 40,000 squares, and a quick calculation shows that only 19600 of those squares are outside a loadzone. Whilst not perfectly accurate, the picture below demonstrates this to some extent. All four of the bars fit in, but if you were to fit in the corners, it would exceed the space in the central area:
When grids do not load and sew themselves together, all 40,000 tiles in a grid can be used for gameplay. Until now I haven’t wanted to spawn any buildings within the loading zones because it would be even more annoying if things starting loading whilst you were exploring! This way you will never get any loading zones once you first enter a map grid – which will itself be quick – and buildings can be placed in all kinds of areas, allowing for rather more interesting map grids:
… such as those which have multiple buildings that could brush up against the corners and the edges, and thereby doubling the amount of play per map grid by removing areas where I “cannot spawn buildings”.
Overall, I think this is definitely the right move forward, but as ever let me know your thoughts in the comments. Next week: the final update before release?! In the mean time you can keep up to date on my devblog, Facebook page, or Twitter feed. The devblog is updated weekly or fortnightly generally on Mondays, Facebook a few times a week, and the Twitter roughly daily. Any thoughts, please leave them in the comments! Stay tuned...