Gabriel Cantres gave DPerry.com a stream of updates and impressions from his stint at the Full Sail School of Game Development and Design. This is the sixth in a seven part series.
My stay here at Full Sail is slowly coming to an end. All that is left for graduation is the completion and presentation of our final game project. To get to this stage I had to finish with the second month of Real Time Modeling for Games (RTMG) while completing the Immersive Multiplayer Gaming course (IMG) in June. After these courses, during July, we worked our way through Artificial Intelligence (AI) and Asset Production (AP).
Our second month of RTMG was a bit different than usual. We were in the awkward position of taking that course while it was being redesigned. Normally, each person in the class would create a small 3D game using Full Sail's Humid engine. This time though, we were required to complete a smaller scale project with Humid and then we had some extra free time to get our hands dirty with the newly acquired RenderWare Graphics SDK. The lectures during the second month changed focus from the artistic side of 3D and got more programming specific.
In lectures we learned about 3D engines and their general architecture. We learned what happens in an engine from getting user input to updating all the entities movements and behaviors in 3D space, then making sure that unnecessary geometry does not get rendered through the process of culling, and finally the rendering which will display the actual game on the computer screen. A big part of lectures was taken up by collisions. Collision is used a for a lot of things in games, for example, to tell when an enemy has been hit by a bullet, or when a character has collided with world geometry. We were lectured on a lot of different types of 3D collisions using different types of 3D geometry, and the mathematics behind these collisions.
For our project we had to implement various camera modes and add behaviors to the model we created during the first month of the course. We also had to implement some sort of AI to a secondary entity in our world, make projectiles fire from our model, and have at least 5 different types of collisions. This was my first time freely programming movement in a 3D environment and I personally believe this is the most fun and interesting part of game programming.
The Immersive Multiplayer Gaming course was like two courses in one. During the first half of the course we learned how to program 3D geometry using the OpenGL API. At the beginning we learned how to create different types of geometry and draw it on the screen with different colors and polygons. As the course kept progressing we continued learning how to apply other things such as light, transparency, textures, fog, and materials to our scenes.
In lab we practiced what we were lectured on, and once we completed the regular labs we started working on our 3D world. We were required to program a small 3D environment and apply lighting, textures, and materials to it. The second half of IMG was dedicated to networking. We used MFC sockets to create a basic chat program, in the process we learned about multithreaded programming, which will allow information to be effectively transferred from one computer to another. We were then stepped through the creation of a basic server program that we would later connect multiple computers to. This way we were able to spawn multiple entities in our small 3D environment to simulate an online multiplayer game. A lot of the material from RTMG complemented what we were learning in IMG. I was also able to get extra practice on my 3D math while working on my 3D world which is definitely a plus.
After RTMG and IMG we finally got to start with our final project. Full Sail's final game project requires students to split up in groups and create a game using any means possible. Our class was one of the first to get the extended 3 month development period for the project, as opposed to the 2 months that were allowed before. The extra month belongs to Asset Production; this additional time allows students to have a better pre-production stage. This way they will be more prepared for the actual development of the game and have schedules, flowcharts, and a design document to aid the process. For final game project the students get to decide their teams.
The Course Director has the right to split up groups if they are too unbalanced, but this rarely happens. Each group has complete freedom over their game design and they can split tasks and responsibilities as they see fit. Lectures for this course were short and light. During the first lecture we were taught how to use Microsoft Project to schedule all of our tasks for the game. For the rest of the lectures we were mostly given lots of real world advice and things that we should remember during the project's crunch time. We also discussed different ways to deal with people in a team, how to maintain group synergy and health, and how to have fast and effective meetings. The rest of the time was spent working on documentation, working with outside artists and sound designers, the game's design, and researching technologies for the project.
During the time we had AP we were also in the Artificial Intelligence course. Path finding took the biggest portion of the lectures' time. Path finding allows a character in a game is able to find its way around a level. We learned about a lot of different path finding algorithms and all of their differences, advantages, and disadvantages.
We talked about different types of behaviors and how it is possible to simulate these behaviors in code. We learned about fuzzy logic and how it allows more flexible and realistic decision making for an entity in a game, and neural networks which gives an entity the ability to learn from actions. We also discussed how a Generation Algorithm can be used to simulate chromosomes so that a program can learn more every time the algorithm is executed.
In lab we programmed a tree data structure, a finite state machine to control an entity's different states, and 3 path finding algorithms. These were Breadth-First, Dijkstra's, and A* (A-star) which is the most commonly used algorithm for games. Once our programs worked, we were required to modify them to have better performance, and more effective results. AI was a really cool and interesting class; it's really amazing how human beings can create a lifelike entity in a virtual world with complex behaviors and decision making processes. I hope that as this particular field of science grows so does the complexity and realism of the AI in games.
It's been almost a year since I started studying at Full Sail. During this year the school has been growing and changing, hopefully for the best. There are more students coming into the gaming degree and more students that don't make it to the end. All of the courses have been getting harder and harder, which is good because it guarantees that any student who graduates from the Full Sail Game Design Program is among the best candidates for positions in the industry. Now that I have completed every course in the gaming program I am prepared for the challenges that await during the development of our final project game.
Thanks for signing in, . Now you can comment. (sign out)
(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)