Advanced Games Development – Introduction

This post is the first post from my online blog for the Advanced Games Development module as part of my 4th (final) year at Teesside University studying BSc (Hons.) Computer Games Programming. I’ve added some additional content to clarify some points for this blog and my actual AGD blog can be found here!

The aim of the module is to gain experience of working as a member of a games development team that is as close to industrial practise as possible. It simulates the working criteria and inherent mix of development skills and experience required to produce a game from start to finish.

At the start of the module, students looking for teams to join posted in the main Facebook group (~200 students) with links to their portfolio, experience, skill sets and what their preference were in terms of game genres to work on and tool sets.

I found early on that there were quite a few groups that had already partly formed groups with highly skilled members. I closely looked into many of these groups and as they were being led by artists or designers, they were very persistent about using Unreal Engine 4 as their game engine of choice. While the artists, animators and designers had only used Unreal Engine 4 for their other work, most programmers and myself participating in the module had no experience working with it in any capacity. I didn’t think it would be productive for just the purposes of this module to learn how to use an entirely new game engine as well as the API, so I decided to only focus on finding a team utilising the Unity game engine. I also found that some of the teams already had programmers or had left out links to team members’ portfolios.

It got to the point where I was starting to think that I should start my own, small team for the module and I ended up finding someone that was also wanting to start their own team working on a game with the Unity game engine. After considerable time reviewing portfolios, skill sets, experience, preferences and personalities, we managed to assembled together a team we’re happy working with.

In the team, I’m working as a programmer as part of a 12 person team called ‘Team 8′ (yes, a very creative name!) composed of environment artists, character artists, animators, game designers and other programmers. I have also been selected as the team leader for the duration of the project and will be managing team communications and team members’ work for ICA submissions. Compared to other teams in our module, many members of my team have good experience in their skill-sets through combinations of industry experience, completed games from other modules or even game jam entries.

As far as the programmers go, we all have good experience working with the Unity game engine and some experience with shader programming as well so our own expectations for our work are high. The animators, artists and designers are all confident they can work with the engine and setup art and animation pipelines in a reasonable amount of time.

In the following posts, I will detail the work I have done for the game as well as the team management techniques, tools and workflows we are utilising to collaborate on development efficiently.

Placement Q&A for 2nd Year Teesside Uni. School of Computing Students

After completing my 14 month placement at Schlumberger (AbTC) working as a Software Engineer Trainee and coming back to University for the final year of my degree in BSc (Hons.) Computer Games Programming, the placement officer in my school asked me to do a talk about my time at Schlumberger to the current 2nd year students that are looking to go on placement (~200 students!). It was about an hour long and I did it with two other placement students who had been in other companies with their own unique experiences compared to mine.

Due to my exceptional grades from the placement assessment by my University, I have also been made a ‘Placement Champion’ for my course as well!

With this role, the first task the placement officer asked us to complete was a series of follow-up questions for the 2nd year students to give them further insight about the whole process we went through as well as our placement experience. She has given me permission to share this and the full transcript is below:

Q&A

  1. Tell us your name, degree course and where you went on placement (company, location) and a quick overview of the roles

My name is Jordan Davidson, I’m in my 4th year of BSc (Hons) Computer Games Programming and I spent 14 months on placement as a Software Engineer with Schlumberger (AbTC) in Abingdon, Oxfordshire. I worked with two senior software engineers on software called RapidPlan that is used internally and externally by people such as reservoir engineers and geologists to help determine optimal field development plans.

Just before I started my placement, I also completed a 6 week paid summer placement through the University working at a small archaeology firm as a database and web developer.

  1. How did you get your placement / what was the PROCESS / what were the skills that the company were looking for when employing / did you find the job yourself?

Schlumberger advertised the placement exclusively through the School of Computing at Teesside and I applied for it through there. Once I had applied, I received an e-mail ~2 weeks afterwards inviting me to an ‘interview day’ on-site in Abingdon. They gave only about 1 weeks’ notice which meant train tickets and overnight hotel costs were higher than normal but they were fully reimbursed by Schlumberger. The day started with a tour of their site by an HR representative and then I got to meet senior software engineers in the group I was applying for who were very friendly and genuinely interested to meet me and the other candidates.

There were two interviews on the day. The first was a fairly standard interview where they asked typical HR questions such as how I found out about Schlumberger, what attracted me to applying etc. There were also some fairly typical questions that get asked in interviews around determining my problem solving abilities. The second interview was focused on determining my technical abilities which was primarily what my knowledge of C# was and software engineering in general. They also asked a lot of challenging questions on multi-threading and C++ but my course had already prepared me very well.

I also got to have a (free!) lunch in their restaurant with the senior software engineers and current Teesside placement students. The current placement students explained to us what projects they were working on and how their placement was going with the other members of the group answering our questions and giving very useful advice on applying for accommodation if we got an offer. The whole interview ‘day’ started at 9am and finished at 1.30pm with Schlumberger paying my taxi fare from their Abingdon centre to Oxford Rail Station for taking a train straight back to Middlesbrough.

  1. Was there a training period to the job and how was that supported?

All of the placements students such as myself (1 year internship) and the summer interns (~3 months internship) had to complete full H&S training and numerous online courses on IT security and different rules and regulations within Schlumberger. This in total took about a full working week and later on during my placement, there were a few other online training courses that were started and required completion but they only took a few hours of my time.

By the start of my second week, I was going straight into working on RapidPlan with no handover process from the previous Teesside placement student. While initially challenging, my team were accommodating towards the fact that I was just getting to grips with development even with the construction phase of my project just starting.

  1. What kind of support did you get from the company / University? / Can you identify other additional support that could have been helpful?

Through the Monthly Supervisor Checklists that were completed by my supervisors, I got a lot of regular, constructive feedback about the work I was doing, how I could improve my skillset and be more productive from day-to-day. The current and previous placement students also provided some advice on the interview day and after I accepted the placement position.

  1. What skills do you feel you have acquired from the placement that you couldn’t have got from a course? What about transferable skills?

I got a significant amount of experience working with automated testing for software development. We don’t cover any of that on the Computer Games Programming course and it’s an instrumental practice in professional software development. A course usually can’t offer a student the opportunity to work extensively with a full automated software testing stack (involving unit, integration and acceptance tests) on a live project, write new tests closely related to the underlying domain of the project, identify areas for improvement in both the extensive automated testing base and practices and really just understand how beneficial it is.

The skills and knowledge required for enterprise software development in a team on a live project with C#/Win. Forms/WPF can’t really be covered by a course in depth. While C# and WPF were taught in some capacity during my 2nd year with the Multi-Modal Interfaces module, they weren’t taught in depth as the module wasn’t focused on developing those skills.

  1. How do you think going on a placement will help you for when you go looking for a job?

I have a far better understanding of the interview/assessment process for candidates such as myself in large companies. I also gained first-hand knowledge about what the expectations and skills other industries have of people applying and working in roles such as software development outside of the games industry.

  1. What aspects of the placement did you enjoy the most?

I really enjoyed learning new skills on the job whilst at the same time getting to work on valuable tasks on a project with a large codebase. While challenging, the pace at which I learned new skills and techniques was much faster than it usually was compared to coursework.

I also enjoyed throughout my placement working with my team and the stakeholders. They had a range of backgrounds and experiences who always strived to do their best and were real professionals in their roles. All of the people I met at Schlumberger were fantastic at their job and very helpful. The company culture was fantastic and I felt that as a whole, they were genuinely striving to be the best they could be. Unlike previous roles I had in other organisations, the hardware and software that Schlumberger provided during my placement was the latest, best available and significantly helped my productivity.

I took the opportunity to do my own ‘Lunch and Learn’ presentation on acceptance testing and how we applied it to the project I worked on. It was about an hour long and presented to the software developers in my group and some commercialisation personnel (~25 people). The presentation was very successful and I followed that up by taking another opportunity to write an article on acceptance testing for an internal newsletter that was distributed to ~1000 software developers within Schlumberger.

  1. What are your TOP 3 RECOMMENDATIONS to students looking/wanting a placement?

Don’t be afraid to apply for positions in industries you’re unfamiliar with, thinking that your course/route choices will hold you back! Just before I accepted my placement offer for Schlumberger, I still had interviews pending for GE Oil & Gas and Siemens Protection Devices.

Remember to prepare for each interview for both the general interview questions side of it and the technical assessment portion. Even though I am studying Computer Games Programming, interviews were typically focused on my problem solving skills in software development and general computer science knowledge.

Don’t be afraid to apply for positions that you think are going to be challenging and highly competitive! There were two really interesting placement opportunities that I applied for where despite the fact that I wasn’t made an offer at the end of both, I felt that the time I had spent going through the assessment and interview processes for each was really beneficial. They improved my understanding of what is required from candidates to be successful in those types of positions and what parts of my skillset that I could improve to maximise my potential.

Update – 18th January 2014

January is quickly shaping up to be an insanely busy month for me so I won’t have much time to make any more posts on here.

So far, I’ve had an 1 hour interview with DuPont Teijin Films who are based in Wilton on Wednesday for a software engineering placement. I’m one of the six people who were interviewed for the single position. While I’ve had interviews before for part-time jobs which have gone very well, it was the first interview I’ve had for a software engineering role so I was a bit nervous but I think I did well with room for improvement. I found out yesterday that I didn’t get it but the feedback the placement officer got from DuPont Teijin was that all six of us interviewed to a very high standard so I’m still happy. I think it would have been a great opportunity to build upon my current knowledge of C# and work with scientists and chemists on developing software to their requirements. I’ve really started picking up on C# again as well after all these years through my ICA work for Multi-Modal Interfaces and my tutor is very happy with how my work is going compared to the rest of my peers.

Straight after the interview (while still wearing a formal suit!), I attended an information session on the British Computer Society panel visit next week where I will be representing my course on Thursday 23rd.

