For my Junior C++ course’s final project, we were tasked with extending our text adventure game in whatever direction we wanted. I chose to pursue 2 new graphical features: a graphical map and a mini game reminiscent of Super Mario Bros.
My main accomplishment in the mini game was implementing my first 2D physics engine. It worked reasonably well for the task, but was not easily extensible or accurate. My second implementation of a similar engine in Slime Volleyball for Android show significant improvement over the initial implementation.
For the map drawing, I had to figure out a way to draw the in-game map which was represented as a directed graph. To do this, I implemented a physics-based graph drawing algorithm – each node repelled other nodes and each edge pulled nodes together. It was modeled after electrons and springs. I wrote the algorithm by mixing a few different techniques found in research papers published over the last few decades.
Graph drawing has since become an interest of mine and I plan on attending the Graph Drawing 2012 conference next year in Redmond. Along with that, I’m also interested in working to parallelize my algorithm to take advantage of modern processors like the Intel i7.