For the final project we had to make our game using the engine that we have we developed over the course and use most of the methodologies and techniques that we have been taught over this course.
Our engine contains both OpenGL and Direct3D configurations and so your can build and render your game on any of the two platforms. We have a cool Maya Mesh Exporter where you can export the model directly from Maya into your Game Assets and use those models for your game. We have Materials where you can adjust alpha transparency, RGB values as well as add textures. The engine also contains different builders like MeshBuilder, AssetBuilder, ShaderBuilder, MaterialBuilder and more whose work is to convert the assets to binary formats. Binary formats have great advantages of reduced size over the original mesh files.
So the game I decided to create is an Exploration Game where you control a character and you can basically interact with the objects on the island as shown in the picture below:
The main mechanic of the game is that when you come in contact with an object, its color gets affected. As you see in this picture below, when the main character comes in contact with house the color changes to a deep blue.
After interacting with all the objects their final colors will look like shown in the picture below. So basically I am comparing the position of the character with the objects on the island and checking whether the character is withing the same x-z plane as the object. The way I am switching the color is that when the character is within the same x-z plane as the object, I am swapping the current material of the object with a new Material which is already loaded. The reason I decided to go with the swap is because at the time I did not know if I wanted to change the effect (transparent or opaque), or color (RGB) or whether I wanted to change the texture. So when the new material allowed me to change the things and see which one looked better. So ultimately for objects on the island I am just changing RGB values and for the sky I am changing the texture.
So one of the mistakes I was initially making was adjusting the positions in Maya and getting them in the game. So checking whether the character was touching other objects in the island did not work correctly. So later I exported the model without adjusting their positions and centered in Maya to the Assets and adjusted their position in the Engine Graphics. This made the character object interaction work correctly. So looks like even if you move around objects in Maya and export them their centers do not move .
There are other ways in which you can influence the environment. Basically if you press left shift the sky at the back turns to a sunset texture.
Finally, if you keep “0” pressed on the NumPad on your right, a fish will popup and go back as you keep the button pressed. The fish moves up and down in a sin wave which is done by taking the sin of the total seconds elapsed and multiplying that with a height to adjust the amplitude of the wave. The same principle applies to moving the water up and down in a wavering sinusoidal fashion.
The things I have learned is firstly how to make code platform independent and writing and reading binary files. I did not have much clue about what a binary file does in a game. So reading it was totally cryptic for me. But John Paul really explained the concepts about it really well and how to read and interpret the binary files, which will be very useful for my future projects.
Other things that I have learnt is how to design and architect code. I never payed much attention to designing code and organizing code but through this course I have learnt that it is very important. You can learn Graphics, Gameplay or AI but learning how to integrate them and read between the lines is important and is something that I have learned in the class and need to work on it more. I learnt about decoupling the code, abstraction , platform independence and most importantly the simplicity of lua files, so that you can understand it and there is a good amount of clarity.
My biggest take away from this class is the Asset Build pipeline system specially using the Maya Mesh Exporter. On a whole this class has been a enjoyable experience where we focused our attention to the asset build system and also on the basics of Graphics. Many graphics books will explain you tricks but the things we have learned in this class is barely found in books. Such courses are really rare to find, and I will definately look back to the things I have learned in this class for future projects.
The Gameplay Video of my Game is as follows:
Gameplay Controls –
Use arrow keys to control character
1) Left And Right Arrow Key for moving in x axis.
2) Up And Down Arrow Key for moving in z axis.
3) Press X to rotate clockwise.
4) Press C to rotate anticlockwise.
Press Left Shift to Change to Cloudy Sky to Sunset.
Press “0” on the right NumPad and keep it pressed to see the Fish move up and Down.
Click the following link to download the game.
Estimated Time for completion – 20 hours.