Job choice 1
One of the job roles that I am interested in is a Game Programmer. Game programmers work at the heart of the development stage as they are the ones that design and write the computer code that runs and controls that game. They test the code and fix any bugs that the code may have and they also make customised tools for use by other members of the development team. Game development programs are generated from source code to the actual program and the source code can be developed with almost any text editor. You would also need to select the development language that you want to use, this depends on many factors such as the target platform and what programming language that you are familiar with.Some of the programming languages are:
- Assembly
- C
- C++
- Java
- C#
- Objective C
- Python
- Lua
There are many skills that are needed to become a Game programmer and one of them is a wide knowledge of computer games. By having a wide understanding of computer you will be able exploit some of the current trends within he game industry. You will also need good teamwork and communication skills. Programmers tend to work in conjunction with other people when they are working on the same project so it is important to work with each other so you don't make any mistakes. Other skills include:
A logical approach to problem solving.
Whichever way you want to approach the development of the code, the final program must comply to some of the fundamental properties. One of them is reliability, this is how often the results of the programme are correct.
Portability, this is the range of computer hardware and operating system platforms that the source code of the programme can run on.
Maintainability, this is how easy the programme can be edited by anyone now or in the future in order to make improvements on it.
Efficiency, this is the amount of system resources that the program consumes. In any case the less it uses the better the code is.
Usability, this is how easy a person can use the program for its intended purpose.
Experience in C++ or other programming software
To be able to efficiently do your job you will need some experience in some sort of of programming software. If you have to be taught on how to code and the principles behind it then it could result in you not getting to your deadlines in time. Ideally it would be better to have experience in C++ as that ois the most common programming type.
The ability to work independently and as part of a team.
The coding aspect of a game is crucial to how the game product will turn out so it is important to work with other members so that you know you are all following the same vision. Other people may be able to see mistakes in your work that you couldn't find before. However it is also important that you are able to work independently, especially if you are in a busy work environment everyone else is getting on where their projects.
Have a good understanding of gameplay.
By looking at other games on the market you should be able to understand the physics of the game and be able to incorporate that into the code of your program. Also by using your own experience in video games you will know what would and wouldn't work in a game.
There are a range of software programs that are needed for them to carry out their job and each of the programs have a different purpose to it. These are some of the programs that are used:
Chef
This is a configuration management tool. The user writes 'recipes' that describe how the program manages server applications and utilites and how they are to be configured. All of the recipes that they write can be grouped together as a 'cookbook' so that the management of the files is easier. These various resources can be configured to specific versions of software to run tand can ensure that the software is installed in the correct order based on dependencies.
Docker
This is an open source project that automates the deployment of applications inside software containers. These containers take a piece of software in a complete file system that contains everything that it needs to run which includes: code, runtime, system tools and system libraries. This system guarantees that it will always run the same and it doesn't matter which enviroment it is running in.
Saltstack
This is a Python based open source configuration management software. this software competes primarily with Puppet and Chef. This program working by using modules and the modules are spilit into six groups:
Execution module - These modules represent the functions that are available for direct exection from the remote execution engine.
Statue module - These are the components that make up the back end for the Salt configuration management system. This module execute the code needed to enforce, set up or change the configuration of a target system.
Grains - These constitute a system for detecting static information about a system and storing it in RAM for a rapid gathering.
Renderer modules - These are used to render the information passed to the Salt state system.
Returners - The remote execution calls made by Salt are detached from the calling system, this allows the return information generated by the remote execution to be returned to arbitrary location.
Runners - These are master side convenience applications executed by the Salt-run command.
Puppet
This is another open source configuration management tool. This runs on Microsoft Windows and many Unix like systems. Puppet was designed to manage the configuration of Unix like and Microsoft systems declaratively. The would describe the system resource and their state by using Puppet's on language.
This role can be very difficult so there are certain skills that you need for this job which are to:
Be able to programme in C++, C and other key programming languages.
To be able to efficiently do your job you will need some experience in some sort of of programming software. If you have to be taught on how to code and the principles behind it then it could result in you not getting to your deadlines in time. Ideally it would be better to have experience in C++ as that ois the most common programming type.
Understand server hardware and modern server technologies.
Most of the work that you will be doing is in this field so it is important that you have a great understanding of server hardware as well as all any new information with regards to them.
Be highly skilled in network development.
Have good communication skills.
Understand current network limitations and how to work around them.
Be able to work to a professional level within a deadline.
Be able to come up with creative solutions to problems.
The ability to work independently and as part of a team.
The coding aspect of a game is crucial to how the game product will turn out so it is important to work with other members so that you know you are all following the same vision. Other people may be able to see mistakes in your work that you couldn't find before. However it is also important that you are able to work independently, especially if you are in a busy work environment everyone else is getting on where their projects.
Have a good understanding of gameplay.
By looking at other games on the market you should be able to understand the physics of the game and be able to incorporate that into the code of your program. Also by using your own experience in video games you will know what would and wouldn't work in a game.
Job choice 2
The other preferred job role that I have chosen is the DevOps Engineer. They create and maintain network systems for games that have online components and they also solve problems for the design and the development teams by using web services. The role of a DevOps engineer usually lies in between the main production and the post production stage. During the main production stage when the game is nearing completion the DevOps would be creating servers that would allow the people to go online to play the game. At the post production stage the DevOps main role would be the maintenance of the game, so as soon as the servers are made available for the public they make sure that everything is running smoothly and that it can handle a good number of people using it at once.There are a range of software programs that are needed for them to carry out their job and each of the programs have a different purpose to it. These are some of the programs that are used:
Chef
This is a configuration management tool. The user writes 'recipes' that describe how the program manages server applications and utilites and how they are to be configured. All of the recipes that they write can be grouped together as a 'cookbook' so that the management of the files is easier. These various resources can be configured to specific versions of software to run tand can ensure that the software is installed in the correct order based on dependencies.
Docker
This is an open source project that automates the deployment of applications inside software containers. These containers take a piece of software in a complete file system that contains everything that it needs to run which includes: code, runtime, system tools and system libraries. This system guarantees that it will always run the same and it doesn't matter which enviroment it is running in.
Saltstack
This is a Python based open source configuration management software. this software competes primarily with Puppet and Chef. This program working by using modules and the modules are spilit into six groups:
Execution module - These modules represent the functions that are available for direct exection from the remote execution engine.
Statue module - These are the components that make up the back end for the Salt configuration management system. This module execute the code needed to enforce, set up or change the configuration of a target system.
Grains - These constitute a system for detecting static information about a system and storing it in RAM for a rapid gathering.
Renderer modules - These are used to render the information passed to the Salt state system.
Returners - The remote execution calls made by Salt are detached from the calling system, this allows the return information generated by the remote execution to be returned to arbitrary location.
Runners - These are master side convenience applications executed by the Salt-run command.
Puppet
This is another open source configuration management tool. This runs on Microsoft Windows and many Unix like systems. Puppet was designed to manage the configuration of Unix like and Microsoft systems declaratively. The would describe the system resource and their state by using Puppet's on language.
This role can be very difficult so there are certain skills that you need for this job which are to:
Be able to programme in C++, C and other key programming languages.
To be able to efficiently do your job you will need some experience in some sort of of programming software. If you have to be taught on how to code and the principles behind it then it could result in you not getting to your deadlines in time. Ideally it would be better to have experience in C++ as that ois the most common programming type.
Understand server hardware and modern server technologies.
Most of the work that you will be doing is in this field so it is important that you have a great understanding of server hardware as well as all any new information with regards to them.
Be highly skilled in network development.
Have good communication skills.
Understand current network limitations and how to work around them.
Be able to work to a professional level within a deadline.
Be able to come up with creative solutions to problems.
Comparison
A game programmer and a DevOps engineer share the same principles however a DevOps engineer work behind the scenes. DevOps is a response to the growing awareness that there is a disconnect between what is traditionally considered development activity and what is traditionally considered operations activity. This disconnect often manifests itself as conflict and inefficiency and therefore the DevOps engineer role was born. However, game programmers are usually focused creating the code for the game and tend not to get caught up in what problems may arise when the game gets to the servers. I would consider a DevOps engineer to be a class above a game programmer since their work can affect the overall experience of the game.
No comments:
Post a Comment