Game Development doesn’t come easy. It’s even more daunting for the indie developer. Whether you’re just starting out or you have a few titles under your belt, here are some tips that every indie game developer should follow.
Some of these are more technical, while others may be more of mindset, organizational tip, or a productivity tool.
It might sound obvious but I can’t stress enough how important proper planning can be. Even for the smallest of games, a little planning can go the long way. Before you start building out your next venture, spend some time writing down your end goals for the game. What do you hope to achieve, when would you like to achieve this by, how will you work towards your goals, and how can you measure success?
Once you settle on your idea, you should spend some time conducting high level planning. This should include major features of the game, things that need to be in the game, some stretch goals, and maybe even a list of what your game should NOT be. From there you can iterate on the design and flesh out the design details. With more experience, you’ll be able to lay out the systems and components that your game will need to function. Next you’ll be able to dive into the technical challenges and get a better of idea of how long each step will take. Remember, you want to build a game that you can finish. Many times progress on a game will stutter and halt due to poor planning. By properly gauging the resource cost of each step, you can come up with a better estimate and set yourself on the right track.
Detailed planning can be a little more difficult. In-depth planning can sometimes be redundant, so it’s important to strike the right balance. You want to be able to pick up tasks and cross them off as you finish, but also add bugs and fixes to the pile when they appear. For smaller projects, maybe a pen and paper list can suffice. For larger, more involved code, I would suggest using a tool like Trello. There are also development methodologies like Scrum or Agile, but those are beyond the scope of this topic.
One of the pitfalls of development is wasting time into bad ideas. That’s where frequent iterations come into play. The faster you can iterate on ideas, the more likely you’ll find out if they are viable or not. This is where agile methodologies shine over traditional waterfall like methods. By being able to build features quickly, less time is spent into wasted efforts. Ideally you want to have great ideas, but if you happen to put all this work into a dud, you’ll be happy you found out sooner.
You should make it a priority to have a playable game (minimum viable product). Even if the art and mechanics aren’t perfect, you’ll get a good idea on how the game plays. You’ll get a lot of valuable insight from these iterations and be able to reflect and review your progress.
Many times I’ve heard developers say they don’t need source control because they are the only developer. That’s crazy! Source control is invaluable even on the smallest of teams. There’s really no reason not to use it, for the most part it’s free, there are plenty of online services you can use to host your repository, and even if you keep it local, it’s effortless. Some benefits:
- Easy “backup” of your code, revert to past revisions easily
- Test new features on branches without worrying about breaking old code
- Identify and fix bugs by looking at old commits
- Work with a team, how else would you share code, email?
- See what you’re working on, there’s plenty of visualization tools, but just a quick glance at your commit log can give you an idea on how things are going
One of Unity’s bigger success stories is their asset store. The asset store gives you access to millions of assets with just a few clicks. Even if you only work with free assets, it’s more than enough to help you prototype and iterate on early versions of your game. Don’t let a lack of artists on your team hold you back, many of the most successful games out there have nothing but programmer art. Use the asset store as a tool to help you bring your creations to life. There’s a little stigma surrounding asset stores and some think they are usually ‘low-quality’, however I disagree, see for yourself and make your own decision. For example this pack contains a great collection of music for almost any genre, at a low price.
This is probably one of the more important things to do, but get frequent feedback! I like to get a prototype as quick as possible with the bare minimum features and share with a few friends and family. Let them know it’s an early prototype that really is just to showcase the concept. Accept and listen to their feedback, sometimes they’ll provide great ideas that totally changes your game! This early and frequent feedback cycle lets you gain valuable insight on your game, you’ll need actual people playing the game to figure out if your controls are good or whether something is intuitive. A lot of times, as the developer, we assume something is easy to understand, but for a player with zero context, they might have a hard time.
Be Active In the Community
There’s a huge community out there for developers. My favorite places include the Unity forum, game dev sub-reddits, and various chat rooms on discord / IRC. These are great places to get feedback, advice, help, and even promote your game. The more interaction you make with the community, the better developer you become. Even if you are just helping others, it helps you become a better developer.
Are there any tips you think I missed? Which one do you think is the most important? Of course, all these should be tailored to your own style, but I think that every developer can benefit from each of these tips.