Programmers who like games
Why do people like programing, some people simply like technologies, while others find it challenging and fun. Most of people I worked with started programing due to their love to video games, while not all, it is certainly a large number, could be well above 40%. Those individuals enjoy playing their video games, with every game different than the others, and sometime, they wish to turn their own imaginations, their love and create something great, something that others could enjoy as much as they do.
Thus they start to research how to make games, now further they go, more difficulties they find, most of them find out that it isn’t easy to create a game, most understand that they don’t have what it takes to create a game. “It is too difficult”, “it requires too many skills”, “I would never make it” are what they think, they slowly give up, and return to programing Web or Software.
But what would you do if I told you it is actually possible for those players, for you, to become a game developer, it is going to difficult, for them, for you, and for me, to become good game developers, but developing game is a possibility, even the AAA titles. I myself am not yet a great game developer, but I’m still on my way to become one, let me share with you my game development’s knowledge, what it is needed to create a game. This is what I have learned over few years, they may not be the best way to do it, but I would like to tell you nonetheless, and maybe through this article you too can regain your dream and love, to become a game developer, a game creator.
Starting from concept
Like a good book, a good story, the game needs its own concept, think about what kind of game you want to create, what kind of audience you would like to attract. In example you want to create an action game, there are many kind of action games, each one has its own range of players. Rayman’s primary audiences are children, Megaman players are mostly teenagers, young adults, God of War for the adults, and there is also something like Devil May Cry, for hardcore gamers who would like to spend hours into finding their own fighting style.
It is needed to think what kind of players you would like to create the game for, you have to know the genre, know the popular games in said genre, their pros and cons, why do they succeeded and what to do to improve them. You may think of having a greatest idea ever, but it doesn’t really mean it is a certain success, but certainly, a good beginning, now for the harder part.
Ways to kick off
The funds, now if you are student or just started working, you obviously won’t have enough funds for a big project, and even if you intend to do a small, yet commercial game, you would need money for many development parts, unless you are very talented and possess high range of skills, which in this case, might be possible to pull off alone. In other cases, you might be able to find a sponsor, someone who would fund your project for the profits, this won’t be easy, and will take a lot of time to find, most likely. But lately there happens to be another way, an easier, a quicker way for you to collect funds for your project, it is called Kickstarter.
Kickstarter is a crowdfunding platform, its objective is to help bring people’s ideas, creations, and projects to life. Basically you present the public, other people like you, your ideas, your plans, and offer them products for their funding. This model made many projects successful, especially games, many AAA games title have been funded this way, and many are still on their way toward success. Show people your ideas, your concepts, the way you want to create it, the funding goals, and what you would like to give them in exchange, the chance your project will be noticed, and successfully funded is very high.
Tools make life easier
Now you have got the money, time to decide how you want to create your game, choose the technologies, the tools that will help you in creating your game, starting from game engine. Unless you have enough skills and funds to create your own optimized engine for your game, I think it is wise to choose an existing game engine that will power your game. Now there are many existing engines that provide you with various tools, one more popular than others.
And if this is your first project, I recommend Unity 3D, a cross platform game engine that is easy to learn, easy to develop, and while it has its limitations, those become lesser day by day, and has proven to be an excellent tool for beginning game studios or developers. Unity’s unique point is the Asset’s Store, where you can buy completed game modules for your own project, decreasing time and money needed. Also Unity’s easy deployment makes it very alluring for new developers, the interface, also programing language is also easy to use. The Unity’s limitations are its graphic capabilities, also larger projects could be hard to manage.
Another great engine, widely used, and very popular is Unreal Development Kit, UDK for short, has been used for many popular games, among many others Bioshock, Gears of War or Mass Effects, UDK has wide range of professional tools that will help you create high quality games. While it has expanded to small developers, most of UDK developers are big game studios, since the development cost in UDK is pretty high.
Video game developers
Since you have the tools ready, time to get people who will be working on the tools, now since Viblo is a portal designed for developers, I won’t go far into art department, and mostly concentrate on video game programing positions. Most of self-taught game programmers usually re-arrange their skills widely, meaning they try to do much as possible by themselves, like game controllers, level design, which make them harder to work in group.
Everybody has something that he especially love in the development process and most likely it is there where he will be the most skilled in. If it is about me, I always loved working on Inputs and character animation controllers, I love how by using controlling devices, you could smoothly control character's actions, movements, make them feel alive and realistic. If you want to work on video games, it would be great if you could choose your specialty, something you will be love doing, in which some of them I'm going to describe below.
- Gameplay Programmers
Gameplay programmers are responsible for game’s strategy, implementation game’s mechanics and logics, which give the games its own feels. With each game being different than another, and the programmer must be somewhat knowledgeable in the specialized areas. Those are considered to be very important positions, since they are involved with direct player’s game experiences. It may happens that gameplay programmers will have to be working with UI or AI in some cases. Which makes gameplay programmers very versatile, and need to learn new skills quickly.
- Input Programmers
Input programmers take care of recognizing input devices such as keyboard, mouse, joystick or other controlling devices that affect the system and characters in game. These actions are usually adjusted during the game development, depending on needs. Usually you don’t need a separate programmer for inputs, but some complex real-time motion-controlling devices exist, such as Wii Remote, Kinect or modern AR and VR devices which requires more time for development. Depending on the right inputs that the player may feel the game more refreshing and interesting.
- Physics Programmers
Physics engine programmer are in charge of developing physics the game will use. Physics are always an important aspect of games, making them more realistic, but comes at a great cost, usually calculating physics require a great deal of memories, physics engine programmers are required to be able to optimize and use them wisely. It is needless to say, physics programmer should be very good at physics.
- Graphic Programmers
Graphics programmer specialize in render for game, right now most of graphics programmer have to deal mostly with 3D graphics, with large number of 2D projects are related to mobile applications. Physics programmer have advanced knowledge of concepts such as vector, matrix math, quaternions, rotations and algebra. Modern games usually have a complex range of shaders, which are required for pushing the game’s realism, and it is also the task of graphic programmers to write and optimize them, these programmers must be especially skillful, and their wages are usually higher than the other developers, their skills can be used in many games.
- Network Programmers
Network game programmers, as the name suggest, they work primary with server’s side of the game, those programmers ensure that the players can connect with server or other players via LAN or internet. Network programmers could spend most of their time on their roles, which actually is more complicated than one might think. Having to deal with overwhelming number of connections, network latency, packet compression and interruption are just one of few things have to be considered. Network programmer positions are extremely important, and the whole game experiences can be depended on them, especially those concentrated on multi-playing, social connection, bad network connection could discourage players greatly.
- Artificial Intelligence Programmers
AI Programmers, Artificial intelligence programmers, they work is to develop logics to stimulate intelligence for enemies, opponents as well as other unplayable characters, which is now almost a requirement for every game. The AI Programmers must have large knowledge about pathfinding algorithms, strategy and tactics. This is surely one of the most challenging position in the whole process of game development.
In many studios, AI Programmers may have to create entire language that can be used to program AI via scripting, these languages give level designers an ability to design the World faster and simpler.
- Other roles & Scripters
It could take a lot more time to describe all of the game programmer positions, the unmentioned are in example sound programmers, dealing with sound effects in game, porting programmers, for porting across platforms, those often have to be native programmers. Those are needed for different projects and their importance are largely depended on the studio’s possibility, often most small projects, mobile projects don’t need as much as programmer positions I have described above.
In example, most of Unity 3D projects need only scripters, these people use pre-written APIs by Unity Technologies, to quickly implement needed functions into the game. More often today the core game engine is separated from gameplay programing, so scripters don’t have to be very skilled to script a game, since most of harder tasks were already developed by core developers, leaving scripters to only concentrate on gameplay aspects.
Since it is easier and cheaper to find scripters than skillful core developers, most of studios resolve to use provided game engines, which already come along with a lot of useful tools, removing a lot of unnecessary processes.
Standing up to the challenge
Now when you know more or less about what is needed to create a game, it is worth to consider which role you want to take in the whole process of game production. Unfortunately, unlike applications or websites, games are very hard to create by yourself, you will have to learn to cooperate with your fellow programmers, coworkers and artists, to be able successfully finish a game’s project. Game utilize much higher technologies, as well as require much higher knowledge than those of usual programmers, so it is important to think if you want to stick along on this long and nasty train.
Game creation is hard and often brings more fail than success, many studios went bankrupt making video games, reasons are too many for me to be able to list even in a few articles, this is not a decision you should take lightly. Despise all the hardship that will be surely be waiting, one shouldn’t give up his dreams easily, as people use to say “where is a will, there is a way”, I believe as long you have passion and love for what you do, you will eventually success, since “Good things come for those who wait”, by Violet Fane, another phrase that I like.
Creating a game, creating a memory
Remember the games you have played since childhood? The games you still remember after 10, or 20 years? Ones that left you with plenty of memories, ones that encouraged you to become a programmer? Don’t you want to create something like that, something that will make people talk in decades? Something that will be engraved upon player’s memories? That’s exactly what drove me to become a developer, if you share the same passion as mine, let’s create the new memories that will be remembered upon ages.