Tuesday, May 7, 2013

Unity Game Design Reflection



This semester I opted for a crazy class: Authoring Video Games.  Considering I had little prior knowledge in programming, I was more than a little concerned about my ability to fulfill the requirements of the class, but I just had to try.  I’ve been reading tons of research about the capabilities of video games, and some people I’ve talked to have even been pushing the idea of having students learn by designing video games.  Kevin Hodgson of Western MassachusettsWriting Project has had some success with helping students learn with a 2-D tool called Gamestar Mechanic, and my fellow National Writing Project TCs have heard of it.  After reading his ideas, we wanted to try it at North Star of Texas Writing Project. 

 After going through the tutorials for Gamestar Mechanic independently and playing with the free version, I was flummoxed by the many buttons and features of the tool.  I admit, I gave up after only three hours of attempting learning the system.  My frustration was perhaps unfounded.  Game design is a difficult process.  

Sometimes teachers don’t have to be the experts.  So, I tried letting a few of my students attempt to make a video game on Gamestar Mechanic while the majority of my classes worked on paper-based board or card games.  Honestly, I was hoping I’d have a superstar that could teach me the system that I was unable to master on my own.  Those few students were excited, and tried their best to complete a game.  None of them was able to accomplish this in the two weeks I was able to give them, as intimidated by the program as I was.  They were able to show me up on their sprite creation, with creative choices in color and design.  Sprites in Gamestar Mechanic are the avatars and characters that are imported into the world.  Since my goal wasn’t really just avatar creation, but instead the completion of a game, I decided not to try it again this year.  But, I still hadn’t given up on game design.
North Star of Texas Writing Project has been discussing the possibility of offering a game camp for the past few years.  What this camp will look like means different things to different people.  Some want students to work toward the goal of completing a video game.  I’ve always been somewhat skeptical about this approach, but when supporters refer to Hodgson’s success, I can’t argue.  Yet, without an expert in how to run the tool, I don’t see it as a viable path.  Since I’m most interested in games, I thought I’d try to be that expert.   For a time, we discussed alternate reality gaming, but that didn’t end up being completed.  I think this was largely because people didn’t have realistic expectations about what we could do or clear shared goals about what we should do.  Still, I like the idea of putting the kids into a design space, to allow them to be creative.  I thought perhaps we could get a grant to allow two people at our site access to the training course, while also getting software for laptops we could take from school to school.  Alas, the grant wasn’t funded.  

But then I saw the game design course.  I was familiar with Greg Jones, the professor, and knew that he was knowledgeable about 3-D game design and serious games.  Most of the reading I had done was about entertainment games, not serious games.  This was a new part of the field I needed to investigate. I knew Jones came from a Computer Science background.  If anyone could get me through programming, I was certain it would be him.  

The tool Dr. Jones chose is Unity 3-D, a highly powerful system that operates on a combination of point and click technology and Javascript programming.  He had us follow the modules from the Virtual Training Company course Introduction to Game DevelopmentUsing Unity 3-D.  We were also instructed to practice JavaScript through CodeAcademy.  This course included 75 short videos that were on average 5 minutes in length where the tutor would describe actions in the game system, helping the new user learn how to make a first person shooter game.  The first assignment took me hours.  For whatever reason, I couldn’t seem to get things to work the way the video showed them.  It took me some time to figure out I was substituting commas where semicolons went, or I was capitalizing something that shouldn’t be capitalized.  Typos and syntax errors result in the program refusing to work.  I was frustrated when I couldn’t get it to work, but diligent.  I refused to give up.  When I finally figured it out, I was proud of my work.  Every module after that first one got easier and easier.  Still, it took me many sessions to learn the system, and even now I don’t consider myself an expert game designer.  I would need more lessons in coding to be able to claim that.  

Our final project was to make our own game that showed elements that we had learned through the tutorial.  I opted to leave out the turret and grenades because I want to bring my game to the school as a model for future use.  Schools generally don’t look favorably on weaponry. I had to go back and review most of the videos in order to complete my game. However, this time, I was able to fast-forward through modules that I mostly remembered, looking for what I specifically needed.  I understood what I needed to do; I just had to remember the way to do it.  Making the final project game took me a little more than the time it took me to finish the first module during the first few weeks.  I was so excited. 

Then my computer went black.  

The black screen of death, that sucks all hope out of the heart of a graduate student who DIDN’T SAVE the work.  I was devastated.  Yet, this was a challenge I could handle.  After getting the computer back up and running, I redid the project, built it, and posted it.  Then, I tried to double-check my post by playing my game in the web browser.  It wouldn’t work!  The computer said I had to reinstall the Unity Web Player.  After reinstalling and then attempting to play again, it still didn’t work.  I did that at least twenty times and gave up.  I tried playing my game on a desktop computer at the school.  Admittedly, that desktop is older than my home laptop and it is subject to firewalls that I don’t have at home.  Still, I couldn’t access my game there.  But, my game exists on my laptop and it is playable within Unity.  My solution?  I took screenshots of every room and sent that to my professor.  Ok, so it isn’t the best case scenario.  I’ll possibly end up with my first B during PhD work.  But, my game is something I’m proud of.  And I’m proud of myself for taking on this challenge that is so outside my comfort zone.    

Here’s what I’ve learned this semester: game design is hard.  I knew on an academic level that this was true, but I hadn’t experienced it.  It takes creativity, years of learning software, and dedication to be a great game programmer.  I have tons of creativity, but I am not knowledgeable in software or hardware, nor am I very good at programming.  I can see a great game in my mind, but have no way to execute it.  Maybe one day a game design studio will hear me speak about the possibility of what games can be, and maybe one day I’ll be a game designer who can hand my ideas to a programmer and see it enacted.  That would be an opportunity I’d love.  Being able to have entertainment games that also have curriculum-friendly aspects to them is an area that needs to be developed, a sort of hybrid between entertainment and serious games. But, until that day, I’m a teacher and game scholar who has just gotten schooled on what it means to be a programmer.  

You see, programming is not the same as writing essays.  It is more like writing math equations than academic writing.  Yet, like writing, there are clear grammar rules that need to be followed.  Like writing, programming requires creativity.  Unlike writing, programming is about trying to get the creative idea to fit into commands the computer can follow.  This means that it must necessarily follow rules.  Any writer knows that rules are made to be broken.  This doesn’t work in programming.  The programmer has to be extremely detail oriented and be able to break down every action into the smallest parts in order to make the program work.  I admire those people who are able to do this. 

Think of it like the difference between those who are great bakers and those who are good cooks.  Bakers have to follow a specific formula to be able to come out with something amazing.  They must use exactly the right measurements, but there are still plenty of opportunities for creativity.  On the other hand, a cook doesn’t follow rules.  Many good cooks can’t share their recipes because they don’t operate on a recipe.  Instead, they adjust seasonings and mix ingredients together with little care about preserving the exact formula.  They can come up with some great masterpieces while breaking rules. Both the baker and the cook are creative, and both produce delicious food, but they do it differently. 

The next step is to try to bring what I've learned into the classroom.  I no longer believe that learning to program a game can be done well in a one week camp.  Instead, it will require at least a semester.  So, I’m petitioning my school to allow me to teach a game design course next year.  The best way to learn is to teach.  I’ve got enough experience now that I know how to use the system.  I’m looking forward to seeing what else I can learn on it, and what my students can do.