If you were to prepare an elaborate meal that you’ve never made before, would you follow a recipe or just wing it? Hopefully you’d decide to follow a recipe. The same principle applies to game development. Programming a game with absolutely no guidance or direction is not the wisest of ideas. Ideally, you should create a thorough plan to help prevent any catastrophic design errors from occurring.
Determine Your Goals
This first step can easily be over looked, even by experienced game programmers. It’s crucial to decide what you want to accomplish by making your game. Ask yourself this question: Why am I making this game? Some good answers are to learn something new and to have fun. An answer that you never want to have is that you just want to make money.If your only goal is to make money, chances are you will fail at making your game. It’s simply a poor motivation that will lead to laziness and low quality games. And not that I want to burst your bubble, but most games that are commercially released do not bring in much profit. Actually, this can be interpreted as a solid life lesson, too; money isn’t everything, so don’t let it control your life.
Choose Your Programming Tools
Next, you need to choose how you will go about creating your game. You’ll need to choose a programming language to write your code in. I recommend:
Choose wisely so you don’t regret your decision. It’s no fun realizing that you need to change languages when your game is already half way done!
To turn games into full blown masterpieces with graphics, you’re going to need a graphics library or game engine. (There are very slight differences between the two). If you’re looking for specific names, check out SFML for C++, PyGame for Python, and Slick2d or libgdx for Java. Objective-C is usually only used for iPhone games (or Mac desktop games), and for that I recommend cocos2d.
Think About Your Skills and Feasibility
It’s important to be honest with yourself and understand what your capabilities are. Do this feasibility test to see if the game you have in mind is possible:
Grab a sheet of paper and write down the following categories:
- Knowledge of Programming Language:
- Knowledge of Graphics Library/Game Engine:
You’re going to rank yourself 1 to 10 in each of these categories on the criteria I list below.
Under “Time,” think about how big your planned project is. Do you want to create a clone of Pong, or are you looking to make the next best RPG? Next, assess how much free time you have to accomplish such a project. Based on these two factors, rank yourself 1 to 10.
Next, evaluate yourself on a scale of 1 to 10 on how proficient you are at your chosen programming language. Ask yourself: Have I watched or read tutorials on this language in the past? What sorts of programs have I made with this language before? If you haven’t ever made a program with your programming language of choice, stop right there. You need to have created some basic, non-game programs before trying to make a game.
Now you should evaluate yourself on your knowledge of your chosen game library/game engine from 1 to 10. It’s alright if you’ve never used it before, so long as your project isn’t too complicated.
For the category of money, you’ll need to first estimate the money your game will cost to create, then figure out what your budget is. It wouldn’t be a bad idea to make a list of all of the things that will cost money in your game, including: art assets, sound effects, workers hired, and other resources needed. Once you’ve made a rough estimate of how much this thing’s going to cost, decide if you can sacrifice this amount from your personal savings. Rank yourself accordingly.
You should now have a score for each category from 1 to 10. This will help you determine what you need to focus on strengthening to make a great game.
Keep in mind that this test only covers four resources needed to create a game and is not even close to being all inclusive. It’s designed to hit some key points that are necessary to the game development. I recommend being as honest as possible while completing the test and while reflecting on the results. If you end up with a 2 out of 10 in one of your categories, it’s likely that you either aren’t ready to make a game or your idea isn’t feasible.
One last thing: recognize that you probably won’t be able to create the next Grand Theft Auto or Call of Duty without millions of dollars and a studio of people. Sorry 🙁 But hey, not all great games need to have breathtaking graphics or complex storylines!
Hiring Others to do Work for you
Sometimes you just can’t do it all. Maybe you lack natural talent, or maybe you simply don’t have enough time. Whatever the reason is, hope is not lost! If you have extra money laying around, you can hire a freelance worker to complete some of your tasks for you.
Many freelance workers charge very low fees. The logo for Modern to Me was made by a very talented artist who only charged $5 an hour. However, keep in mind that sometimes you get what you pay for. Nine times out of ten, it will benefit you to cough up an extra buck to get a product that is higher in quality. Workers that charge more money might produce higher quality content.
You can get all sorts of things done on freelance websites. Whether you need sound, graphics, programming, marketing, or search engine optimization, there will be someone waiting to do it for you – for a small fee, of course. These sites make game development a lot easier, especially when you’re working as a one man team. It allows you to focus on your strengths and let a professional make up for your weaknesses.
My personal favorite freelance website is oDesk.com. I’ve always had positive experiences while working on oDesk. They have tons and tons of categories you can find workers under. Plus, most of their rates are decent. The best part about oDesk is the time tracking tool they have workers use. Every time a worker wants to log hours to get paid for, they have to turn on tracking software that oDesk supplies them with. This monitors their activity and takes occasional screenshots of their work. It sounds a little invasive, but it helps prevent anybody from getting scammed out of money. Additionally, if you disagree with time that was logged, you can file an appeal. I’ve never had to do this myself, but it looks like oDesk keeps the process quite smooth.
I wrote more about hiring other workers here.
Planning out your Code
Deciding not to plan out your game’s general code design is easily one of the worst things you could do for yourself. Check out what happened when I decided not to plan out my shoot ’em up game:
Obviously it screwed me over. The bugs in the game were too horrible to fix, so I ended up scrapping the project.
You must know your programming language and graphics library well to be able to plan out your game code. I recommend becoming proficient in both of those before continuing on with planning out your game. Anyways, there are numerous ways you can plan out your game code. You should use a planning system that makes sense to you. I prefer to plan out my games visually. I like to use my white board to create a flow chart. It helps me segment my game into smaller, more manageable sections.
In your game plan, be sure to include all game files, classes and functions (if you have no idea what a class or a function is, please learn your programming language).
Starting With a Strong Mental State
Now that you’re ready to start developing your game, you need to establish your mental attitude. It sounds childish but it is crucial to being successful.
I’m a big golfer. All sports require mental fitness; so much mental fitness that most professional athletes (especially golfers) have sport psychologists. Many professional golfers have to quit due to a lack of mental fitness.
Although computer programming is no sport, I truly believe that the same principles apply. If you’re not confident in yourself, there’s no way you’ll be successful.
Whether you think you can, or you think you can’t, you’re right. -Henry Ford
My father also gave me some wise advice the other day:
There’s no such thing as talent, only hard work.
When you fail, it’s not over. Just put in some work. And care.