Friday, April 29, 2011

The Work of a Project Manager

Well my old "supersonic game engine" turned into a Computer Programming class project, and we are basically going to make a game; I'm in charge of programming the engine... and I'm also in charge of the entire project as project manager. My class chose me as project manager because 1) I was the one that suggested the original idea of even making a game this semester (before that decision, everyone was going to have to program their project in Python, and not everybody in the class liked Python!) and 2) I was assumed to have the most knowledge of being a project manager. Well for the past two or three months already its been quite a fun adventure, which is why I'm here to write about it now. I don't have any professional experience as a project manager, but I've tried to do my best, and it is true that I have read the post-mortems of project managers, so I wasn't entirely clueless!

Thus far, the project has gone considerably well.. Its not every day a group of 7 high school students pull off a professional quality game in 4 months, so that's not what we're aiming for. We did challenge ourselves to making a 3D game, so three team members are dedicated to 3D modeling (and those three have turned out some models that blew my initial expectations) As the project got started, we only knew we wanted to do kind of a spin off of Beowulf, so one person worked on writing a kind of storyline, dialog scripts and stuff like that.

At the beginning, from week 1, we had really no clue of where the game was headed. We had no ideas for a combat system, we had no ideas for what the game would really look like which made it hard at first. For team communication outside of class, and also for record keeping and kind of a history, we used a wiki over at Wikispaces and this is where most of the team has been able to effectively communicate their ideas and overall, we have been able to pull something together. The wiki actually started on a school website, and our teacher had set it up for us, but that wiki was limited, and it was old; so we switched to Wikispaces.

As ideas started to develop, the busiest team member was the story writer. Our story writer was perfect for the job, because his goal was to become an English teacher after he finished school, and he has written so many things in his time. The 3D modelers and artists didn't have very much to do at first, but that was okay as they started out learning the ins and outs of Blender One of the guys on the team was originally going to help me out with programming, although he would be more focused on scripting and stuff. Early on, however, he decided he would rather work on level designs. As if an engineer, he got right to work on drawing levels, the GUI and the menus on engineer's graphing paper, and along with that he also got started on designing controls and working on the mechanics of the game. Me and the only other programmer, similar to everyone but the story writer, didn't have much to do as the project started off, so I kept working on the engine I had previously started, hoping to design it with a focus on this game rather than the reusable engine I had previously dreamed of. The other programmer was a bit new to Python so he continued working on learning Python, although, a quick learner he was, he was sitting in the back with me and me and him decided he would do best working on the GUI.

One of the things that me and my teacher found most effective so far for getting the other team members to work is giving out a prize each week to the student who has contributed the most (whether it be some really nice models, lots of constructive wiki posts, or in general, a lot of quality work finished). As project manager, I have felt that it is my responsibility to keep the team on task, and present a goal for them to try to achieve (because as procrastinators, we all know that none of us will do anything without a goal in mind!). A tool I found to be somewhat effective is something called a Gantt Chart. I have never been too much of a visual person, but a Gantt Chart is perfect because it is a one stop reference for deadlines, a timeline, and it helps me see what tasks are more important, based on what other things depend on those (for example, the first stages of modeling and engine programming are very important in order to get to the first testing phase). Another useful tool I have used is a mind map, and using XMind I was able to create a mind map with a printable outline. I found that this was really only useful to me and the GUI programmer because no one else really has any mandatory requirement to care about the design behind the engine.

If I had to say anything to someone else that wants to be a project manager, I would say two things. 1) ask me in a few years after I get professional experience in this job, and 2) make sure your team has a clear goal of what you want to achieve!

Sunday, February 20, 2011

A beginner's philosophy in fixing problems in Linux

I am quite sorry I haven't posted in two weeks, but that probably doesn't matter since no one reads this. I've been a little bit preoccupied by school, although this weekend I was actually more occupied by my car. I did my first oil change and it took a few hours because I didn't know how to do it! Next up is a brake job.

Anyways, I was having some problems with CEGUI... and I fixed them. Do you want to know how? I upgraded to a newer version of OGRE and CEGUI... in the process I also reinstalled, but I don't truly know if it was the upgrade or the re-installation that fixed the problem. This reminds me of my first days in linux though. Back before Ubuntu 10.04 was out, in late 2009, I installed Ubuntu 8.04 thinking it would be better for me as a beginner (seeing as it was the "LTS" which I understood to mean perfect). I don't exactly remember what problems I was having, but upgrading to Ubuntu 9.10 fixed them. Later, (and again I don't remember the specifics), I had experienced some problem with my graphics card in Ubuntu; needless to say, updating the driver fixed it for me. I could probably name a hundred other times upgrading software has fixed a problem for me (or downgrading from 64-bit to 32-bit), but for the sake of your time I won't.

As far as stuff in OGRE has been progressing, I promised screenshots so here is one. Overall, my progress has been getting stuff to work and creating an overall framework. This screenshot is something I put together while testing animation, and some of the entities are left over from when I was running the application for the first time.