T2G Update : Section 3

Train2Game - LogoIt’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.

Develop Conference 2013 – It was fantastic!

Develop Conference has been happening for a few years now and this was my first visit to one. I went along to meet people and gain information about what is happening in the games development world at this time. I managed to achieve what I set out to do, and had fun whilst doing it!

I went to the Wednesday and Thursday sessions of Develop. There didn’t seem to be a need for me to attend the Tuesday Develop Evolve sessions this year, maybe once I’m a bit more established!

Upon arrival my printed reservation was scanned and a pass given to me. “Paul Rayment, Shadowpuma Games” it said. I was really happy to have it say that instead of “Student”. Then on a table just over from the registration booths was a goody bag! Full of magazines, leaflets, and other bits of information. The gentleman behind the table said “Would you like a t-shirt?” and of course my response was “Sure” not trying to sound too eager to get free stuff! The t-shirt came across and on it was the Develop conference logo along with PS4 written on it! Awesome!

The conferences
There were numerous conferences happening through out the days. Each one was about an hour in length and tackled their topic very well. There was only one or two out of the ten+ I went to that could have been better, but the information was fed back through the develop app session feedback forms.
Some that stuck and were memorable included:

Opening Keynote: Mark Cerny talked about his history in the PlayStation development over the years and what was next for the PS4 development. I loved this one since it was topical and was a great inspiring opening session for the day.

Forward+ Rendering for Next Gen GPUs: Gareth Thomas gave his presentation on how the rendering techniques of Forward+ and Tiled Forward Rendering impacted the way in which rendering takes place. The presentation was very structured and interesting for coding rendering functions in my own projects.

Indie Keynote: Barry Meade previously from Criterion, now from the studio Fireproof Studios, spoke about how he left a large corporate games development environment where deadlines and figures were more important than allowing for development of the skills of employees, to now working in an environment where the game is complete when it’s ready and the team had fun doing it. Before attending this session I had not heard of The Room, but after I felt it a requirement to play it and find out what the experience was. I’m glad I did because the puzzle game was an eye opener to puzzle games. I finished it quickly, but the path you take through the game is very pretty along with making you think about what it is you are clicking on and opening, turning, pushing, twiddling, and any other descriptive word used to move things around.

Coding Keynote: Tim Sweeney talked about his history and how he made it into the world of Epic Games and the development of the Unreal Engine.

Git Off My Lawn: This talk was all about moving from existing control management systems over to Git. The guys from Sega Europe, creators of Sonic Dash, gave their overview of moving over, the tools used, the good and bad points from the users point of view, and other areas of the team’s work flow changes. Since I use Git on my own, it was good to see how it is used within a corporate environment.

During the whole event there was the Expo taking place up at the top of the venue. A large room with stands for various companies to show off their latest developments and to take any questions that people may have. I found just looking around was a great way to see what was going on with the various organisations. Standing chatting to people was a great way to see where they had come from and to hear their tales of progress.
The Expo was a great place to hang out and meet people. Even if you just wanted a break from it all you could easily find a comfy seat and take in what had been going on.
I did most of my greeting of new people at the Expo between sessions.
The atmosphere was very much a buzz throughout, and you could literally just say ‘Hi’ to anyone and a conversation was started.

Down at the bottom of the venue, The Hilton Hotel Bar was buzzing again with people there to have meetings and drinks and chat. A very friendly but busy atmosphere. Of course, the drinks weren’t free, the free drinks were back up at the Expo!
The hotel bar was to play it’s part though at the end of the days. It seemed to be the meeting place of everyone to show off their bar skills and buy drinks for their friends. The drinks were running out fast so getting in early was a must!

Over the course of the two days, being social and meeting lots of new people and taking in the information that was being given at the conferences was starting to be very draining. The walk back up the hill to the station on the first day was ok. The walk back on the second was near impossible. But a good nights sleep sorted it out.

Shadowpuma Games got treated to a curry at the end of the first day. A nice treat.

What have I taken away with me?
I took away the fact that it was a fantastic time to network and meet new people along with old friends (who then introduced me to more new people). The atmosphere at these events is that everyone is there to talk and have a great time sharing what each other are doing. There may be possibilities out there for change in circumstance

If I ever get the chance to go again then I would love to. It really is an event to network with the people and find out the latest in development.