I've always been fascinated by worldbuilding -- creating fictional places with their own geographies, histories, and cultures. I wanted to make a tool that I or someone else could use to easily generate simple world maps for tabletop games or just for fun. I had recently followed a tutorial describing how to create a similar map generator in Unity and decided to try making one on my own with tools that I am more familiar with.

What it does

God's First Draft is a simple Windows application that can generate realistic world maps that are randomly generated using a pseudorandom number generator. When the user inputs a seed, the program uses the Perlin Noise algorithm and some variations on it to create a Bitmap image that displays a fairly Earth-like system of continents, oceans, and islands.

How I built it

God's First Draft was built as an MFC application in Visual Studio using c++. Perlin Noise was generated using sol-prog's Perlin Noise library.

Challenges I ran into

I found the GDI+ graphics library used by MFC applications to be very ill-suited to this task. I ran into several issues when attempting to draw and re-draw the Bitmap, especially when a new seed or other parameter was inputted (which required editing of the Bitmap). As of right now, after changing a parameter or inputting a new seed the user has to resize the application window to update the map. Also, some of the math required to make the maps was not as easy as it was in Unity because of the lack of Unity's larger more useful graphics libraries.

Accomplishments that I'm proud of

The accomplishment that I'm most proud of is the fact that I actually have a working version of the idea I started the hackathon with, which is a first for me (even if it's not nearly as pretty or as fully fleshed out as I'd hoped). I'm also proud of being able to figure out a way to handle the map graphics in spite of the fact that GDI+ is not nearly as well equipped for this particular task as a game engine like Unity. It was also my first time working with libraries that hadn't been introduced or used in class, and I was excited about that.

What I learned

I learned that my failure at last year's Spartahack was just a learning curve, and I got to see a little bit of how much I've learned since then. I learned that I find working with graphics fun and interesting, but also that the technologies that I have experienced so far don't work extremely well to further that interest. Because of this, I've realized that it would be very beneficial for me to work on acquiring some new skills -- I'm definitely going to keep familiarizing myself with Unity and maybe try to look for some other technologies that interest me.

What's next for God's First Draft

I'd like to try recreating this project using a game engine like Unity or a different graphics library, as it seemed to me that there would be a lot of benefit to switching technologies. From there, I'd love to add other important functionalities like saving and loading of the maps, being able to place cities or other landmarks, and adding the ability for the user to choose their own terrain types and colors.

Built With

Share this project: