It's no secret that a lack of motivation is the thing which kills nearly every indie game project. But it doesn't have to be that way!
With our current project, Elsinore, we've faced a number of these social hurdles in getting the game off the ground. We're currently well into our playable alpha stage and the team is going strong. Many of these lessons we learned the hard way; but many, we think, are also applicable to other teams. Hopefully some of the tips in this article can help you and your fledgeling indie team get running and stay functional.
Teammates Matter (So Be Super Picky)
Maybe this scenario sounds familiar, if you've delved into indie dev before: you find some friends and form a team around your awesome game concept, and everyone's excited. For the first couple of weeks, things go super well -- everyone's invested. But suddenly, something changes. Email chains end. Life intervenes. People get sick, or have to work late at their day job, or they're too tired to write that design doc. You start having conversations about tasks knowing full well that they won't get done, and the vision of a final product which once loomed close now seems impossibly far away. Before you know it, the project's a bust.
There are two key questions you should ask yourself when forming your team. One, can these people self-motivate, given the right circumstances? And two -- do they have the fortitude to keep going when the "honeymoon period" wears off?
Unfortunately, it's nearly impossible to motivate people who can't self-motivate in the first place. You're going to need to look for these rare dedicated types up front, and filter out anyone who doesn't make the cut. It sounds tough -- but making games is tough. Looking for people who have made games professionally will help -- most of us on the Elsinore team have worked on video games for a living, in some capacity -- but that alone is not always an indication of reliability. A simple way to test someone's reliability is to give them a simple task up front. (More on task setting below.) If they're unable to complete a small, relatively easy, explicitly concrete task within a set period of time, then they're not going to be reliable in the long run. Talk to them -- give them a little extra time to get it done, or gently let them know things aren't working out and move on.
Eventually, you'll find a team of folks who are as dedicated to & excited about the project as you are. Be persistent, be picky, be diplomatic when someone doesn't make the cut. It sounds harsh, but it's better for the overall health of your team in the long run.
Make the Work Fun
Especially if there's no money involved, you need to get creative on finding ways to engage an indie team. Maybe you've got an artist in the group who's always wanted to try her hand at game design -- if so, let her take a design feature and try her hand at writing a spec. Maybe you've got a teammate who works in a completely different non-technical field during his day job, but really wants to learn to write action gameplay code. Let him have at it! Maybe your initial art spec called for a desert area, but your artist just finished watching Nausicaa and he's dying to try some forest scenery. Your job is to give the thumbs up and figure out how to work peoples' desires back into the project scope.
If someone's excited about an idea, try to figure out how you can support them and feed that excitement back into the project. Can you make it work with the project's overall vision? When talented people are stoked about their work, they make amazing stuff, and the whole team benefits. Try to let people work on things they really want to work on as much as possible.
Of course, taking this to its extreme can be bad, too. If someone's ideas dramatically increase the scope of the project, take the overall game vision in a completely different direction, or tread on another teammate's duties directly, carefully consider the benefits of implementing that idea. Be flexible, but don't let other peoples' excitement completely drive the project. It's a balancing act.
Set a Time and Work Together
This is the best way to get work done. Set up work sessions on a particular day and time and work as a team. Whether that's over Skype, Google Hangout, or in real life, it needs to happen if your team's going to make reliable forward progress.
I've seen many teams assign tasks, with a nebulous due date of "next week." But, as usual, real life gets in the way, and tasks slip. When people have a chance to clear their schedule, sit down, and focus on nothing else for a little while, good work gets done.
In the case of Elsinore, our team meets every Sunday morning at 10 AM over Google Hangout. We work until around 1:30 PM, then disband, with each of us having made a decent amount of headway on our tasks for the week. Try to clear a 2 to 3 hour block of time that works for everyone (or at least, most of the team). If you're finding that certain members of the team seem to want to discuss things at length -- for example, an ongoing code issue which doesn't affect the rest of the team -- break that out into a secondary meeting at a different time of the week.
Video chat isn't mandatory, but if you're not in the same physical location, I've found it's a great way to get people to loosen up and socialize as a team while also being able to have quick group discussions on any issues that come up. A two-minute video chat discussion will go infinitely further to clear up confusion than a 10-page email thread.
Another benefit: With a concrete work session planned each week, we know we can do anything we want with the rest of our weekend & weekday evenings. We feel good that we've gotten some serious work done, but also don't feel overtaxed. Especially if you have a regular day job -- which almost all of the Elsinore team does -- motivating to work on a project, even as the team lead, can be incredibly difficult without concretely building it into your weekly schedule.
Create & Track Realistic Tasks
We live in the age of free productivity software. Trello, Google Docs, and Hansoft are all easy, free ways to track your team's progress; there's also JIRA, which is $10/month for small teams. If you're even slightly serious about running an indie team, sign up for one of these now.
The screenshot above shows a snippet of our Elsinore progress board. Each column tracks the state of certain tasks (the backlog of what needs to get done, things being worked on right now, and things which are done). Absolutely everything we do gets thrown up on the task board -- as you can see, even this blog post is marked as a task under 'Working On Right Now.'
Trello allows for more detailed task information under each task, which members can see by clicking on the task. At first, I suggest trying to break down tasks into really small pieces; instead of "create main character in 3D," for example, create five tasks: "create concept art of character," "model character," "texture character," "skin character," and "rig character." The smaller the size of each task, the more team members can feel they're making meaningful progress, even if they haven't managed to finish a large task in its entirety.
Make specific people accountable for a task, give them explicit directions on what the task involves, and let them know how to get started. Like so:
Bad: "Someone needs to get the main character up and moving."
Good: "Hey, Gina -- I'd like to assign you the character movement code. Can you get a default Unity character controller dropped into our scene and swap out the default character model for the model Brian made last week? You can find that model in the Google Drive."
Part II will discuss some more nitty-gritty details for team management. In the meantime, if you're interested in following the Elsinore team's progress and updates, check us out on twitter at http://twitter.com/goldenglitch!