Systems vs. videogames
Every developer or systems analyst is aware of the significant amount of knowledge one must acquire to be in the sector.
Of course we can all dream of being professionals one day, but the truth is we don't know how hard it is until we don't grow every day as developers.
After 6 months at Baufest, I sometimes look back on my first experiences with technology. I entered the world of videogames in the year 2006 when I began studying ''Design and Programming of Virtual Simulators'' at the Da Vinci School. This was my first contact with programming.
It is well known by everyone that college and higher education in general provide you with limited content and fail to teach the full landscape that the profession entails. When my focus shifted to systems, I finally understood that I had to learn to program from scratch. I wish to share with all of you what videogame development entails.
Many application developers may wonder, how different can it be to develop a game? I know this because I asked myself the same thing about developing systems. Believe it or not, there is an abyss between developing a game and a system. Not only does the level of analysis, thinking and programming change, but so does the testing.
What is needed to develop a game?
It all starts with the idea. It may seem obvious, but it is not that simple to translate an idea into a realizable project. It must be fragmented into a game-oriented concept, plus the script and the story one wishes to tell. It is also essential to know what type of game we deal with (strategy, action, adventure, etc.), graphic setting, characters and the mechanics involved.
As with systems, videogames also have a visual team, a testing team, an analysis team (scriptwriters, conceptual artists, etc.) and a development department.
So far it may seem like a simple and entertaining task, but what's more relevant about this article is related to programming. In this sense, for systems developers, videogame programming offers a completely new world with a wide range of possibilities.
Most likely you might wonder how can this be different if programming is just programming, right? Actually, the paradigms are very different and the main thing is to understand that video games are governed within a tri-dimensional environment with the famous X Y and Z axes.
Programming a videogame
When you were at school, you probably wondered ''why am I studying sine, cosine and tangent? I will never use this ever again''. To everyone's surprise, or at least most people, Cartesian axes, trigonometry and physics are some of the pillars of videogame development. And if math is your cup of tea, I encourage you to dive into this world, which puts programming skills and knowledge to the test.
But relax; it is not all maths in videogames. Programming encompasses many different concepts and fields, including artificial intelligence.
The main programming differences we find in videogames are:
This is the basis of the world that will support the game. It is in charge of communication with the operating system, memory management, resource management, etc. It requires solid knowledge on the platform to be developed, algorithms, optimization and low-level management.
The main goal is to deal with the graphic APIs such as DirectX or Opengl it is important to have the proper knowledge on the API that one will use and also an advanced knowledge on math, algebra and geometry
This area will deal with emulating the physical behavior of the objects within the video game. For this, one needs to be competent on vector math, dynamic physics and mechanics
Artificial intelligence programming:
In this case we focus on creating the enemies and intelligent non-player characters (NPC). To efficiently achieve this purpose we must profit from mathematics and AI algorithms such as pathfinding, finite-state machines or neuronal networks.
This refers to the connection of a machine with another or with a server. It deals with the entire multiplayer and servers logic.
Apart from integrating the other parts developed by previous teams, this area focuses on programming the logic of the game and its rules.
As we can observe, the development of video game combines math knowledge, physics and programming. Depending on the area on which we focus, we will need to dive deeper on certain topics
Another important issue is to wisely select the code language, and if we choose an existing graphic engine (Flash, UnrealEngine, Unity, etc.), we must see which one adapts best to our needs.
In my opinion this is an experience that those who love programming must enjoy at least once in their lives. Through this article I encourage those who are curious or have an idea in mind to really give it a chance.
And for those interested in becoming part of this world I recommend starting with programs that solve the visual integration with code such as UnrealEngine or Unity, simply because they have an instantaneous visual feedback when writing code sentences.
As a conclusion, my advice for all programming lovers is: create multiple games and systems. Write code, test and do it all over again. That is the only way to learn, improve and grow as a programmer, always with patience and dedication.
Unreal learn tutorial link:
Unity learn tutorial link:
Baufest Dev Full Stack