Interactive games are getting bigger and bigger. They started from a simple Pong game on a TV. Now they are pure art, with graphics, sounds, interactions and other stuff to make you feel the experience under your skin.
The simplest answer to a game is fun. How fun can fun be ? That depends on your style. Modern games are hitting the biggest market. And if you are a game developer, then you are rich. But making a game its not that simple than playing it. Even though the hard work can be payed off, you are going to get a big pain in the ass. Yes, sorry for the disclaimer but remember just one thing. Games are fun, and creating them is more than fun. Below we offer you some steps on how to enter the amazing world of game making.
How to start ?So you have your own ideas you want to throw into an interactive experience. Here you have two possible ways, whether you hire developers and artists to do the work or learn things on your own. If you want to get your hands dirty by yourself then you will have a lot of learning to do. First of all games are huge programs with lots of code, art, and logic going under the hood. You start with the first most important step : Programming. Yes, you learn how to program simple Hello World then go into some advanced stuff. Remember that experience does its job, and you will get yourself capable enough to build large programs like games. However, this may take a little bit longer depending on your effort and time.
There are tons of programming languages which you can use to make awesome games. Some of them are powerful than others, some are related to specific targets only but its not important what you choose, the important thing here is that you are getting yourself into the world of machine thinking.
C Programming language
A bit outdated but its the ancestor of C++ language, and is still the most powerful language. Lots of libraries and drivers are made with this language. You will learn basic stuff from this low level language.
C++ Programming Language
C++ is the enhanced version of C language with lots of stuff and functions to help on more advanced things. This language is used by large companies like Microsoft or Apple to build their operating systems and tools.
It is powerful enough to do anything you like. Your skills and imaginations are your limits.
C# Programming language
This is also another awesome language to learn. But if you are just starting out then this language should not be the first for you to learn, since it works on higher level stuff and it hides basic concepts.
Java Programming language
Java is awesome. Lots of things are made with it. You play games on your smartphone ? They are made with Java. But again this is also high level language and if you are a beginner you will have some trouble with basic concepts of programming.
Tip : Read this article to help you choose which programming language to learn Which programming language should i learn ? Answer yourself !
Whoho, you made up so fast ? You already own a programming language ? Well then lets continue. Firstly don't care about art music and other stuff. Just learn how to program and then refer to higher advanced stuff. There are awesome communities out there that talk about everything for games starting from novice to professionals. So if programming is not that easy to learn, how can i start simple ?
There are no simple and lazy ways to do professional and advanced stuff. You need to focus on your target and push forward when you find it hard. No game is made by just dragging and dropping or copying and pasting code. So you need to focus on learning and getting yourself skilled enough to do advanced stuff. Go ahead and grab some books and get yourself into learning !
Now you should take some things in consideration first. A graphics engine is not an easy thing to make. There will be lots of physics and math going under the hood. Based on the world your game will be surrounded with, you will have different objects that will react on the world they are living on. For example in real world we have gravity, wind, tornado, hurricanes and other stuff that unleash specific force upon specific objects. And these objects will react to that force with falling, flying crushing etc. Basically you will need to program everything and implement all of physics and math you've learned since you were born.
But no no, i don't want to scare you. You will not spend your entire life trying to learn math and physics and how to program things to work like in real world. As you will get into deeper adventures with programming, you will see that making things to work in global and be reusable again in other projects will make your life easier. And by this you will make tools that will help you in further development. This is exactly what big companies do. They build tools firstly and then use them to create their art. Thankfully some of them release their tools for free for us to use. Now this is called : You do not have to reinvent the wheel.
There are lots of graphics engines out there that help you build games. Starting from simple libraries which you use and can expand on, to completed and 100% robust software's with all of the tools ready for you to use. And you don't have to thing about physics and math ( well you will need a little ), and the graphics engine inside.
You will focus only on your game's art logic and storyline. I will name few here so you can check them out :
Full scale engines
Unreal Engine http://www.unrealengine.com/udk/
Cry Engine http://mycryengine.com/
I cannot name them all here, since there are lots of them rather i have listed only those who have bigger documentation and support online, and of course are free. Note that these are powerful engines and tons of games are made with them, even big companies try not to waste their time on reinventing the wheel, rather focusing on the game itself.
Now i will name some libraries if you prefer to build your own game engine but not necessarily delve in to core operating system functionality.
Again i cannot name them all since there are lots of them and they are continually being updated. As i said there are awesome people out there that think of us. Note that these are not full blown tools like Unity3D rather they are low level libraries which you can use on your projects to simplify things. And you will need to to adopt on the programming language they are using. These libraries help you simplify core things like direct interaction with graphics card and other operating system stuff.
2D vs 3D
Now that you have your engine, you will want to think of what kind of style will your game be. There are two possible ways to display and draw your game on screen. 2D and 3D. These are different worlds and ways your game will live with. Things will be different in 2D and 3D. See this picture as an example. As you can in 2D worlds you have flat images with no depth, that will be drawn on screen, and you will never see the world on their other side. But in 3D you see everything. Objects have depth and shape like in real world.
You move and rotate around objects. Its interesting how 3D objects are drawn into 2D screen of your monitor, but that is way out of this articles scope to discuss. But what you will need to know is that 2D methods of displaying things on screen are different than that of 3D. In 3D you have polygons which are made up of triangles, which are made up of vertices which have position of x y and z coordinates in the open space 3d world. Hundreds of thousands of these polygons can make up objects and worlds. And all of these vertices are calculated in computers CPU and are drawn with the help of graphics card.
And by calculation we mean that the CPU needs to take care of their position scale and form in 3d coordinate space.
Since this is also hard to do from scratch, there are libraries that communicate directly with the graphics engine and tell them how to draw things on screen based on instructions you have.
OpenGL and DirectX. These are low level libraries that communicate directly with your graphics card in a language you would never be able to talk with in thousands of years, and translate commands you gave
by programming so that the graphics card knows what to do and how to do it.
Although huge battle between these two is still going on, they do the same job and they are awesome on their way. DirectX lives in Windows platform, meaning that if your game uses DirectX to draw graphics then it is forced to run on Windows only. OpenGL on the other side is cross platform and works on all operating systems which means that your game will be able to run on all of currently available platforms. Also OpenGL can run on mobile devices and tables, which currently are getting smarter and capable enough to display full blown 3D and 2D games with amazing graphics.
The amazing world of Indies
Today you have unlimited possible ways to develop a game. Whether using already premade tools or use libraries to simplify things, you will need passion and patience to complete your projects. Keep in mind that if you are an absolute beginner, start simple but thing higher. Never try to challenge yourself into harder stuff like 3D engines if you are just starting out but let them be your target. Go and learn how to build simple pong game, then try to make simple sidescroller and then see if you are capable enough of drawing in 3d space and making some more advanced stuff.