Polygons and a Proper Map

I wrote in my previous post that my idea would make sense once I got it working.

The purpose of this “Accessible Area” map is for the game, SpaceFight!. The orange area represents the places that the player character can reach given a certain amount of time. The algorithm works something like the following:

  1. Build a list of visible wall nodes (corners) within a range around the player
  2. Sort the list from closest to furthest
  3. Cast out spokes at given intervals with a minimum length of whenever it collides with a wall and a maximum length of the given radius
  4. Create and add to the ‘area list’ a polygon based on the previous spoke coordinate and the current spoke coordinate
  5. Iterate list of visible wall nodes
  6. Calculate new radius by subtracting the distance between the starting location and the node location from the given radius
  7. Start over at the top of this list substituting ‘player’ for ‘node location’ and keep going until the new radius is too small

I really wanted to add (union) the polygons together to create one polygon consisting of the outer-most points. Unfortunately, that messes up and I’m left with what looks like a crumpled bridge at the best of times. For the time being I’ll have to use the list of hundreds (due to the recursion) of polygons as seen in the image above. It’s not so bad as in the game it’ll be displayed in between turns when the frames per second doesn’t matter. Perhaps there’s a Java package out there that could do the job for me, giving me a simplified list of the union of all the polygons.

Leave a Reply

Staypressed theme by Themocracy