Category Archives: Project management

Project management deals with issues like scheduling, planning game and going through the plan.

How to Set Up The World’s Simplest Version Control & Backup System (Takes Like 5 Minutes)

I’ve used some version control system such as SVN, and different backup software but all of them have one problem: these complex systems might require quite a lot of work to set up, and it’s quite likely that you’d need technical guidance to get them to work (well, I suppose unless you happen to be an unix geek). That’s why I wanted to try something different. Something simpler that does the job.

The simple version control system
During the last weekend I looked into setting up a very simple backup / version control system, and it took me like 10 minutes to find the necessary information and set everything up. It isn’t the most optimized system to back up stuff, but at least it’s extremely simple and it does what’s it supposed to do: it backs up data and creates versions.

I used the information provided by the LifeHacker simple version control and did some modifications to make it work for me.

Step-by-step guide for setting up a version control system
(I’m using Dead Wake game example here)

  1. First I created a folder “G:\Dead Wake\versioncontrol” (it’s on my second hard drive)
  2. Then I created a “versioncontrol.bat” file and put the following code inside it (this all should be in one line):

    xcopy “D:\Dead Wake\development” “G:\Dead Wake\versioncontrol\%DATE%” /V /I /S /Y

    (This copies my development folder files under the versioncontrol folder, and creates a ‘date’ folder there. Notice that I use the /Y to overwrite files automatically: since I launch this backup script several times a day, but want to store only the latest version for one day, I have made it to overwrite possible files)

  3. Last but not least, I used the Vista’s Task Scheduler to create a “Dead Wake version control” task: it will launch “versioncontrol.bat” several times a day.

    I created 3 triggers and set up it to launch version control “Daily at 10 o’clock”, “Daily at 14 o’clock”, “Daily at 18 o’clock”. (LifeHacker provides information on how to set up scheduled tasks)

And that’s it.

The results
Now the system will automatically backup the project folder three times a day and copy it under the version control folder. It also puts a date, so I can easily see on what date the version was created. If I want to manually launch the backup process, I can simply double click the “versioncontrol.bat” file.

Some notes
I realize that this isn’t as sophisticated nor optimized system. For example, it would copy only modified files (if you want to do that, then check out “xcopy /?”, there’s help information for that too), but to my needs this is good enough. The files aren’t compressed (zipped), but since I have only like 70 megs of data (and a big harddrive), it’s not a big deal.

Simple system
On a good side: you don’t need much expertise to set this up, and it’s very quick to run (of course depends how many megs you have) – and you can launch old versionsvery easily (since you don’t need to unzip anything) if needed.

Simplicity & easy of use in backing up data were my goals, and if you want to do something more sophisticated & optimized, then you gotta look from somewhere else.

Variation
If you don’t want a daily data, you can also use something like: (in the “versioncontrol.bat”)

xcopy “D:\Somestuff\” “G:\Somestuff Backup” /V /I /S /Y

This would copy everything under “D:\Somestuff\” folder to “G:\Somestuff Backup”. Notice, it wouldn’t create “date” folder, so it would be merely a one-time backup of your existing data. This can be useful for bigger amount of data, but this system would benefit from “copy only changed files” type of solution.

This way, the ‘mirror’ wouldn’t become too big. (Imagine if you copy 100 gigs of stuff, just to notice couple of days later that your harddrive got filled since there was so much data).

Anyway, this can be a good way to backup data that doesn’t change so often (unlike your current projects).

Word of warning
I think this system is as simple as it can get, but if you don’t know what you are doing, then be careful with the data folder sources and destinations, and do an alternative backup of your product files first (zip everything for example). You don’t want to overwrite your original stuff. Make some test folder backup first to see it actually works. I won’t be taking blame if you manage to overwrite your project files when setting up this backup system.

It shouldn’t happen, but I just want to make sure we know what we are doing here.

Thanks to LifeHacker.com for the helpful tips.

Update: Tip from Toni for compressing files:

I did make something similar but I added a command-line compressor because them files tend to add up fairly quickly. I used 7-Zip cmdline version.

Here’s instructions on how to get 7-Zip command line version working

Deadlines Are Not Evil

I discussed with one guy about project work and he brought an interesting point. He said he had a project that would take about a year to accomplish. In the beginning of the project he was bit worried that there didn’t seem to be specific dates set at all. This was bit stressful since he knew that there was one big deadline set (the one year timeline), but no deadlines for smaller goals or milestones. He wasn’t sure what to focus on next.

He discussed this with his project clients and finally at some point they managed to set a few milestone deadlines. Just merely attaching a specific date to an upcoming meeting was relief for this guy. He said it made his work more clear. Now he didn’t need to stumble forward, but he could organize his work so that he would first go towards the first deadline. After that he’d know when the second deadline and what it was all about. It brought clarity to set ‘what’ the next milestone is about and ‘when’ it is supposed to occur.

This isn’t always possible to do: deadlines can be missed, features might not make it to the milestone, something unexpected occurs, fixing one bug creates four new bugs…. anything can happen.

Even though deadlines can be tricky one, it doesn’t mean one shouldn’t use them. Deadlines can inspire people to meet the deadline. They can bring clarity. They can be helpful. Check out some famous quotes about deadlines, perhaps they’ll inspire you to think about the importance of deadlines:

“A deadline is negative inspiration. Still, it’s better than no inspiration at all.”
-Rita Mae Brown

“They didn’t want it good, they wanted it Wednesday.”
Robert Heinlein

“The ultimate inspiration is the deadline.”
-Nolan Bushnell

And one of my personal favorites…

“I’ll need daily status reports on why you’re so behind.”
- Dilbert’s Boss

Deadlines aren’t necessary evil. It depends how you set them.

Everything Went Fine Until You Came Here…

Couple of days ago I was asking our Dead Wake programmer how’s things and what has he completed. He said that “everything was fine until you came here…”

Luckily he was joking.

He had almost finished the list of tasks I’ve given to him, and said that he wanted to complete them before discussing with me. I was so curious to know where he was, so he continued joking that he couldn’t continue programming since I was asking all these questions.

Eventually he said that everything was indeed fine and explained what he had done, but this funny comment made me think how true this statement can be.

Are helping others to get their jobs done?

Producers from EA, Sony, Relic, Gas Powered Games, and others have given me hints about the role of the producer. All these producers agree that one key responsibility of a producer is to assist others to get their jobs done. If you keep bugging others asking what they are doing, when will they do this, could they do that, have they heard it, and thousand more questions – you eventually might get people to think “everything went fine until you came here”.

On the other hand, if you never ask any questions chances are that others start to think “what do you care – you never ask about what we want”.

So, how do you know whether you are assisting others, or just a hindrance?

The best way I’ve used is pretty simple: ask them.

If you encourage people to suggest how you could improve your game development practices, chances are that they will say something. Asking them “how we could improve our work” can be very effective, if you actually do something. Asking things “because there’s reflection phase in agile work” is not going to work unless you actually take time to implement those ideas.

Avoiding interrupting other people’s work while helping the team members to get their work done more effective is essential for every game producer.

Web Software for Teamwork

You want start a game development project, but you are unsure on the ways you are going to manage it. As an indie like you, I also don’t have cash for consultancies or ERP software packages! So here goes a fair number of web-based tools to help you managing people.

DotProject

This is one software with a bunch of features for project managing and team collaboration. It works pretty much like traditional management software (MS Project and Primavera). It has a forum, a shared calendar for events and meetings, and an also shared contact list. The main weak point is the lack of AJAX-like functionality – so, unlike Gmail, for example, you have to reload the whole page each time you want to update it.

Like MS Project, it is a complex piece of software, but a very good one. I’ve used DotProject for 2 and a half years, and now I’m moving to either Overlord or Teamwork. I came to conclude that I don’t need much complex functions for 4-8 developers teams. But that will depend on your producing methodology as well.

Overlord

A managing system focused on game production, used by GarageGames. It is a great system, simple but effective for our goals. Has Web 2.0 capabilities, and has the source opened to you after buying, so you could add your own modifications afterwards.

Teamwork

  • http://www.twproject.com/
  • Needs Installation? No, though a license for download-and-install is available.
  • Free? Yes, for small companies (up to 5 projects and 10 developers). For bigger ones, 8 euros per month for each user. No source available.

This one is new to me, and I’m still evaluating. Unlike DotProject and Overlord, it is a ASP-business model, so you don’t need to install anything – just create the account on their site and use it. It has lots of functions, and seems as complex as DotProject – but uses Web 2.0 controls that can really improve tasks visibility and usability for team members. And getting to know what everyone else is doing is very important thing to keep team members motivated.

Useful (and free) Software

These are software not intrinsically related to project management, but can help you on specific needs. With WikiMedia software, you can keep your internal documentation updated, interactive and easily available for the project team. You can also configure that just some users can modify the Wikis (game designers, most of times).

phpBB is a widely-known forum tool. You can use it as a knowledge database, issue-tracking system, and – above all – an interactive tool available for the players!

The WordPress blog system of this site is available for download! You can configure blogs for each members of your team, make a general “project” blog, or use it as your site main under-laying system (like we did on Interama site).

What the Cloth Washing Instructions Can Teach About Game Production

I received an image that shows the kind of washing instructions all clothes should have. The instructions describe how men should handle cloth washing – something what should be applied by game producers as well. It’s pretty amazing what you can learn just by looking what you clothes has to say.

