23 total views
There are a lot of skills that are involved in programming which include but are not limited to problem-solving, logical reasoning, analytical thinking, etc. But when we speak of game programmers as opposed to other types of code warriors fighting in parallel dimensions of programming, there is a whole lot more going on than that we often pay attention to. While core programming and technical skill are of paramount importance for a game programmer those should be means to an end to achieve the final vision. In reality, a game programmer plays a crucial part in shaping what the vision itself is or what it can be.
Game programmers are the only ones who have the fullest idea of what is technically achievable while delivering a fun or exciting experience. Thus they need to have a clear idea of what makes the experience fun, in order to understand the importance of each piece of the design puzzle, and what truly is a viable solution after considering all the technical details. For example, let us consider making a game where the player defends him/herself against a zombie horde, and you need hundreds of zombies simultaneously on the screen which is extremely taxing for a mobile device (using skinned mesh renderers). So a solution might be to convert this to a combat game of fighting zombies one vs one hundreds of times. Now that might be fun and all but that is a very different game from the one we set out to build. An alternate solution might be to not use skinned mesh renderers and animate without skinning. Even though this move will limit some artistic choices for the zombie visuals, this solution does not change the core gameplay in a significant way.
A final game, no matter how well documented and designed at its concept phase, is hardly ever exactly similar to the initial concepts. Much of this is shaped by the design choices during production and the technology at hand. But the programmer who puts the building blocks of the game together will evidently leave their own flavor on the final product. From the intricacies programmed into the control scheme of the game to the most mundane “damage/health” slider values are usually set, at least initially, by the programmer him/herself. Even if these choices are eventually modified by a game designer or an artist, they often define what a game can become. Moreover, a game programmer makes hundreds of such choices that go unnoticed in each game from prototype to the final deployment. But will these make the game better or make it worse? It depends solely on the individual and their tastes. Nevertheless, a game programmer who has grasped the vision of the final experience and sincerely wants to make the best version of it come to life will likely make the best choices.
Yes, the choices might suck at times, especially when they are inexperienced. But like any other muscle of the body, they will get better with time. But they will not continually improve unless you try to actively make an effort to make good choices that go with the game! This does not mean someone should make every choice perfect, but rather try their best to understand the requirements of the project. And the choices eventually should become clearer.
Since the taste and opinion of the programmer will without a doubt have some effect on the output, this also needs to be treated as a skill and needs to be sharpened. But can opinions be improved? Is it not all subjective? Well, understanding the effect of executing that opinion is a skill. For example, you might like the idea of slow-motion bullet impact in a shooting game, but if you are making a multiplayer battle royal, you probably can’t afford to show the bullet impact to the player as that would distract them from the main gameplay!
Knowing what ideas are coherent and go well together is a skill that can be sharpened with time. However, not communicating your thoughts, will most likely result in stagnation in the growth of this skill. It is important to let your thoughts be known to your fellow developers, both when you have an idea of your own that you want to see in the game and when you feel that the idea that you have been provided will not work well enough for the current game. In both cases, they might provide their perspectives as to why something might or may not work! Eventually, both of you end up wiser! However, one must be respectful while providing criticism about each other’s ideas and try their best to understand each other’s perspectives. When you understand where the other party is coming from you end up broadening your own perspective in the process! There will be times when you won’t get to work on the version of the game that you want to make. But as a game programmer, you still have to try your best to understand what makes this particular version interesting according to the vision of the designer and deliver the best version of that experience.
So to sum it up, as a game programmer, you must look forward to seeing the end product that you think is the best version of it. And to understand what that best version might be, it is important to form your opinion, express it respectfully, and understand the bigger picture of the work.