Thursday, December 6, 2012

Final Project Updates Weeks 1 - 3

Fell behind on the blog again, mostly because there's so much to do this is the last thing on my mind.  Our final client ended up canceling out at the last minute so it turned out that we were free to do whatever we wanted.  Which despite sounding awesome, really isn't as we were struck pretty hard by paralysis through freedom.  This time we were working in Unity, which was a first time experience for everyone except Cody and Damean.

Week 1

We spent the first week (which happened to be Thanksgiving week) brainstorming and trying to come up with ideas.  Initially we were really strong on the concept of a game where the player starts out with a very powerful character who slowly loses his powers over the course of the game.  While we felt this would be a really cool mechanic to explore, in the end we weren't able to come up with a way to do that wouldn't make the player end up hating the game.

In the end, we settled on pretty much the opposite.  We went with a physics based combat/platform-er game with the goal of making the player feel powerful.  Our vision was to have hordes of enemies charging the player and he'd blast them all over the place sending them flying with various physics based power moves.  Over Thanksgiving everyone prototyped out ideas for what they thought the game should have.

Week 2
When we got back on Monday everyone was pretty shocked to find that Cody had gone far beyond what anyone had expected and prototyped out a version of our prototype.  Everyone sat down and played with it and we instantly knew that we were onto something since it was so much fun to play around with.  Everyone else shared what they'd come up with over the break and then all the engineers broke off to work on sections of the game.

Since it had worked so well before, Jason and I decided to pair program once again, which was especially helpful since there weren't really enough tasks for the number of engineers we had in this larger than previous group.  Together we focused on getting a 3rd person camera into the game, which also gave us the responsibility of character movement since the two are intrinsically linked.

We started off by pulling down as many examples of 3rd person cameras we could find in Unity and checking out their scripts.  After that we tried incorporating them into our game to see how they'd work and what we'd need to modify for our purposes.  On Friday we took the character control script that Cody had written, and the camera and character scripts that Damean had from a game he was working on, and merged them together as best we could to create our own versions of them.

In the end, we had a camera and control system that functioned pretty much the same as our first ever attempt with a few slight issues.  We decided to show them off to the team next week to decide which direction to pursue.

Week 3
Monday we showed everyone what we'd come up with and decided to go with our initial implementation since it was the smoothest and most functional version.  We continued to fine tune that and finished up our job and sent out the code to the rest of the group.  Additionally, now that we had the core systems down, Jason and I got our main character model into the game and fully implemented his animations, which is done in a pretty interesting way in Unity.

Wednesday disaster struck as Unity version control finally hit back.  A bad build rendered the game completely unplayable and Cody and I had to revert to the version I'd submitted with the working camera which was the last stable build we could find.  From there we worked through the changes that had been made until we found which one had caused everything to break and resolved the issue.  We lost a lot of time, but fortunately the game was far enough along that it didn't hurt us too badly in the end.

All in all Unity is a pretty awesomely powerful tool for prototyping, although the struggle with version controlling it in a large team is pretty frustrating.