While I admired the practical instructions, I immediately thought about two things.

First of all, I thought that the guy who planned the text should be a game producer.

Secondly. While the advice can be applied in game production, the planner should realize that this kind of text is asking for trouble.

Here’s the picture: (Not sure how old this is or where this originally was shown)

To set the record straight… the “it’s her job part” is just an ego-boosting way of saying “because you moron can’t wash your clothes” (at least that’s what I think when I watch my wife washing the clothes).

Seriously, if we apply this lesson to game production, we get the following:

  • Don’t try to do everything by yourself if you don’t know how.
  • Get people smarter than you to help you out.

And lastly:

  • If you delegate tasks that you are too stupid to complete and argument by saying “it’s your job”, you will get slapped in your face.

7 Game Producer Questions That Need Answers

I received an email with several questions, and here’s the first 7 answers for those questions.

Question #1. How have producer roles changed over the last two decades?
According to Wikipedia, the first time “game producer” title was used in 1982. From the interviews and discussions with other producer, I’ve come to conclusion that “producer” means different things on different companies. The role definition lies somewhere between “manager” and “leader”. I believe the role is more likely to change between companies, than perhaps between time.

Question #2. The current fight over which titles to greenlight….?
Hard cold business decisions.

Question #3. What makes a good developer?
See what people smarter than me have answered. I think in my mind it boils down to getting stuff done.

Question #4. Who are famous producers in your opinion? Why?
I don’t think this is a matter of opinion – it’s matter of fame, and matter of defining producer. Any producer who has put his name in his games must be famous ;)

Question #5. Who is your favorite producer? Second favorite? Why?
I don’t play favorites, but if I have to choose, I’d pick “Me, me”. He is the guy I have to bear with every single day.

Question #6. What are some of the changes brought about by the marketplace in the way the production process takes shape?
This is extremely large question to answer. I can give you some changes that in my mind are changing the marketplace, but these are just examples.

First of all I think digital delivery (downloading games via Internet, without going to shops to buy games) is a huge thing. It will change the marketplace for good, and DRM (digital rights management) are playing a big role here: copy protection must be done so that it won’t annoy the player. Another thing is the raise of casual gaming. Naturally the console wars (PlayStation 3, Xbox 360, Wii… and others) are changing the marketplace. For example, companies need to figure out which platforms to support, and whether to make games for consoles or not.

There are more reasons, and I let our community members to give more examples.

7. Why would game development teams fail without producers?
If by producer we mean “manager” or “leader”, then one could ask why teams would fail without leaders. This is pretty good question, and I think teams might survive without having a clear leader in the team. In theory, if the team members are all working towards the common goal – it might work. Leaders are there to keep the team together, help team members to make their work, resolve difficult situations… and somebody has to do that. It doesn’t mean that team would need a guy whose work title is “producer”, but naturally somebody needs to know where the game development should be going.

Estimations and Wishes Don’t Fit in the Same Jar

After showing the first zombie game video clip, I noticed couple of comments about the progress. I heard one guy commenting (not on our boards, but somewhere else) how he has faced some obstacles in his project and was not happy about his game progress. Not enough time is the common thing people say. So many things to do, so little time…

Here’s something extremely crucial when it comes to dealing with time.

Estimations and wishes are two different things. If you estimate that it takes one day to get the guy moving, and if that’s not happening after 2 days – wishing faster progress won’t help anything. No matter how often you wish that “it wouldn’t take so much time” to complete your tasks, it doesn’t matter. Whatever you wish is just that – a wish.

It’s very important to face the crucial facts. I’ve been estimating my tasks in point basis. I estimate that I can get one point done per day, so that’s 5 points in one week or 10 points completed in two weeks. Then I estimate my stories (or features, or tasks) anything from 0.5 to 2.0 or more points. At the moment I have tasks such as “.44 weapon” (0.5 points) and “level room” (2.0) points (naturally I have bit more detailed explanation telling what exactly I want to have for each task). I took tasks worth 5.0 points to do this week, and that’s it. It was tempting to try to take one more 0.5 point or 1.0 point task, but that would be wishing. If I can make 5.0 points worth per week, then it’s no point trying to put 6.0-7.0 points worth tasks into one week.

And we don’t need to talk about points. We can talk about hours. If one guy can make 40 hours of work per week, then putting 50 hours worth effort is not such a good idea. Wishing that tasks that require 50 hours of work, would magically be done in 40 hours is not a good idea.

It’s better to face the harsh reality: sometimes things can take bit more time, sometimes less. It’s not a good idea to live in a fantasy world where you think you can get all the features and special stuff in the time you wished. Who knows, maybe in the history of IT projects, you actually get everything completed in less time – but I wouldn’t bet on that.

