It’s been a while since I wrote an update about Train2Game, the Games Developer course. 1 year and 4 months ago I blogged about my Section 2 exam results. Since then, Section 3 has been the focus of attention.
For Section 3 I decided to complete the course as it was intended (instead of doing everything and then going back to complete the portfolio projects). So this meant the order of things went…
Section 3 Part A – Introduction to 3D games creation, objects, vertices, primitives, model skeletons, memory, materials, mapping, lights, cameras, to name the key elements covered.
Portfolio Project 03 – Creation of a simple 3D scene to include a player, some non-player characters, a floor, some walls, some terrain elements such as blocks, then add movement for all characters, collision detection, reset position, camera change and movement. Overall, it looked very basic and would never stand alone as a basis for a game (unless it was called “Crash my blocks”).
Section 3 Part B – This section went into more 3D elements of pathfinding and A* algorithms for characters. There was also information of picking and ray-casting, model animation, 3D pipelines for rendering, shaders, HLSL, and mixing 2D elements into a 3D environment (for things such as user interfaces), post processing and particles, shadows,
Portfolio Project 04 – This portfolio project was broken down into 6 sections. The overall aim was to create a 3D puzzle maze with multiple layers.
Part 1: Build the basic scene with a sphere for the player, non player meshes, walls, collision detection, key input movement, npc ai pathfinding, health reduction upon player/npc collision.
Part 2: Add the multiple floor to the maze game with ramp for the player to traverse, make the player and npc’s look different from each other using materials and textures, add textures to the wall and floor elements, give the npc’s some attack patterns, add in a goal post.
Part 3: Further development of the maze by adding in different terrain elements, add a list of destination points for the npc’s to pick from, camera changes to allow for 3rd and 1st person views, add a firewall for the player to burn themselves on, add a 2D/billboard background element, add a User Interface, add an end game condition, allow for procedurally generated levels, add pickups such as health and bonuses.
Part 4: Visual effects were added in the form of lighting, detailed textures on models, blur effects, surface properties added (lighting etc.), and some normal maps were added to the pillars.
Part 5: Particles – Explosions were added when the player loses all health and explodes, smoke was added to the firewalls, sparks were added to the player when colliding with the walls, Fire particles were used to replace the cube firewalls.
Part 6: The last thing to be added was shadows. Light sources were added to the scene, 3D volume shadows were added along with 3D shadow mapping.
At the end of the portfolio project there was the beginning of a game. Looking back now there are so many things I would change and do differently, but at the time using the knowledge I had from completing Section 3 Part B, the outcome was pretty good.
Section 3 Part C – This part of the whole course was probably the most revealing into how the advanced elements of games are handled. It covered areas such as dynamic environments, areas opening up upon key tasks being completed or areas opening up after time. AI (Artificial Intelligence) was revisited and knowledge about npc behaviour and logic was revealed and how to control such elements of a character. More aspects of route finding were touched upon. Player Profiling was explained, and how to keep track of players and their details such as games played, scores, loading/saving. Debugging and fixing errors was touched upon. If you hadn’t got the hang of this by this section of the course then there is little hope for your games to be completed without faults. Bug reporting was also mentioned and how systems are used to track them and fix in various versioning control systems. The section also went over how to enhance the game further with in game objects and the such.
Almost every part of Section 3 Part C was information and theory until the end where a near complete version of their Deep Sea Diver game needed updating.
Portfolio Project 05 – The final portfolio project of the course and of course the most in depth. The aim of this project was to take the nearly completed Deep Sea Diver game and enhance it!
Part 1: Player information was added. So a mission briefing when the player starts, a highscore table that saves and loads players scores, options screen, and an attract/demo mode that plays automatically to show the game off.
Part 2: Advanced enemies were needed so projectile attacks were added, electricity collisions were made when colliding with the jelly fish, and more detailed collision detection between player and enemies was added.
Part 3: Updates to the player character were made giving him advanced weaponry, heat seeker, rapid fire, three way, explosive harpoon arrows. A shield of invulnerability was also added.
Part 4: From here on out it was more about making effects to the game to give it more depth. So enemies had additional particle effects added. There was an intro flyby camera added to the level. The hardest part of all these changes I found was with the level lighting. It turned out I couldn’t turn all teh lights off because they were being processed during the HLSL effects meaning I had to search through all the effect files before finding which effect made all the characters and models light up! Once it was updated then the lighting of the level was changed so a darkness mode could be created.
Again, Post Processing effects was a bit tricky to get started. My understanding of how they all worked was great, but knowing where to put them in the existing code proved to be a bit tricky. After some direction from the tutor team (no exact answer mind you!) I was editing and adding Bloom and Depth Of Field like no ones business!
The potholes were changed so they made the player fly up into the air and back down again, harpoons were changed so they stuck to solid objects instead of flying straight through them.
LUA scripting was added so object position and level management could be maintained during runtime of the game instead of having to recompile the code each time.
And a rigid body physics manager was added to handle collision of boxes when the player collided with them.
Part 5: Controller configuration was added so the player could change the keys assigned to movement. And usb controller support was added so any controller can be added and used to move the player around. I only had a PS3 controller to test with, but it did the trick.
Part 6: First Person Mode added to allow targeting through a scope and better accuracy of aiming.
Part 7: Split Screen 2 player modes added. This wasn’t the hardest but was certainly the one that took the longest to work through. There were different modes for co-op play, treasure hunt mode, 2 player death match, and capture the flag.
After all these sections and portfolio projects were complete I sent them off at the end of May for marking.
I have yet to see the official results of my portfolio projects and determine where I did well (and not so well) since my 3 years of studentship automatically expired at the end of August (typical that it was the day the results came back). This is quite annoying since the system should have seen I was still doing the course and automatically extended me. Now I have to wait a few days/week(!OMG!) before I get my studentship extended and I can log back in to see the actual results. The person on Customer Services though was kind enough to advise I had passed all three portfolio projects!
What is left to do now??? Well, Section 3 has certainly been a learning curve to gain knowledge on how a game is made and the effects applied to the end result. It seems that every game I play now I don’t play it purely for the enjoyment of the game, I play and analyse how things are created and produced and what the coding behind it would be.
So when I get my access back to the Train2Game Student World section I can find out what the next steps are for taking the final examination of the course. Looking forward to it!
I have also created a portfolio website for myself.
It has details on the Deep Sea Diver project along with information on how to contact me.
Over the past weeks I have also taken up learning Unity. But that is for another blog posting.