Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

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?

share|improve this question
1  
I think that your question is subjective and argumentative. –  alFador Jul 14 '10 at 19:49
60  
@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 Barth Jul 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 McGraw Jul 14 '10 at 20:32
2  
Motivation tips may not be argumentative, but they're definitely subjective. Different people are motivated by different things. –  Cyclops Jul 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. –  Polynomial Nov 24 '11 at 16:33
show 2 more comments

17 Answers

up vote 337 down vote accepted

These tips apply to any hobby software project, and not just games.

  • 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.

share|improve this answer
18  
+1 - Excellent answer. I learnt most of these tips the hard way. :) –  Alconja Jul 15 '10 at 6:36
3  
These are mostly obvious things that somehow everyone (myself included) forgets. Thanks for reminding everyone. –  MechP Jul 15 '10 at 18:55
28  
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 Strobel Jul 16 '10 at 3:31
22  
+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. –  Andreas Jul 16 '10 at 13:46
19  
I think I need to make a wallpaper with this answer. –  Klaim Sep 27 '10 at 14:09
show 6 more comments

I actually just wrote a blog about how I approached the design and development for my latest iPhone project. You might find value in reading it.

A few thoughts to leave here are

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.

share|improve this answer
    
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? –  Spidey Jul 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 McGraw Jul 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 Barth Jul 16 '10 at 11:12
1  
Very good list. Now I have to follow it :) –  Aidas Bendoraitis Sep 22 '10 at 2:24
add comment

My #1 biggest tip: Disconnect your network cable!

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.

It helps to have things like MSDN downloaded and available offline.

share|improve this answer
2  
Good idea, thanks. Gotta try this. –  bummzack Jul 19 '10 at 18:03
2  
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. –  DFectuoso Jul 23 '10 at 5:53
7  
@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 Russell Jul 23 '10 at 6:32
1  
awesome, I am going to switch off my WiFi seeing all my documentation is offline –  Steve Obbayi Jul 30 '10 at 22:31
5  
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 Duck Dec 4 '10 at 17:04
show 5 more comments

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).

share|improve this answer
3  
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. –  Azaral May 2 '12 at 19:41
add comment

The creator of Grauioutous Space Battles game, a lone indie developer, summed up some handy tips about making your own game in a blog post. Some of them can be motivating even for hobby projects.

Cliffski's Blog: How to stay motivated whilst programming a game

Excerpt:

  1. Code something you like
  2. Surround yourself with inspiration
  3. Keep a log of what you did each day.
  4. Do some shiny
  5. Hard lessons in money
  6. Stay aware how high the bar is (know your competition)
  7. Take short breaks.
share|improve this answer
    
Very nice answer, too. –  topright Oct 1 '10 at 16:46
add comment

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.

share|improve this answer
add comment

I've recently noticed that whenever I read another indie game developer's blog post about his updates, I immediately open my IDE and start working. So, my advice for keeping you motivated is: read other (game dev) blogs ;)

Here is a quick list:

share|improve this answer
    
Thanks for the list, you can have my vote! –  Ricky AH May 15 '13 at 10:02
add comment

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.

I'd definitely suggest reading over this: http://positech.co.uk/cliffsblog/?p=753

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.

share|improve this answer
1  
If you're an indie developer and you don't already read Cliff's blog, you're really missing out. Reading that blog alone is motivating. –  hokiecsgrad Jul 14 '10 at 19:52
add comment

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.

share|improve this answer
3  
Russians say "Один в поле не воин" :) –  topright Oct 1 '10 at 16:46
add comment

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)
  • The selected technology allows easy and quick tweaks, no compiling etc.
  • Everything is done just because it is fun. The game might work as reference one day but that is not the reason for working with it.
  • I have been kind with my friends, not asking feedback after each change.
  • My gf understands me :-)
share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
    
Get something on that screen. That's the mind set I'm in whenever I start a game. –  Michael Coleman Jan 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. –  Bill Jan 17 '11 at 16:38
add comment

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!

share|improve this answer
add comment

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! :)

share|improve this answer
add comment

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.

Have fun with it.

share|improve this answer
add comment

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.

share|improve this answer
    
You realize that this question is..... old? –  Pip Feb 4 at 0:28
1  
@Pip this ain't a forum, there's nothing wrong with touching old questions. In fact if you answer old questions with a great answer, there are badges for it. –  congusbongus Feb 4 at 5:24
    
@congusbongus true, but there are much better answers already, namely the first two. –  Pip Feb 4 at 22:09
    
@pip you do realize you're reading an old Q&A and commenting on it? –  ddyer Feb 5 at 19:16
    
@ddyer Ah, yes, but commenting on a new answer is MUCH different than answering an old question. –  Pip Feb 5 at 23:01
add comment

protected by Tetrad Jun 19 '13 at 17:21

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.