Geolocation: On transforming the real-world map to the game-map. What we learned from Pokemon GO, and what we’ve done differently
Jul 10, 2023
Medieval is a geolocation-based mobile game similar to Pokemon Go, or Ingress, centered on offering an elaborate gaming experience, featuring a complex battle system, story based interactions and quests, and deck-building features.
The game world of Medieval: Uprising takes place on the real world map of the planet Earth we humans inhabit, which, as you can see below, has been magically transformed into the countryside of Medieval Bohemia – a land ravaged by war between the Hussite factions and the forces of the Holy Roman Empire.
But which unique challenges and decisions have we, the developers, faced in our own quest? (To make the actual thing.) And, more importantly, what makes Medieval stand apart from the aforementioned examples?
So, to start off, how did we make our map?
We get the data for the map itself from Mapbox, a map data service. Mapbox is intended specifically for game development, and differs from regular user maps in how easy it is to filter the individual data, among other things. For example, Mapbox enables you to filter out all restaurants and see the map without them. It can also easily segment data in general, allowing us to divide roads, and buildings in this way – Mapbox separates the areas into colors, which we can then use to create the basemap.
We then take all the data from Mapbox by points of interest ( things on the map that have a name – e.g. gyms, pubs), before cleaning it all up into something we can work with. We then distribute important points on the map using a very special custom algorithm to fit the game design.
A church is a church!
We do our best to make the game map match the real world – where there’s a church, you’ll find a church. We try to give real buildings real meanings, so that you, the player, can navigate the game world using that priceless real-world knowledge of your own neighborhood! In doing this, we try to differentiate ourselves from other similar games that attribute properties to the buildings at random.
Mainly however, we wanted to avoid the problem we have encountered with competing geolocation games, where it is difficult to find points of interest if you happen to find yourself in a small village or on the outskirts of town. So we adapted the game-map accordingly. This is to ensure that the player can always find at least some important points in any given area to interact with (We’ve had to occasionally replace an apartment block with a church in order to achieve this, but you shouldn’t accidentally find a pub in the location of the real-word alcoholics anonymous center… um, hopefully).
Another fine feature of this decision is that it creates a consistent experience for all players, as everyone sees the same game-map. So it can’t happen that when you’re out on a walk with your friend while both playing Medieval, you would each have to look for a church on the opposite side of the town square, for example. Everyone sees the same map, and can plan where to go accordingly in order to progress in the game.
Interact, engage, confront!
Last but not least, we had to put our keen minds to the task of developing a system of interacting with the world and NPCs. We assign interactions to buildings that the map generation system judged to be less important, and these interactions are shown to players on the map in the form of scrolls, for the player to click on.
Upon doing this, the player is confronted with a dizzying array of diverse characters and situations as they engage with the world of Hussite Bohemia, ranging from challenges as simple as picking up a stick, to engaging in fierce battles in which to triumph and reap the rewards, or forging alliances that could shape the course of the conflict. Only a portion of the interactions appear on the map at any given time, disappearing and reappearing, giving the player a fresh new experience of the world each time as they slowly uncover its stories.
So, there you have it.
All you need to do is put your shoes on, and head outside. (Just don’t forget to check the weather.)