On Thursday, I had a coding workshop/assessment day with game developer SUMO Digital in Sheffield. I only had 1 weeks notice for the assessment day and it has cost me £74.20 (!) to take the train down and bus back (and taxi to the bus station). It was a very early start for me for the 5:55am train from Middlesbrough and I didn’t get back until 9.30pm! Even with this hassle, it was a really good day and well worth it. Out of fear of violating the Non-Disclosure Agreement I signed, I’m not going to go into too much depth about the details of the assessment but we got to work with their in-house engine codebase and Playstation 3 SDKs! I think I did well for the coding assessment and while I know I didn’t really excel or impress them much, I’m optimistic that my chances are good for getting an interview.

On the 22nd, I will be doing the Search for a Star test from Aardvark Swift which is part of a competition to find the best programming students in the country. I’m very optimistic about doing well this time considering that last year when I did it, I was half-way through the ‘C++ Programming’ module!

Animation and Simulation Programming, 3D Graphics Programming and Multi-Modal Interfaces ICA deadlines between now and the next 2 weeks so it’s non-stop for me. All three are coming together well and hopefully I’ll have a bit more time for myself in February!

Current progress in 2nd Year Computer Games Programming

Now that I’m applying for placements (and have my website link top, front and centre on my CV), I thought I should give a short summary about all of the different work I’m currently doing in my 2nd year of BSc (Hons) Computer Games Programming.

***Please remember that all images of the work listed below is still work-in-progress and all far from the final deadlines so things will change***

Game Engine Construction

With this module, I have to program a game engine in C++ using Visual Studio 2012 and a small API where I have to program to the lowest level for graphics which is the screen back buffer. We’re expected to have a basic game engine by 9th January 2014 with all of the following components:

  • Clearing the screen to a colour and a 3D stars effect
  • Texture loading and transparency blitting
  • Efficient clipping
  • Black-boxed Visualisation component which supports animation
  • Black-boxed World component

So far, I have completed all of the requirements except the animation component which I need to finish. Throughout, I have made effective use of C++11 features and the STL with my tutor very happy about the quality of my code.

We’re expected to have a completed, 2D shooting game using our game engines by mid-February and I’m very confident I can achieve at least an A grade for this!

Animation and Simulation Programming

Current Work-in-Progress for my ICA for Animation and Simulation Programming.
Current Work-in-Progress for my ICA for Animation and Simulation Programming.

For this module, we have programming the animation for the ‘Badger’ (which totally doesn’t look like a vehicle from another game!) so that it can be drove around the plane. We’re expected to have an animation hierarchy implemented which does this and along with the use of quaternions. There is also a character animation part for this where we have to program the ‘Bloke’ on the ‘Badger’ so that he animated between the different poses as the ‘Badger’ is moving around.

Right now, all of the components are in the correct positions, the animation hierarchy is implemented and working for both and quaternions are used. I’ve got the badger rotating as expected from user input but not moving around the plane but there’s plenty of time for me before the deadline!

Network and Concurrent Programming

Not only do we have to create our own 2D dungeon crawling game which runs on Windows and Linux just for this module, but we have to develop and implement the multi-player component to the game which we will have developed ourselves which runs on both platforms. On top of all this, it even involves programming from scratch our own standalone game server written in the functional programming language Erlang for the client-server network for multi-player. This module has been the hardest for me due to being very unfamiliar with functional programming languages but I’ve been making a lot of progress recently learning Erlang. I already have a framework built which runs on Windows, Mac and Linux using SFML with most of the underlying code for the client such as the menus and basic player movement of entities so I’m confident I can push ahead and achieve a lot by the end of the module.

Multi-Modal Interfaces

Game Editor using C# and WPF

For Multi-Modal Interfaces, I have to create from scratch a game editor using C# and the Windows Presentation Foundation. We’ve been allowed free choice on what game to use for this editor and I have chosen to use it for the game I’m developing for Network and Concurrent Programming. It has the ability to modify game settings such as the port number used for multiplayer and which levels are used in the game, create and modify entities, construct new levels, select which sprites are used for entities as well as what fonts are used for in-game text.

The screenshot above is a work in progress and it shows the font editing component where the user can load a custom font or one on the system into the editor, see if it’s appropriate for use in the game using the editable text boxes and have it loaded into the game through an XML file.

3D Graphics Programming

For 3D graphics programming, I actually did a significant amount of preparation work over the summer on the OpenGL API and it’s definitely paid off for me. My understanding was much more developed and it allowed me to focus on other work. I’ve had a fully working transformation pipeline for a while now and all that’s left is to finish off the shaders and re factor the code a bit. I’m finding programming GLSL shaders a bit harder than I expected (and I’m now wishing I had a bit more focus on these when I was working on OpenGL through the summer) but I have enough time to do more reading and reviewing of my tutorial work.

Summary

Overall, it’s been more challenging than last year to balance all of the work I have (as well as the two part time jobs I now have!) but I’m definitely keeping on top of it all, learning far more than I expected just in the first term and enjoying it. We will have completed all of these modules by the end of the second term and in the third term, we start the Game Jam module where we create our own game in a team of programmers and designers using the Scrum development method over four weeks full-time which I’m really excited about!