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
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.
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.
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!