Inspiration

Seeing various awesome creations in places like the online roleplaying community and /r/worldbuilding, we were inspired to make a program that does procedural generation of a landscape that you could gain ideas from.

What it does

The program uses a seed to create a random landscape with several hex-based biomes and more variants to the biomes. It dynamically fills the world with these biomes and draws in the terrain. It also gives the world a cute little name.

How we built it

We used Pillow, a python module geared towards photo editing, to create the actual image. The data structure itself was designed by us and geared towards working in a hex based system. We also designed the way that our data structure is filled. We used adjacency to expand the biomes from multiple spawn points to fill up the world. The entire system uses procedural generation and thus there are many worlds that can come out of our program.

Challenges we ran into

We had struggles with learning the Pillow API, but mostly we struggled with entropy and creating the rough algorithm to generate our worlds. We also had to create our own assets, basing them off of public domain assets. Another struggle we initially had was thinking of an appropriate data structure for our program.

Accomplishments that we're proud of

We are very proud of the programs appearance and final result. We are very happy that we managed to most issues that we came across mentioned in the challenges, powering through even when it seemed as if we had to give up.

What we learned

We learned a lot about the Pillow API, photo editing, as well as setting up data structures and creating algorithms.

What's next for Landscape Generator

We need to overhaul the data structure system, our 2D List system was horribly inappropriate for storing a grid of hexes, due to bound errors. We also would like to have much better assets and art, since the art we currently have was more put together than craftily made. We need to overhaul our algorithm because the current system really only works as it is because we lucked out, and it sometimes doesn't work as intended. We need to fix our image creation to be totally scalable, as that would allow much more freedom for the user. We also should get rid of some of the hard-coding we had to do to get the system running. We also need to boost the efficiency of the program, since, especially with the large maps, the program takes too long to run. A better UI would also be very beneficial to the user. Overall, given our time frame, we are very satisfied with our results, but the reality is, if we were to continue this project, we would need to do some serious renovation.

Built With

Share this project:

Updates