Game Studio Development Week Twelve

Introduction:

This week we have the end of sprint three and in turn have a version of the game to play. Today I will report on working on course projects and my thoughts on the game industry in general.

Game Studio:

The name of the course I am enrolled in, is Game Studio and it’s supposed to be a capstone studio style course where we build a final project that shows off all the skills we have acquired over the past x-number of semesters / years depending on the situation. For this course we have the strangest project management system I have experienced yet, and after asking around it doesn’t seem this style is either A) an actual style of project management, nor B) anything anyone has ever heard of.

I can summarize what has become known as the process as a hybrid Waterfall, Scrum, Kanban thing that in total doesn’t make a whole lot of sense. I can see the purpose of the course is to re-create an experience of working on a major title with a large team on a long-term project. However in practice and in reality the concept kind of fails at the core level. I don’t have a guaranteed better way to conduct the course, but I can point out some faults that should be addressed and some suggestions, which are likely not possible due to other outside factors that exist at a University, which I will explain later.

The Project:

For the course we are required to write up a complete requirements document in the form of the Game Design Document, which would lay out the what the game should contain. Next the Technical Design Document should describe the how the game should be designed. The TDD in this case would include the class diagrams, the sequence diagrams, and a narrative, plus a list of the requirements in form of R-TDD-(item) or R-GDD-(item).

I am all for documentation and actually it is one of the reasons I have really lost interest in game development, but I’ll get into that later. In the schedule we are supposed to document everything prior to each sprint, which does and doesn’t really work. Since we are groups of students, and particularly my group is all graduate students, we rarely have enough time to meet regularly for this. Ultimately it comes down to production, I can spend the time to work on this course project and I will see some return on my efforts, but in the grand scheme of things, it’s a small and even potentially zero return on my investment. At the same time, any of those minutes would, in all honesty, be better spent working on my research, writing a paper or anything else that ends up on my schedule, which makes for a frustrating experience.

The Graduate Team:

Oddly enough there is some advantage to having a less experienced team in graduate school. When you’re doing a course project in University, the skilled graduate team can actually be a problem. If you’re a graduate student and have useful skills, you’ve likely been recruited by some professor to do research. One step further, if you’re in a Science, Technology, Engineering or Math (STEM) field, you’re likely being funded (ie. paid) to do that work. Lastly, its even more likely that if you’re doing research in a STEM field, that research is far more profitable and beneficial to you in your future than any course project that you will ever do. The result of all these factors means that in a team of graduate students, that are skilled; everyone prioritizes their research work over their course projects, and for good reason, it’s a much wiser and responsible decision.

The problem is, course projects don’t end up as completed and polished as the team would have been able to do, given they were able to focus all of their efforts on that work. One analogy would be asking Picasso or Van Gogh to color in a coloring book, sure they can do it, and do it really well, far better than any six year old, the target audience for coloring books, but since they don’t have any interest in it because its trivial, they only complete what is necessary so that they can focus on experiences that will have the most meaningful impact on their lives or on their skills. In conclusion, I should have taken this course as an undergraduate rather than now, and I suspect it is a great course for undergraduates, but this program and associated courses didn’t exist at the time, so what can you do.

There is some advantage to having a group with a couple of nobodies, because they likely haven’t been recruited yet to work on other projects. Of course if, on this project as well, they are still a nobody your project will suffer. However if you are able to raise those students up and get them motivated and interested, they can really turn a project around because they have the time to get excited and interested in the project, which means they can really spend the time to polish up a number of minor aspects. Unfortunately our team doesn’t have any of these students and everyone has already shown their worth and been recruited for a number of other projects, all of which are funded, and all of which have a number of related research papers in the works. Which means, the 15 week project gets a lesser look from each person and things don’t go as smoothly as they could have. The game still gets built, it’s still good and compared to some past projects maybe even great, but at the end of the day, it’s still only a 15 week project and its still for a course, so the scope is still easily managed.

Project Management:

The approach we have is supposed to be agile with Scrum but requires us to do a number of tasks that are very much so waterfall, so in the end the process isn’t at all agile. We write our design, then we put all those requirements into Mantis, then we implement all of those tickets, then we test. Except for this has rarely actually happens in an organized fashion. One cause for this is because we are asked to work naturally as a group, but follow a schedule we don’t have any control over, for deadlines that are reasonable but in relation to the availability of our team don’t work. In reality, from talking with other friends working in industry, obscure arbitrary deadlines is a perfect aspect of project management to re-create, and overall our situation isn’t as bad as I’ve heard of before, but it hasn’t been all that conducive to our team and if anything has been a hindrance.

For inexperienced teams the level of control over the schedule is probably appropriate but I feel our project would be either further along, of better quality, have more polish or would have been built with less frustration if we were given a bit more freedom to manage ourselves. One example would be that in January and February our team didn’t have time to sit down as a group and discuss all the design in detail, due to a number of reasons but for me personally was certainly the season, January / February is publication season and is a terrible time to ask for my time. Publishing is the currency of the University and I, as well as everyone else, wants to be rich with them. Luckily though I plan for that, and tend to focus more of my course work time in March and April. Nevertheless that design was due in February 1, so we did what was required, because it was required, but the real-true design didn’t happen until, low and behold, March when our graduate team was no longer focused on publications and research. The side-effect was after Sprint 2, the professor put a hold on development and said do no work except for documentation for 2 weeks of Sprint 3. We did that, but then had to rush through the work of Sprint 3, which meant – again another similar experience to industry – pushing off testing or other polish, surprise surprise.

Project – Conlusion:

Well so that concludes the experience of working with the group we have and the strange project management approach being used. We’re supposed to be managing ourselves and doing things in a meaningful, structured way that lets us be productive, but it feels as though we are reprimanded for changing how we do some things, and praised for changing how we do others, making it difficult to understand where the lines are.

Again all of this is pretty similar to what I hear about how “real” projects are actually done so maybe it is good experience, to train me to be accustomed to frustrating situations, but ultimately I really just find it frustrating and annoying to deal with.

Game Development:

I have a theory about the game industry, which has lead me to one potential conclusion about my continued involvement. The game industry is likely chalk full of poorly documented, poorly managed projects and I have very little interest in working in environments like that, see bridges and trees. I’m sick of working on projects where people don’t actually design anything in design space and create artifacts on paper of that design, i.e. documentation. Then go from there and implement a properly designed project. My theory though, is that this is how a great majority of projects in the Game Industry work. Next, working that way makes poorly designed projects, that are impossible to debug, are of low quality and a nightmare to update in the future.

Granted, some companies out there, might engineer software, and if you’re one of those, call me, because engineering software projects in a creative industry is something I am interested in doing.

The Proof:

So to provide some evidence to my claim, here is some proof. To begin we have to accept an assumption, the game industry has a low profit margin. This is actually true for most entertainment industries. Books for example are of this nature, a publishing company will publish thousands of books and most of those books loose money, but occasionally you find a Harry Potter and you make a bunch of money, and that money affords the publication of all those other books that don’t make money.

The same is true for the film industry. A production studio makes a lot of movies, go check out how many films Miramax, or Lions Gate makes, many of which you’ve probably never seen before. The camera guy, the gaffer, or the make-up artist make a reasonable salary, not millions, not six digits. Compared to the budget of the film, ultimately low pay. This is also true for your average writer, your average film worker, your average game-company employee. The low pay is a product of the low profit margin. Ever hear the phrase, starving artist?

This means you have to work hard to make any of these products, and it is hard whether it’s film, music, a book or a game, and you don’t get paid much. To accommodate this, it means you probably need to love your work. Which many artists do. This leads to my next point. There is a certain personality that gets into these industries, and my theory is that the personality that gets into game-development is not often the personality that accepts that proper documentation is the appropriate method to developing a software project. My sample for this is everyone that I have ever spoken to about game development. Rarely have I heard someone discuss the process of, get a group together, discuss and design some project, write that design down, attempt to fully develop that project. Then and only then, implement the design that should be so well developed, all the while performing proper quality assurance in the way of code reviews, design reviews, perhaps pair programming, unit tests and black box testing, and reports on the results of that quality assurance.

