What are your tips and tricks to successfully finish a hobby game project in your freetime?
How do you motivate yourself to keep it up and drive right through to the finish without losing interest or motivation along the way?

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.
If this question can be reworded to fit the rules in the help center, please edit the question.

1

I think that your question is subjective and argumentative.
–
alFadorJul 14 '10 at 19:49

68

@alFador: I think tips on effectively managing a project are neither subjective nor argumentative. There are a lot of processes out there that try to solve problems like project management. But you are right on keeping yourself motivated, that's a rather subjective topic... I'll change that.
–
Michael BarthJul 14 '10 at 19:55

I would argue there is a lot of advice out there on how to keep people motivated. You're dealing with people that had to find tricks to keep themselves going. Some of those tricks work across most of the board (ie: break down a large task into much smaller tasks).
–
David McGrawJul 14 '10 at 20:32

3

Motivation tips may not be argumentative, but they're definitely subjective. Different people are motivated by different things.
–
CyclopsJul 14 '10 at 23:19

We're motivated by things with differing success levels, but there are still motivation tips which cater to our basic human instincts and psychology. Read up on Maslow's hierarchy of needs and the Hawthorne effect.
–
PolynomialNov 24 '11 at 16:33

17 Answers
17

Set tiny milestones. Having a goal like "item system works in my RPG game" is all well and good, but that implies a whole lot of under-specified functionality that you probably didn't even know you needed. What about "graphics environment set up"? Or, "A sprite is displayed on the screen."

Do a little bit each day. Marathon sessions are great and all, but you're trying to squeeze a long-term commitment into an already crowded life. If you do a little bit each day you are making measurable progress and establishing a structure within which you can achieve your milestones.

Scale yourself back. Whatever your grand vision is, try and figure out what the smallest achievable portion is and do that. Making an RPG? Start with one quest and no NPCs. Making a platformer? Start with one level and no enemies.

Prototype early. Before you sink a bunch of your hard-earned hobby hours into a game, figure out if it'd be fun first. There's nothing so dispiriting as working your ass off on something for dozens of hours only to find that the basic concept sucks.

Develop something iterable. My favorite hobby software projects are the ones where the basic concept allows for later tinkering. Is your game like that? Can you ship something and then revisit it later and add cool stuff?

Don't build an engine or a framework. You don't want an engine, you want a game. Don't worry about the framework-y, reusable bits until after your game is shipping. Once you start on the second game, then you can go back to your first and see if there's anything you could bring over. That's not to say that you shouldn't use sound software development praxis, but don't start by writing a Sprite class until you know what you need your sprites to do -- you'd be surprised how little it'll turn out to be. Start with a Hero class, then a Monster class, and then -- oh look! -- there's some common stuff!

Shipping is a feature. You're never going to finish your game, you're only going to abandon it. ( = What is the minimum amount you can do before you're not completely embarrassed to show your game to someone else? Chances are, you can do less than that and still have a game to be proud of.

In line with "Shipping is a feature", don't get caught up in constant revisit->reimplement->repeat cycles. You're not going to get everything right the first time, the tenth time, or ever. There will undoubtedly be features or mechanics that you are not completely satisfied with. Avoid the temptation to keep going back and changing every little thing. You don't want to end up like Duke Nukem Forever :).
–
Mike StrobelJul 16 '10 at 3:31

25

+1 for "Do a little each day". That's the single best hint you will get. Momentum builds up pretty fast when you just do a little every day. One or two skipped days will bring you to a grinding halt.
–
AndreasJul 16 '10 at 13:46

24

I think I need to make a wallpaper with this answer.
–
KlaimSep 27 '10 at 14:09

The first thing in your mind should be that you're working for yourself, and your own entertainment. Don't let your project be hijacked by others expectations and desires,
particularly when your interests change over time.

Another tiny tip.
- Assemble a team
- Communicate with your team on a regular basis (skype, live, email, etc.)

All the tips mentioned by other are good.
If you create a team, the team members can support each others.
Also, by having regular meetings, it encourage you to work on your project to show progress or reach your deadline.

Other people can be your greatest resource.

That's how I assembled my game studio. We are three partners working on the game for the last two years as a weekend hobby. We are seeing the light at the end of the tunnel now.

I use collabtive for my projects, and this allows me to setup tasks and milestones. When I work on a project with multiple people it also allows me to chat with them and assign them specific tasks. On top of the project management software (which is open source), I also use Subversion to help allow multiple people to work on the code at one time. Both of these programs run on a small linux server, and I have honestly not had one issue with this setup yet! :)

1.
Buy a notepad for keeping every idea you'll get. You don't have to actually put them in your game but you can use them for further inspiration.

2.
I'm also trying to hold everything I still have to do on a corkboard or a blackboard so I always can look for my next targets to finish.

3.
Don't try to implement things the best way on the first attempt. Try to get things running and make them nice in a later step.

So you could have different features on different states of niceness:

End of Day1:

Feature1:Bad but running

Feature2:Planned

End of Day2:

Feature1:Made the solution better

Feature2:Bad but running

End of Day3:

Feature1:Acceptable state of niceness

Feature2:Acceptable state of niceness

It helps a lot in motivation if you get things running first before considering making them nice and smooth. The downside of this method is, that you will be coding more code that you'll put in the trash in the end.

4.
Dont implement too much features parallel. Try to conentrate on <=3 features at once. So you have some place to switch to if you stall at one feature but not that much features that you are overwhelmed by the ammount of work to do.

To manage a hobby game project you need a few things: motivation and the proper tools.

My answer is going to focus on using the proper tools, as if you're serious about making a game in your free time, you hopefully already have the motivation down. :)

I'd recommend using some form of version control for your game. Sites such as Github or Bitbucket provide hosting for git and mercurial (bitbucket support mercurial, not github). This is your first step to organizing your code and assets.

Next is being able to well define a backlog of tasks and features that need to get done. The best process for this is up to you, the developer. Some options include creating a Game Design Document (GDD), a Technical Design Document (TDD), and a Feature Backlog. A good sample for a GDD can be found here: http://www.runawaystudios.com/articles/chris_taylor_gdd.asp For the TDD, model it similarly to the GDD, but focus it more around the technical detail of programming. So what language you are going to use, framework, engine, and other technical specifics. Both the GDD and TDD will help you better understand the scope of the project and figure out what the list of to-do is. You can do this in the middle of the project if you've already started it, as it's always important to rescope and know what exactly your goals and features are.

Once you've got that done, you should be set to start developing. I've written a blog post on how to use github to effectively develop a game, including using their wiki features, issues for bug tracking, and just managing your project. You can find that here: Using Git and Github for Game Development

Defining soft deadline for your project may or may not help push you to stay on track. Every individual is different, and only you will know how to motivate yourself. Try out different techniques and see what works for you. Game development (and software development) typically take much longer than people initially estimate. So don't get discouraged and stick with it.

If you need more examples of GDDs and TDDs, I have mine in Google Doc's, and I wouldn't mind sharing them!

The short answer: Iterate, iterate, iterate. Start small, and get something running before trying to implement the whole system. It's still important to do some top-level design and planning, but being able to see what you're working with and playtest parts as you go is incredibly important to staying motivated; it's hard for me (and most any other programmer I know) to work day in and day out on something that doesn't actually show them visible results.

Get something on that screen. That's the mind set I'm in whenever I start a game.
–
Michael ColemanJan 17 '11 at 0:44

This mindset also helps me to simplify my code designs a bit. It forces me to think hard about what exactly are the most basic and essential components of the system, and build upward from those.
–
BillJan 17 '11 at 16:38

I have been working on my hobby project now for around 2-3 months. That means evening or two every now and then plus weekends occasionally. The project is maybe 2/3 done for a proper first release. It is maybe too early to call it success but here are the things that have kept me going so far:

I had a pretty clear idea what is the game going to be about. Pretty simple but offers many extension points for version 2 and 3.

I have been blogging and tweeting about.

I picked an area that interest me (JS + HTML5 Canvas + FB integration) and is different enough from my day job (CMS, J2EE, GWT/GXT)

I have a ritual of disconnecting my network cable before I go to bed. The next morning - I'm not online, so I have no sites to visit, no emails to read, no people to chat to, etc. So I naturally get straight to work on my game.

I don't connect again until I absolutely have to. If there's something I need online - I write it down to look up later, or use my iPhone's browser.

While it might be a good idea to do this(or add some sites to your host file so you just can't access them) i don't think this is an answer to how to manage a hobby game project.
–
DFectuosoJul 23 '10 at 5:53

9

@DFectuoso: Read the question again. You will find that my post directly answers it. It's not a complete strategy - but the OP didn't ask for one. I'm sorry if I've blown your mind by giving easy, practical, actionable advice instead of spouting something warm-and-fuzzy like "Do a little bit each day" or "Focus" and leaving readers to muddle out how to actually do that.
–
Andrew RussellJul 23 '10 at 6:32

If anything, this is one of the best tips there is. I'm working on a small hobby game, and getting maybe 10 lines done on days I work on it. It's not difficult, it's just I get distracted by Reddit, here, Facebook, blog sites, and IM'ing people.
–
The Communist DuckDec 4 '10 at 17:04

To-do Application
I use Things for Mac and ToDoList (free) for Windows.. Alternatively, you can jump onto sourceforge.net or codeproject.com to grab a to-do application. I like ToDoList. You will have a lot of sketches, ideas, design information that really needs to be aggregated into one spot. Having an application like this with your feature list will help you stay focused.

Small Tasks
"Implement Leaderboard View" is not a sufficient task. What does that involve? Break it down -

Create background artwork for leaderboard view

Create class methods that fetch score data

Create class methods that post score data

Create a view controller which will display a back button, reload button, and a table view

Implement the table view to load in the data from the model

Seeing the picture in finer detail will reduce your chances of missing a key element of your implementation and will provide you motivation as you tick off each task.

Keep the Scope Small
Don't try to build Starcraft III if it is just you, scruffy, and purrdoodle. It's just not feasible. Lower your expectations and find something you would still enjoy building.

Eye-candy
Get something on the screen -- you may be surprised on how big of a jolt to your motivation it will be. I tend to focus on getting artwork early. In addition I also am able to work with a musician who starts showing me stuff relatively early as well.

Have fun
If you're slaving over your save state system all of this week be sure to follow it up next week with something that is fun. One of my fun moments was redesigning the animation system for my user interface.

Collaborate
You don't technically need to start adding people to your team, but talk to other people about what you are doing. Jump over to tigsource.com or gamedev.net and start networking.

Playtest
Start getting early feedback on your game. I'm talking about right after you finish your initial prototype. Let some of your friends mess around with what you have, get feedback, take notes, and revise your plan if needed. Be sure to test outside of your realm of comfort and cast a net that includes other game developers. Sometimes friends and loved ones are just not critical people.

Start a Blog
Talking about what you're doing allows you to build a brand for yourself. This is priceless when it comes time to shipping your product. Just look at what Wolfire is doing. They are absolutely pure win at building a brand for themselves.

Take a Break
If your mind isn't into the project at a specific time don't try and force it. Get up and go for a walk or take a quick nap. That is the luxury of being an independent. In the end you'll create a better product for doing so.

Why is Things selling for £45. It looks really nice and polished but can it do anything that free apps like RTM or Todoist can't do?
–
SpideyJul 15 '10 at 11:53

They kept it extremely simple. Some people like simple and polished, but it's hard to say it's worth £45. If you're a Windows user, I really like this one -- bit.ly/9dAelc
–
David McGrawJul 15 '10 at 16:50

1

Very nice summary. Too bad you can only accept one answer here, else I would accept this one, too. Thanks for the effort, though! :)
–
Michael BarthJul 16 '10 at 11:12

I have a good imagination, but poor organising skills.
On the creative side, I have found it helpful in my case to use a tool to help me keep track of everything, and impose some overall structure. I use Writer's Café, which is flexible enough to be adapted for game design. I'm sure there are other tools available.
Most important, I think, is to set milestones. That keeps you focussed, will allow you to measure progress, and should give you a sense of achievement when you reach them.

Based on my own experience it's easier to stay motivated if you've got others working with you. So:

Get a few other developers who can share your excitement about the game. Excitement can be contagious!

Set up a mailing list (Google groups are easy to set up), and post to it often to keep momentum going.

Start by getting something simple that works. When I was working on Trosnoth (side-scrolling platformer), the starting point was just a single stick figure who moved left and right and jumped. From there, we slowly all added bits and pieces until it did just about everything.

Certainly my key tips would be share your excitement and keep the project in a state that works.

The biggest problem with hobby projects is not having a well defined scope. Many people start by wanting to make the best game ever with hours of gameplay and all the cool ideas they have. Instead, you should try to scale down your idea to something manageable and then come up with a reasonable schedule. It's true that deadlines are at odds with the game being a hobby project and not a full time job, but they are good for staying motivated and breaking down big tasks into small manageable ones.

You can also keep a version history file that is updated every time you add something to the game. Better yet, you should use version control and use the commit history for that. It's a good way of measuring your progress and staying motivated later (by looking at all the stuff you already did).

Stick notes also work. That's what I do. When I think of something I want to do, I write it on a sticky note and stick it on my hutch. Simple things like, "get window onto screen" "Get player on screen" "Get player to move" "get player to shoot". when i complete it, i pull it off and add it to the completed stack. Seeing the problems solved in a physical form takes on a whole new meaning versus seeing a number or a listing on the monitor I think.
–
AzaralMay 2 '12 at 19:41

1

I cannot agree more with the version control. Yes its useful, but the main benefit for me was it actually made me write down all the awesome things I'd done; which really helps keep me motivated
–
Richard TingleApr 29 '14 at 9:26

Start by creating a game that is stupidly simple, and get it finished and published online somewhere. Remember that even something seemingly simple like pong could turn out to be quite complex if you're new game development, and starting with a simple game will show you whether you have the patience to take on a bigger project.

I worked on Snapshot (www.retroaffect.com) in addition to my full time job for almost 8 months before turning it into my full time job. I would work all day, then come home and work on Snapshot until I fell asleep. Sometimes it was a little too much, but other times (most of the time) it was awesome.

Also remember that if it is something you are just doing for fun, remember to keep it that... fun. If you burn yourself out then your project with either never be finished or it will show in the final product.