Sunday, December 16, 2012

Cave In

This is my final project from my graphics course I took first semester second year. When I got this project I was just starting to realize my potential so I wanted to push my self to see what I could create. I did get some help with the art, design and audio. My brother Justin Ellenberg actually produced the song in the background for me. The spider and lantern were done by my friend Paul Kubik. Evan Schipellite gave me many design ideas on how to approach this project. That being said it was still primarily my own work and I am happy with what I was able to accomplish by challenging myself on this project.

I challenged myself by looking at areas that I had not explored much before such as AI. I did not do any research on it, I instead just played around to see what I could do. I started by creating an ally that had very simple following AI that was just an if else statement that would move in a direction based on the distance away from the player. From here I decided to add a wandering behavior where the ally would move three tiles in a random direction after a random period of time. After adding this the problem of the ally going around walls to get back to the player became obvious. In order to solve this I once again just thought of my own methods. I used some hacky way of creating a path by trying to go each direction and go around the wall and just used the shortest path. This method would only work with going around two or less walls but that is all I needed for my game. Although I had fun on this project creating AI from my head I now know it would be much better to research ways of doing what I am trying to do rather than trying to reinvent the wheel. In the case of finding my ways around walls I could of researched and implemented A* and I would of had no limitations as far as the number of walls to go around. It would of also been a lot more stable than my version. I also created simple boss fight AI that was pretty much just run strait at the target (using similar AI as the ally follow behavior) and attack. The boss also switched targets about every 5 seconds to allow the player to prepare itself for its next encounter.

I also wanted to challenge myself to make this game primarily data driven. I wanted to get experience making data driven parts so that when making games in the future it would be easier for my designer to make changes. The scenes with text and movement are all ran by text files. There are commands like MOVE_TO_ALLY, TALK_TO_ALLY, ect. This allowed me to make multiple scenes without much trouble at all. I also made the menu system data driven. The way I did clickable text with this is that you could have text be clickable and you can have a target that it would go to once clicked. This made it easy to make a clean menu system. It was also somewhat necessary to do data driven menus and dialog because there was a requirement to make it work in 4 languages. This could be done without it being data driven but it would of gotten very messy very quickly. I learned that having multiple parts being data driven can make life much easier later on in a project.