Global game jam is another perfect example. Get a group of people together and implement a game in 48 hours or less. The very nature of the task almost requires it not be designed or developed. Most people schedule about 40 hours of programming per programmer for such events. So what happens? People learn terrible behaviors of how to actually develop games.

My Desire:

I hate those projects, crappy, poorly designed, hackity garbage that never gets designed but somehow gets coded. I have absolutely zero interest in working in that project ever and I hope all the people that follow that project management approach experience failure after failure after failure. Even if their hack-garbage code works and their project ships, its still trash because you can’t learn from that, you don’t grow as a team, you can’t and don’t discuss good design, you don’t discuss design patterns, you don’t discuss data structures and you don’t design an intelligent, meaningful project. However, that is most of what I see from the game industry.

I remember reading some blog entry from a programmer at Capcom gloating that he has never seen a single game design document and that he had never used a formal document that you see in software engineering books. Another post on the XNA forums had a guy saying, why bother documenting things because you can make a decent game quickly by just doing it and getting it out there. He had claimed too many people waste their time on documentation and never actually publishing their project, so why risk spending time on documentation? Isn’t it better to get your game done and out the door?

League of legends is another potential example, they have all kinds of strange stuff going on – some of their stuff is written in Adobe Air, and changes take a significantly long time. The rumor is they had a small group of programmers and handful of artists make the game so you get what you get. Even Notch, the mind behind MineCraft, recently tweeted: “These made sense at one point.” http://t.co/h9wcbtqF — Markus Persson (@notch). He wasn’t drawing whatever the hell that is, because he sat down with a team and designed his game out and documented it. It’s clear he’s writing his code as it comes to him.

Not All Their Fault:

Despite all of these poorly designed projects, perhaps these folks have the right idea. Look at me, touting the importance of good design and documentation principals, and even my professor. How many great games do I have? Well let’s see, 0 + 0 + that other none existent game, hmm….still equals 0. The fact of the matter is, good design principals and good documentation don’t lead to more sales, in an industry with already small margins of profit. Sure maybe changes in MineCraft or League of Legends would be faster if the projects were properly designed and documented to begin with, but their seeing stellar sales anyway, and the customers are clearly putting up with the slow updates. So why spend the time, after all a good plan today might be better than the perfect plan tomorrow, particularly in games.

What I have Learned:

So the take home message that I learned was, I don’t think I want to work in the Game Industry. On the off chance that there is a team out there that appreciates good design principles and is interested and motivated in performing the necessary actions to invoke those principals, I would be all for it, but my guess is that team is likely as elusive as any of these: 10 Most Delayed Games Ever, particularly the 14 year late Duke Nukem Forever.

One big difference between the game Industry and those other entertainment fields I mentioned earlier is that, if you’re a good camera man, you have a skill set that is difficult to transfer to other fields. But if you’re a good programmer, or better yet a good software engineer, for games, it probably means you’re a good programmer or software engineer in general, and if you are, there are a number of highly paid, well respected jobs out there, that will bring you a significantly larger pay-check than most game jobs.

So places like IBM, Microsoft, Oracle and Red Hat, developing projects that will last longer than the next Christmas season are starting to look a lot more attractive to me.

Sprint 3:

Here is the results of sprint 3, but Kinect for windows screws everything up and it sucks to boot. Long story short the game play experience is trash, we’re working on a permanent hack to get rid of Kinect and enable a strictly mouse only play experience, for now I have a temporary hack in place to let you play through the web. The models, which is my main contribution, look pretty good. The textures which has been Harry’s main focus also look great. Even the code itself is well organized and structured, thanks to the work by Dustin, Rachel, and Nate. Nevertheless the game itself is still a work in progress.

My suggestion: Follow these steps exactly. Choose Play game, then choose single player, other menu selections probably break it. Once you see “loading…” press the escape key, that will skip the non-existent intro-movie that never loads. Once you’re done with that you can see the results of Sprint 3. Still a bit of play-testing and tweaking needed but that will come in good time, right now we’re only 3/5’s of the way done, so enjoy it for what it is.