If one starts to put more work than he can handle, it might lead to work done badly. Work that needs to be redone. It might lead to lower motivation (when you cannot accomplish all the tasks you planned, since there’s always more work you can handle). It’s doomed path.

Make realistic estimations, and help people to get their work done more effectively – but don’t think that wishing for faster progress will help accomplish that.

Havin Team Democracy Is Not Top Priority

The objective of a game development team is to produce results. Having democracy and “hearing everybody” shouldn’t be top priority in every decision making. There are some reasons for this.

Democratic votes are time consuming
That’s the main reason why there should be leader in the team who is willing to make decisions when necessary. If you use “democratic voting” – hear what everybody has to say – every time you try to make a decision, it will be darn slow. Sometimes you should just cut corners and decide stuff on your own.

It might slip into being fake democracy
If people are just heard (but nobody is really listening), then you are just faking democracy. You are asking what people say, but then do whatever you already decided. That means wasted time (and basically is pretty annoying).

Democracy might indicate that you are a clueless leader
This is bit of an exaggeration, but think about it. If you are the leader, and you are always asking “what are you guys thinking about this” and “what are you guys thinking about that”… then people might get the impression that you don’t want to make decisions.

Leaders should bring vision and goals – people want leader to lead.

A word of warning. Being tyrant is equally bad (or worse). You have to keep the team motivated and ask their opinions now and then. Balance is necessary.

The point I want to make here that “having democratic team” over “having team that produces results” is not such a good idea – since the goal is to actually produce something, not make sure everybody gets heard always.

How to Minimize the Pain When Firing People

Firing people might be of the toughest things game producers may face. Luckily I haven’t faced that situation for some time, but the recent discussion regarding how to deal with a slacker got me thinking about the firing.

Strangely, I believe one of the most important elements in the process is this: if you need fire somebody, don’t delay the firing. Postponing the decision and hoping to things to work out is not always the best solution. In fact, not firing somebody can have several nasty effects:

  • The guy who should be fired (and is not) will cost money (his salary needs to be paid).
  • The guy might slow down the project (if he is not suitable person for the project) as he still needs management.
  • The guy might harm the working environment (if he has negative attitude it can be bad for the morale)

Sometimes people still want to avoid firing, and reason this by saying “that they want to minimize the pain”. There’s just one problem with this approach: firing won’t get any easier in the future.

My reasoning is that people shouldn’t hire and fire people without good reasons. I believe that postponing the “inevitable” is not a good strategy. If you need to do something, then just do it. If you need to fire somebody, then fire him. Minimize the pain by not postponing the firing process.

Don’t Base Your Project Decisions on Assumptions

Yesterday’s I posted a blog reply to question that was posed at the forums: How to deal with a slacker. Today I wanted to emphasize one important factor when making decisions: making assumptions might not be the best way to deal with things.

If you think that somebody hasn’t get stuff done, be absolutely certain that you have clear evidence about that.

And by “good evidence” I mean that you’ve specified what the guy should do, and then compare the results. The following type of assignments are quite good examples of “clear evidence”:

  • You’ve given assignment to a person to create a document that contains game requirements. The document never arrives.
  • You’ve given a written list of tasks that require person to create a list of graphics engines for the project. He has said to you that he will do that, but the list never comes.
  • You’ve asked the person to program part of the game (such as “basic AI where the computer will chase the player”), yet you don’t get to see any lines of code.

Here’s some examples of “bad evidence”.

  • You wanted (in your mind) that the guy would email the rest of the team – but he never did. Well guess what – perhaps the guy didn’t know that he was supposed to email them.
  • You asked the guy to “help you out” with the project, and aren’t happy with his performance. Well guess what – perhaps the guy has a different idea what “helping” means. Perhaps he thought it would help doing the game design, and you think it meant doing the project schedule.
  • You give a task (by email) but never get it confirmed. While it perhaps shouldn’t be your task to make sure everything is confirmed, you must be aware that the other guy might never received your assignment. If he hasn’t confirmed that he understood what he needs to do, then I wouldn’t assume that he is going to do much about it. Bottom line is: get things confirmed.

When you give assignments, you might want to consider these two factors:

  • You listed clear tasks or defined what “responsibility” really means in writing. By definition, it must be possible to say when the condition is met. Avoid situations where you can say that the task is “almost finished” or “maybe done”. You should be able to say that the task is either done or not.
  • Make sure that the other party confirms and understands what he is supposed to do. In army they asked us to repeat the commands – and there it worked pretty well. Sometimes you might require the other guy to tell that he knows what you expect from him.

Don’t assume that the other guy understands what you expect from him. Don’t base your decisions on assumptions.