- Mobile Game Design Essentials
- Dr. Claudio Scolastici David Nolte
- 1290字
- 2021-07-23 14:16:06
The programmer
Programming, and videogame programming in particular, can be pretty similar to performing magic, in some ways.
It has to do with crafting formulas learned from books, a knowledge hard to grasp and to understand, that allows those who are initiated to make anything they wish happen on a computer or other device screen!
Out of the fantasy metaphor, the programmer is the guy who takes care of coding things that happen in a videogame, the one who turns the math and logic behind it into commands and functions and he is probably the most important professional in a videogame team. You can have the most appealing design in the world, the best graphics and sounds, but without someone coding this stuff, your game simply won't exist!
In the early days of videogames, when games were nothing more than geometry performing on the screen, the programmer was the team, as he took care of design and artwork too.
As the complexity of games increased, programmers began to focus on just coding. Over time, different kinds of programmers became necessary and now we have specialized roles, such as lead programmers, engine\physics programmers, AI programmers, and gameplay programmers.
A mobile team, on the other hand, will hardly have more than two people taking care of coding. The team's game designer is more likely to help the programmer, if not with hard coding stuff, at least with scripting game events.
The programmer's kit
The basic tools of a programmer falls into three main categories: coding languages, Integrated Development software, and Version Control Systems.
Coding languages are a topic that could cover entire books by itself. Packt already offers several books on the different coding languages and their characteristics; we suggest referring to these books for an in-depth analysis on the subject.
Generally speaking, C++ is the language of choice for game developers. Any ideal candidate for the programmer position in a mobile game dev team must be at ease with such a language and have developed some kind of project with it, even as an indie game or some school project. He must be proficient with concepts like destructors, classes, inheritance, constructors, and constants.
Integrated Development Environment is software that allows you to develop code for projects and games. The development environment of choice for C++ is Microsoft Visual Studio, a professional tool that offers everything you need to produce high quality coding, including a code editor, debugger, several development tools to design GUIs, web apps, classes, data schemes, content exploring tools, and much more useful stuff.
Game engines may have their own built-in coding IDE, for example, Unity 3D now comes with a tool named MonoDevelop.
A true IDE is not even always necessary. Many coders, especially when dealing with scripting languages, such as UScript, are happy enough with text editors, such as ConText, which offers some basic functions of auto indent and text aligning according to a given set of available coding languages, recognized by the software.
Version Control Systems are software used to manage the changes in documents and computer programs. These software cover a strategic role when more than one person work on the same part of a project; as it is usually the case for programmers on a game.
GIT is one of popular, free, and open source Version Control software which you can use for your projects. You can find it at http://git-scm.com/.
Coding departments
The mobile team game programmer has several duties to attend to, mainly because he basically is in charge of everything involving coding. The list includes, among others:
- Game engine\Physics programming: The game engine consists of developing a framework of some sort that can effectively manage everything that makes a game what it is: graphics, audio, input and controls system, data saving, networking, and anything else that is necessary. Since there are already excellent game engines today, such as Unity 3D, Corona, or the Unreal Engine, the mobile programmer very rarely needs to create a game engine from scratch.
- Physics: Physics simulation is a very common feature of today's 3D videogames. Game engines include a plugin to manage physics and so-called rigid bodies (game objects subjected to physics). A coder is hardly requested to develop a brand new physic engine, except when he's requested to develop the game engine itself.
- Artificial Intelligence: As a general statement, mobile games generally aim to be not too challenging , so as not to frustrate the player, thus they rarely rely on sophisticated AI algorithms. The smaller scope of mobile games implies that AI programming for such games may be considered less problematic than that of popular AAA titles, in many ways.
- User Interface: The User Interface of your game will strongly affect its appeal to players. Touch controls must work as expected, they must be responsive, and the information displayed on screen must be clear and well displayed. By ensuring this is so, you improve the chances of selling your game.
- Network: With the outbreak of social networks and the demand for sharing, no mobile game should lack a feature that allows people to upload their scores on public online leaderboards or share their results with friends. Moreover, the free-to-play business model that is so popular among today's developers requires a reliable data exchange dynamic between the game and the servers accounted for the service. Most of all, the game-server communication must be hack-proof and trustworthy. Network programming is so important that it is considered one of the hardest and most challenging aspects of game programming in general.
Learning to be a programmer
Exceptionally talented people apart, programmers will typically have a degree in Computer Science or Engineering. They need a very robust knowledge in linear algebra and mathematics, both in 2D and 3D space. Vectors, rotations, distances, curves, and matrices must be their daily bread.
They need to know several coding and scripting languages, such as C\C++, Java, and LUA, because the more experience they have with game engines and their scripting languages, the easier it will be to get hired by a team. Programmers also need to know about efficient programming, because efficient code optimizes performances. Code that provides consistent performances on both high end and low end devices can be a key factor for the success of your game!
They must excel at problem solving. Whenever a game designer depicts a game mechanic, he is actually defining a problem for the coder to solve. The best problems are those which don't have a single solution, so it is very important that a game programmer is solid with analysis and is able to define a set of potential solutions before choosing the one which seems better.
As for their personal characteristics, the times of the weird, introvert guy who codes alone in a dark room are long gone. Efficient software development and teamwork relies on communication, it is mandatory for a good programmer to be able to meet with the other team members to correctly address problems and define an optimal job schedule. As a fact, the most popular game development practices, such as Agile development, require team members to continuously interact with each other.
A programmer should also be in constant thirst for knowledge. The coders with 30 years experience will tell you that they are still learning, for game programming never reaches its end point: new technologies arise, new methodologies become popular, and new languages become available. Most of all, when something is new, it is very likely that no one can help you to understand it. You need to become a disciplined self-learner if you want to be a cutting edge programmer!
More about videogame programming and the role of game programmer can be found at the following link:
http://www.gamecareerguide.com/features/412/game_programming_an_introduction.php.