Presentation date: 21/11/2011

Mark Craig is a highly experienced programmer who works for Lucid Games, based in Liverpool. His role at Lucid Games is ‘Game-play Director’. Recently Mark was made redundant from his former job at Bizarre; this company closed earlier this year. He had worked at Bizarre from 1996 till 2011, and only stopped as the company was shutdown. He spent a lot of time searching for programming jobs worldwide, however himself and many other former employees of ‘Bizarre creations’ decided to create Lucid games.

Mark has been the lead programmer at Bizarre, and worked on 007: Bloodstone and The Club. He has also worked on a variety of other games; however he only worked as a programmer on these. In addition, Mark played a huge role in the recruitment process at Bizarre, and helped to employee roughly 100 candidates during his time at Bizarre.

A standard programming team (Based from Bizarre’s team)

When Mark worked at Bizarre, he was the lead programmer for 007: Bloodstone and he talked about the programming team in which he worked with whilst developing this game. Bloodstone had 6 programming teams: Core technology, tools, audio, multiplayer, user interface (UI) and game programmers. Mark discussed each of these areas, in addition to explaining the roles within each.

Core technology

The core technology programmers are responsible for the technology framework, which in this case was used for all of the games developed within ‘Bizarre creations’.

The programming roles: Application of framework, low level systems (file loading, control pad settings, etc), graphics, animation, physics simulation and vehicle simulation.
Within the graphics role, it is a very popular role, and it is also a very important role. As games and their graphics are getting progressively better and more advanced as technology is advancing, games developers need to keep up with this pace and create amazing graphics for games. Companies have to dedicate a lot of resources and money on this programming role, as it is vital. Some companies license an outsourced graphics engine, however Bizarre wanted to create its own; when you have made your own graphics engine, the developers have more control on how it feels and works. This is the same with the physics programmers; many physics engines tend to be outsourced, however Bizarre created their own; it was a much cheaper and more efficient option.
Another role is the animation programmers, and these are closely linked to the graphics programmers. The animators take a lot of the resources from the graphics programming team, and write code to enable the graphics to move. It is a very complicated system, as physics usually need to be integrated within a lot of the animation coding.

Tools programmer

The tools team is an extremely crucial programming team, as the tools they create are given to the artists, designers and animators to develop the game and its content.
Tools developed: export pipeline (for levels, models, animations, etc), game database system, game-play editor and debugging tools.
The game database system is used to specify the order of data in a game, and give it an heir-achy; this can be data such as level data, gun animation data. Also, programmers are able to tweak data whilst the game is running. Having a game database system can prove to help a game have a fast turnaround.
Another tool developed is the debugging tools, which can be used within the editor of the game. The debugging tools can show the developers is there is a problem within a game; for example if a level kept crashing at the same point during multiple play-throughs, with the debugging tools, the developers can find out exactly what is making the level crash (memory usage is usually a strong culprit when a level keeps crashing).

Audio team

The audio programming team is responsible for creating the audio within a game, as well as creating the program to run the music in-game. These programmers are usually part of a larger team, which includes sound designers and contracted musicians to help create the music. The programmers’ main role is to get the music to be a digital format, and to play during the game. The audio playback system and programmers are a shared resource between game teams. In addition the audio team had to create and enable sound effects to be played during the game.

Multiplayer

The multiplayer programmers combine technology and game play. They provide the network communication systems for the games and implemented game specific multiplayer game modes. The network system was shared between the various games being developed at the time, in Bizarre. Some companies or publishers choose to let another development company create the multiplayer for their game, however this can prove to make the game very disjointed, and creating a different quality for each section of the game, when it should be equal (in an ideal world).

User Interface (UI)

The UI team is responsible for implementing the user interface of the game. The programming team in Bizarre was a section of a much larger team, which was also responsible for designing the behaviour of the UI and producing the graphics for the UI system.
The UI team was a shared resource between all the games in production at Bizarre Creations. As they are a shared resource, these programmers find themselves working with many other development teams within the company, such as artists, designers, etc.

Game programming team

The games programming team make the game using the resources created by the other development teams. They implement the game as designed by the game designers, using the technology made available by the shared teams.
The role is solely devoted to creating the game and programs the game-play elements into the game. These programmers sometimes create new technology, depending on what game they are working on.

Role: Game-play systems set up by the editor (entities, scripting, etc) This role also includes setting up streaming entities and levels to help save memory in the game. Streaming an object basically means to load in and out objects when and as they are needed, or not needed.
Entities: Characters, player controls, camera, artificial intelligence (AI) and vehicles.

Game programmers usually go by the rule of “3 C’s”, and these are: Character, controls and camera.

AI is important in an action/shooting game; a good AI in a game doesn’t mean being perfect and always killing the player, but it is to provide the player with an entertaining and enjoyable experience when in-game. It is vital that the AI within any game is realistic, and the behaviours and traits of characters really stand out and works within the game. Players would expect each character/enemy to react differently in-game, and in-turn should have a different behaviour pattern. Many different AI’s are created for many different characters, however only story/narrative based characters have a set individual AI, and this is sometimes scripting in-game.

Getting a Programming job

-When looking at applying to a programming job, you should think about what programming role you would feel best -working in.
-You need to research the job and all of its responsibilities before applying.
-You should tune your CV to suit the specific role you are applying for.
-Lastly, you should write a covering letter explaining your enthusiasm for the role.

Demos: Writing/coding a demo is the single best way to get you a programming job. Many people who are hiring would look at a demo before looking at someone’s CV. Programmers creating demos should pick an area to focus the demo on, and create it. Mark spent 3 months on his demo to show to employers; however he had to create a graphics engine before he could create a demo.

The two main types of demos that employers want to see are:
Graphics demos – Write some cool shaders or create a simple graphics engine.
Game-play demos – Write a simple and well-polished game. You don’t have to write everything yourself (such as the graphics engine), a programmer could use Unity or UDK to create a game in.

Pre-interview tests: Many programming jobs give the interviewees a test in which they should create before a potential interview (depending on how well the test goes). These tests are usually one of two things: fix a broken game created by a programmer within the company, or solving a series of programming problems.

Interview tests: Some interviewers ask the interviewees to write a section of code on a piece of paper; Mark had to do this in one of his recent interviews and couldn’t do it as he was so used to typing code on a computer. He recommends practicing writing code on paper to prepare for this type of interview test.

Mark also talked about ‘standard’ programming questions asked in most interviews, and these are: “What is a cross product?”, “What is a dot producer?”, and “What is a virtual distributor?” So programmers should research these before an interview.

As I am not a programmer, this lecture helped me gain an insight into how the programmers work within a company, and the many different roles that fall under the ‘programmer’ discipline. One of the main things I took from the lecture was what happens in an interview, and how harsh and pressurised they can make you feel. As Mark recently was made redundant from Bizarre Creations, he has very recent and up-to-date knowledge on the interview process. As Mark is very experienced at programming he made it to many interview stages, however the questions and tests that the companies sprung on him surprised him. This made me feel nervous about the interview process; however I am very happy to be given an insight into how the industry looks for new talent and tests them. From this knowledge I have gained I can prepare myself a lot more if I am lucky enough to get an interview; I would prepare myself and refresh my knowledge of all the editors I can use, as well as brushing up on my QA software skills.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: