Jump to content
  • Advertisement
Sign in to follow this  
Kris Schnee

[Theory] Modeling Age of Sail Navigation

This topic is 3880 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

This is mostly a theoretical question, not in urgent need of advice. I was daydreaming about a game idea involving exploration of a New World in a fantasy Age of Sail, and trying to imagine it as a card and/or board game. There's one key aspect of it that I'm stuck on. The gist of the game is that each player commands a ship on a series of trade and exploration voyages across an ocean to a set of islands. The ships carry crew and cargo; the islands have stuff to trade and can be set up with bases for cooperative or competitive use. The tricky part is, how do you model bad mapmaking and navigation in a game? I imagine a set of players sketching their own map and saying, "I don't know where I am, so I'll try sailing south to reach that island from last time, then go straight west." Part of the gameplay could be finding reliable landmarks and upgraded navigation abilities, or negotiating exchange of map data. If there's a clearly defined board then you lose some of the mystery and hazard of the real era; it's Columbus with GPS and Google Earth. But you can't really model that uncertainty just by randomly moving ships a few spaces per turn on a board! If the players can't see each others' ships on a map, they might feel like they're not playing the same game; could ship tokens be used on an informal map to represent where players _think_ they are? A couple of possible solutions would be to have a GM who keeps track of the real locations; or something with moving the _islands_ to represent uncertainty as to their position. The game might have a substantial pen-and-paper aspect to it as players try to track their location. Doesn't that turn it into D&D with boats?

Share this post

Link to post
Share on other sites
I think that the best way to model bad map making would be to keep two maps, a correct one that isn't shown to the player, and the player's map. If the player commands the ship to sail south 10 squares (for example) then the ship's position on the player's map is moved 10 squares to the south, just as the player expected.
In order to simulate poor navigation (which is presumably the cause of most bad map making) the ship's position on the real map is slightly offset from what was commanded.
Then, if the ship runs into land on the real map, the land is displayed on the player's map as it is seen on the real map, except that it is offset from where it really is because of the poor navigation.
So basically, the player's map shows where the player thinks he is, and all land is drawn based on where the player really is.
If the player comes back later and has better navigational skills, the land would be re-drawn (with less offset this time) and the player would have a moment of slight surprise in learning that things are not where he thought they were.

Share this post

Link to post
Share on other sites
I like this idea a lot. And I really think that Stevo14 is on to something with his method of real map/displayed map.

As for calculating the offset, I think this would be a great place to use a two dimensional Gaussian distribution as a probability measure. The two-dimensional gaussian is a probability distribution in the shape of a hill, where locations near the center are the most likely and locations which are farther from the center are less likely (ie exactly what you want in this situation). One of the really nice features of the Gaussian, however, is that there is a single parameter which affects how wide/shallow the hill is. Here is the general formula:

f(x, y) = e^-((x/theta)^2)-((y/theta)^2)

X and y are the distances on the displayed map from the real map (ie offset). Theta is your shallowness parameter. The smaller theta is, the more likely you are to hit center of the distribution. If, in this case, you allowed d to be the distance from where you are to where you want to go, and s to be your mapmaking/navigation skill level, then theta = (d/s) creates a very nice probability distribution for you. The farther from your destination you are, the higher theta is, and the less likely you are to land exactly in the center. The higher your skill level, the smaller theta is, and the more likely you are to land in the center. This makes our Gaussian:

f(x, y) = e^-((x^2 + y^2)*(s^2)/(d^2))

Or, if we consider this in polar coordinates (which makes a lot more sense, in this context, I'll explain later)

f(r, phi) = e^((r^2 * s^2)/(d^2))

Anyway, that's all just theory. As for implementing it, here's one option:
You want to really calculate the inverse of f(x), since more than likely you will want to start out with a random number (let's say between one and ten, for simplicity) and find a location from that number. I would recommend using a map of values of the Gaussian versus the distance from the center (r). Let us also assume that you only want the player to land within a certain region from the actual location, maybe only within a circle of radius 1 mile. Then the map works like this:

Split the radius into 10 pieces, and let each map data piece be the r, and each key be the f(1-r) (note, this will have to be updated every time you perform this calculation, since s and d will change). Then, when you want to find out how far the person is from the center, simply generate a random number between 0 and 1 (since the value of f(r) is always between zero and 1). Whatever key this is closest to, use that key to find the r value. Then generate another random number between 0 and 2pi for phi, and you have an distance and angle from the true map to the displayed map. Let me do an example to sort of iron this out.

You currently have mapmaking skill of 2, and want to go to a location which is 4 miles away. Where will you end up, according to the displayed map?
d = 4 miles
s = skill level 2
f(r) = e^-((r^2 * 4)/16)

Calculating the mapping:
f(r): r value: key:
0.779 1 1
0.817 .9 .998
0.852 .8 .990
0.884 .7 .978
0.914 .6 .961
0.939 .5 .939
0.961 .4 .914
0.978 .3 .884
0.990 .2 .852
0.998 .1 .817
1.000 0 .779

Now say the random number that I generate is .4485. Then I look at my keys...that is closest to .779, which corresponds to an r value of 0. I hit it right on the money, my displayed map is identical to my real map.

But if I generate a random number of .891, then the key I use is .884, and r becomes .3. So I am 0.3 miles from where I meant to be. But in which direction? I generate another random number, this one between 0 and 2pi, and I get (coincidentally) exactly pi. So my displayed map position is 0.3 miles to the west of my true map position.

You may need to throw some constants in there to make this more realistic, since right now we have a 78% chance of not being wrong at all, and our skill level is only 2. Just scale down the skill level in the equation until you feel that it is right. Maybe f(r) = e^-((r^2 * (s/10)^2)/*d^2) or something.

Well, that is my idea on how to model this. I feel that it is a pretty realistic, since you are increasingly likely to be right when you aren't very far from your destination and your skill level is high. But there is probably a simpler method, if your willing to forgo some of the realism presented here. There is also the problem of traveling to a location which is less than one mile away, but you might be able to deal with this by making that always correct. After all, how many miles will you actually be sailing? 10? 1000? More? All of this is subject to scaling by these factors.

Let me know if you need more help understanding this model. It can be a bit daunting for people who don't have experience with statistics and math, but the overall implementation is not too bad.


Share this post

Link to post
Share on other sites
Hmm. I like the idea of having one map for where the players think they are and another for where they really are, and the mathematical functions are interesting. I was thinking more in terms of a card/board game, though; maybe I'm asking in the wrong place. If there isn't a computer available to do complex calculation, then the mechanics would have to be either very simple, or built into the rules in a way straightforward enough to show in a simple lookup table. Also, that face-to-face type of game would require a GM (playing the natives, too, so that the GM has more fun than being an administrator?)

If you're playing on a table, there are possibilities for showing locations in terms of actual space on the table. There's a pirate-battle game that does that. Or there could be some card- and token-based system for representing distances.

I could see this idea going towards either a simple card-focused game where physical space is very abstract and the emphasis is on what you do when you arrive; or towards a D&D-like system where there's a specific map with pre-defined locations and events. Either could be fun. I was looking up a little information about "Magic: the Gathering" and was surprised to see that there's a complex storyline behind it, even though it's not really represented in gameplay.

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!