Chances are you are reading this because you want to make a great game and have come to a realization; you don't know how. Sure, you may know how to make a game but that's not quite what I am talking about. I speak of that magic formula you are looking for to make your game great and not just 'a game'. It looks sort of like this:
(programing art sound)* n(t^g) = amazing game
We all want to know what must be done to ensure we make a great game. Nobody wants to spend all that time and work on a dream project only to have it flop. So lets break this equation down.
Programing art sound
At this time I need to cover some basic points. Firstly, you have to know about programing, art, and sound. You need to understand math (a core part of programming) and you need to understand how a computer works. Not knowing what a pixel is and what it has to do with RGB is completely unacceptable. If you want to make games in the indie scene (or really any scene), your ability to do so is going to be directly affected by your lack of knowledge in any particular area. You don't have to be a genius mathematician or Bach or Picasso to make it work, you simply need to be educated and always wanting to learn more. I suck at math; I haven't taken a math class since my second year of high school, but I don't let that stop me from trying to understand and learn trig. The internet is full of resources. Learn.
You may say to yourself, "Yes, but I am a genius designer and will simply outsource all that tedium to others and spend my time designing the game." It is true that there are game designers who do nothing but the fun part, but unless you are already a senior game designer at a studio (you worked there way in) you will not be able to simply "design" games. It's like saying I am a genius composer despite the fact that I can't read music or play an instrument. To be sure I could dream of a better song than what I just heard on the radio but have I actually made one?
There is also a lot to be said for harmony of design. If you are an artist then you can visually describe to another artist what you need. If you are a programer, then you will understand why yours, or someone-elses code isn't working. If you understand technology, you realize you can't make assassins creed combined with wow on a low end phone. You will understand problems before they arise and you will be able to work on those problems and anticipate further problems. Game making is an art. An incredibly powerful art that combines many different disciplines. If you can't see the beauty equally in all aspects of the game then you are missing a key point. I believe anyone can learn to do anything. They may not be as naturally gifted as another individual but with practice and hard work, you can still be decent. Are you an artist? Are you a musician? Are you a mathematician? Can you program? Work at becoming these things you are not- even if you are working as part of a team. The more you learn the better you will be.
Do you know what an amazing game is? How many can you name? What makes them amazing? I realize this is completely subjective which is why it is important to ask. You need to be able to inject objectivity in matters that seem completely subjective.
If you think every game you play is great then you may have defined "great" a bit to loosely. On the other hand if you can only name a couple then perhaps your viewpoint is too narrow. You need balance but you also need to be able to examine extremes without condemning them too early.
If you think a game is an "Amazing game" because you like it then you are missing a huge point; Objectivity. You have to be able to judge and analyze what makes something great without your own emotions clouding the issue. Mario 3 is not one of the best platformers of all time because I like it. That is an incredibly narcissistic view point. Rather, it is one of the best platformers of all times because of x,y,z...
If you can break down what made something great then you can begin to understand what needs to be done to make a great game as well. You also have to consider the relevance of history. Why was Mario so great; because of context. It did things that no game had done, or it simply did them better. Is it still a great game? If it came out today, would you play it? Being able to honestly answer these questions will begin to clue you in to what needs to be done.
If you can create a framework of mind that allows you to define "greatness" in a game and then apply that in the same objective way to your own creations then you will know if you are on the right track.
Hey! Wait a minute! This isn't telling me how to make a great game!? What about the formula???
You have probably been wondering what this is about... let me explain. Like I said before I suck at math but the way I am reading this is that n is the important part. t^g is simply growth over time to scale n by. If you practice n over t time at g growth rate... Like I said, I am bad at math... So here is is in a nice step by step.
1. What kind of game do I want to make?
2. Is this reasonable given my skills and time? If no then try step one again You can't make COD by yourself...
3. What has made other games similar to this one great? Why?
4. What is new about my idea? What will make people want to play my game instead of an already released similar one? Perhaps there is a game you like but it fails to meet some of your expectations and so you want to make a better version of it. You need to think long and hard about this... This is like opening a burgerking next to mcdonalds in a small town of devout mcdonalds lovers. You need to be unique and different. You need to be so much your own that people don't call your game minecraft2. You want your game to be 'your game'.
5. Prototype. Don't think something is fun until you try it. Test your ideas out. measure them in the same way you measure other games you play. Is it fun? Is it engrossing? Why? What can be improoved?
6. Refine what works, toss what doesn't. Let your friends play. Friends you trust for an honest opinion. Don't make people play your game that hate that kind of game unless they are completely objective. You can't make something that everyone will like. Make sure you know your market. Who are you targeting. Study these demographics and don't assume anything.
7. By now, with alot of honest work you should be at something taking on a form of coolness. Don't take short cuts and do everything right. If you are making a mario like game then it better have all the best features of any of them. The camera needs to be smooth, the jumping variable. If something feels wrong then it is. Study and play other games. How did they do things? Why did those things work? will they work in your game? Don't copy. Improve. There is only so much you can do in the case of jumping but make sure you do it all and then some.
8. Depth. How far can what you have go? Is it fun to control the player or whatever it is you do in your game? Once you have this down you can start really designing your game. You can mess around with object placement, you can tweak values. But you need to think about goals for your player. It may be fun to run around but think about goals to keep the player occupied.
9. Refinement. You have now successfully made the central working theme of your game. Now you simply need to make your game. lawl. The mechanics are down. Everything has been tested. Everything works. It's fun. You have tested the player in the prototype and you are satisfied with all that you have implemented. The abilities of the player object should almost write the levels for you. Sure, there is a lot of creativity that comes into play at this point but that is beyond the scope of this article.
Just remember; with enough hard work and honesty, you can do this...
Here are some links to useful informations:
Cos and Sin, angles, and more! -> helixsoft.nl/articles/circle/sincos.htm
designing a game "feel" -> gamasutra.com/view/feature/130734/game_feel_the_secret_ingredient.php
Art for programers... gamefromscratch.com/post/2013/06/11/Creating-art-for-your-game-when-you-are-a-programmer.aspx