In 1958, “Tennis For Two” was released, the first graphic video game in history. Hence, it is an excellent pretext to explore the question: What programming language should I learn at the moment to dedicate myself professionally to video games?
But first of all, we need to know, “What a programming language is?” Let’s take a look-
What is a programming language?
It is a formal language that, through a series of instructions, allows a programmer to write a set of commands, consecutive actions, data, and algorithms, thereby creating programs that control the physical and logical behavior of a machine.
Using this language, the programmer and the machine communicate, allowing specifying, precisely, aspects such as:
- what data should specific software operate;
- how much data should be stored or transmitted;
- the actions to be taken by the software depending on the varying circumstances.
To explain it better (in others and with fewer words), the programming language is a structured communication system, which is made up of sets of symbols, keywords, semantic and syntactic rules that allow understanding between a programmer and a machine.
It is important to emphasize that there is a common mistake of using the programming language and the computer language as synonyms, but why should we not confuse between them?
Well, it is because the programming language obeys a set of rules that allow expressing the instructions that will be interpreted by the programmer. And the computer language includes other languages that format a text but are not programming in themselves.
So, not all computer languages are programming languages, but all programming languages are computer languages.
What types of programming languages are there?
The programming language is the basis for building all the digital applications that are used on a daily basis and are classified into two main types: low-level and high-level language.
1: Low-level programming language
They are totally machine-oriented languages.
This language acts as an interface and creates an inseparable link between hardware and software.
In addition, it exercises direct control over the equipment and its physical structure. To apply it properly, the programmer must have a solid knowledge of the hardware. This is subdivided into two types:
1.1: Machine language
Machine Language is the set of data that the physical part of the computer (Hardware) is able to understand and interpret “The Binary Code or Bits” (0 and 1).
Example: 10110000 01100001
We don’t really understand what it says, do we? Therefore, the assembly language allows us to better understand what this code refers to.
1.2: Assembly language
Assembly language is the first attempt to replace machine language with one closer to that used by humans.
A program written in this language is stored as text (such as high-level programs) and consists of a series of instructions that correspond to the flow of commands executable by a microprocessor.
However, these machines do not understand the assembly language, so it must be converted to machine language using a program called Assembler.
This generates compact, fast, and efficient codes created by the programmer who has full control of the machine.
Example: MOV AL, 61h (assigns hexadecimal value 61 to register “AL”)
2: High-level programming language
They are intended to facilitate the programmer’s work since they use instructions that are easier to understand.
In addition, the high-level language allows codes to be written using languages we know (such as in English, etc.) and then, to be executed, it is translated into machine language by translators or compilers.
They translate programs written in a programming language into the machine language of the computer, and as it is translated, it runs.
It allows you to translate an entire program in one go, making it run faster and can be stored for later use without re-doing the translation.
What are programming languages for?
In general, a programming language is used for programming. However, each one has a different scope and form of communication.
In short, the low-level language allows the internal communication of the machine, and each instruction has its unique operation code.
And the high-level language facilitates the capture of instructions that the programmer gives to the machine, while it enters data in the known language, the machine absorbs it into machine language through translators or compilers, thus allowing:
- reduce programming time;
- more easily understand the task to be performed;
- allow the programmer to disconnect from the internal operation of the machine, among others.
In other words, low-level language is closer to machine languages , while high-level language is closer to human understanding and language.
What programming software is there?
By programming software, we understand the set of all the tools that allow the programmer to create, write code, debug, maintain, and package projects.
Some of the different programs that the project will go through to manage it are:
1. Code or text editors
When writing the codes, they complete themselves marking the syntactic errors and refactoring.
As mentioned above, they translate the entered code into machine language, generating executable binary code.
They serve to optimize development time by monitoring the execution of a program, tracking the values of certain variables, references to objects in memory, and therefore, help us correct errors.
This program takes objects generated in the first steps of the compilation process and the necessary resources from the library, removes those processes and data that it does not need, and links the code with said library to increase its size and extension.
5. Interpreters or translators
As you read in this article, the translator (or interpreter) loads the entered code and translates the instructions so that the program can be run.
The IDE (Integrated Development Environment), is a computer application that provides a series of services that facilitate software programming, such as:
- auto-complete functions;
- a source code editor;
- database connection management;
- integration with version control systems;
- device simulators;
- a debugger to streamline the software development process, among others.
And now coming on our main topic…
What programming language should we use for making a video game?
There is more than one programming language with which we can make our video game, but as you can not have all tastes of spices with the only salt in food, similarly with only one tool or programming language, it is very hard to make the best video game because, of course, the “only best one” never exist, since each phase for making a video game requires an appropriate tool. But, the languages indexed right here are a few of the most popular and additionally endorsed by specialists, so there is a lot of support available to everyone.
If you are looking to get into video game development but do not know where to start, this list will help you narrow down your options. From there, it’s a matter of thinking about the type of video game you want to create and selecting the best tool for the job. Let’s take a look.
1. C ++
Many game developers might tell you to learn C ++, but this is just one of many possible answers. C ++ is a high-level programming language that will teach you the basics of OOP programing, it’s a good idea to learn it. It is also the language used to build most large consoles and Windows games. C ++ is complemented by C in these games, and assembly languages to create low-level engine modules. Scripts like Python, Lua, UnrealScript, or some internal scripts will drag the code. Also, the graphics shader code uses OpenGL or a similar framework.
To tackle the games of large companies, knowing C ++ is essential. It’s fast, compilers and optimizers are solid, and you have a lot of control over memory management. It has extensive libraries, which are useful for designing and feeding complex graphics. There is plenty of literature available for you to teach yourself as it has been the programmer’s language of choice for decades, and you will find an online community that is ready and willing to answer your queries.
2. C #
Both C ++ and C # are widely used in today’s most popular game engines, such as Unreal, Sony’s free PhyreEngine, and indie’s favorite Unity Engine. We all know that game engines can get much more out of game development.
The benefit of C # lies in its XNA framework. This is a set of tools and runtime environments from Microsoft, which makes it especially suitable for games on Xbox or Windows platforms. But if you were to examine C # with C ++, you would notice that C ++ gives you a variety of control over parameters, memory management, etc. This form of control adds another dimension to the overall performance and user experience of your game. C #, on the other hand, is like running a car automatically. In a game engine like Unity, C # is the language it encodes, but the engine has C ++ at its core.
Game developers also often use Java as it supports multiple threads and sockets. It uses less memory and makes the most of the available CPU, without blocking the user when heavy processes run in the background. Sockets help create multiplayer games. Also, Java runs on a virtual machine, making your game easier to distribute.
Java was used to create games like Angry Birds Chrome for mobile devices. It also powers the RPG Maker engine that independent companies have used to make RPGs like the Aveyond series, Barkley, and Eternal Eden.
Named after the legendary British comedy collective Monty Python, this is another powerful programming language used for many things but also for game development. Like the previous ones, it works with OOP principles and has proven to be a flexible language used in a large number of applications.
One of the main benefits Python offers is its Pygame framework, which allows developers to prototype their games quickly and easily. Pyglet and PyOpenGL also deserve special mention.
Python is also fairly easy to learn with a sizable online community to help with support.
To many people, C ++ may seem too daunting as an introduction to programming. Some people give up and settle for easier language.
It is possible to make small games in simpler languages like Visual Basic. Small console games can be easily created using Java, VB, or C #.
Another language you can start with is Goal C. It’s an object-oriented language like C ++, but it’s easier to get.
There is no best programming language when it comes to video game development, but with the options on this list, you are not going to go wrong.