Technology moves fast! ⚡ Don't get left behind.🚶 Subscribe to our mailing list to keep up with latest and greatest in open source projects! 🏆


Subscribe to our mailing list

PirateMap

Procedurally generate pirate treasure maps.

Subscribe to updates I use PirateMap


Statistics on PirateMap

Number of watchers on Github 143
Number of open issues 4
Main language Python
Average time to merge a PR about 5 hours
Open pull requests 3+
Closed pull requests 1+
Last commit over 2 years ago
Repo Created over 3 years ago
Repo Last Updated over 1 year ago
Size 14 KB
Organization / Authorfogleman
Contributors1
Page Updated
Do you use PirateMap? Leave a review!
View open issues (4)
View PirateMap activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating PirateMap for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Pirate Maps

Procedurally generated pirate treasure maps. X marks the spot!

Example

Dependencies

I used several excellent third party libraries...

  • cairo for rendering
  • colour for color interpolation
  • noise for simplex noise
  • Pillow for saving debug images of noise layers
  • pyhull for delaunay triangulation
  • Shapely for all kinds of 2D geometry operations

How to Run

The script will generate several random maps and save them as PNG files.

git clone https://github.com/fogleman/PirateMap.git
cd PirateMap
pip install -r requirements.txt
python main.py

How it Works

It took me a while to decide on an approach for generating the land masses. I didn't want to just generate some simplex noise, threshold it and render it. I wanted to actually compute a polygonal shape that I could do further operations on. So here's how that works...

  • generate a layer of simplex noise with several octaves, with decreasing values as the edge of the image is approached
  • fill the screen with randomly positioned points evenly spaced using the poisson disc algorithm
  • filter the poisson points to those where the corresponding noise value is above some threshold
  • take these points and compute a concave hull or alpha shape with them

Shapely's buffer function is used heavily for padding or cleaning up shapes.

I also wrote an xkcdify function to add some perturbations to some of the polygons, namely the different water color gradations.

PirateMap open issues Ask a question     (View All Issues)
  • over 3 years Cannot build on linux
PirateMap open pull requests (View All Pulls)
  • py2cairo installation instructions
  • Python3 support for great good
  • Adds python2 note in ReadMe.md as requested in #4
PirateMap list of languages used
Other projects in Python