Development of 3D Games

Development of 3D Games

Course title
Development of 3D Games
Course tag
Course status
Independent work
Teachers and associates
PhD Goran Đambić, Senior Lecturer
Ivan Porkolab, Instructor
The course aims
The aim is to enable students to independently create 3D games using programming framework Unity. Students will adopt new knowledge: the basics of physics and linear algebra and their application in Unity, work with graphics and textures, illuminating and shading, and player controls used in 3D computer games.
Differences between 2D and 3D games. The basics of 3D physics. Use of force, acceleration, and speed of objects. Use of textures, normals maps, and height maps. Using Dynamic and Predicted Illumination. Shading. Controllers for the players. Collisions and collision detection in 3D space. Physical models. Specifics of game development for different platforms.
Introduction to Game Design, Prototyping, and Development: From Concept to Playable Game with Unity and C# – Jeremy Gibson Bond
Supplementary literature
Unity 5.x Shaders and Effects Cookbook - Alan Zucconi,‎ Kenneth Lammers
Unity UI Cookbook - Francesco Sapio
Unity 5.x Cookbook - Mat Smith

Minimum learning outcomes

  1. Implement basic UI elements used in 3D games (images, buttons, panels...)
  2. Implement some of predefined player control systems.
  3. Design and build simple 3D level using predefined elements.
  4. Detect collisions and interactions of objects using integrated collision detection systems.
  5. Implement and configure integrated physical models.
  6. Use images as textures, use atlases.
  7. Choose and find premade shaders and materials from the Asset store. Modify those materials and shaders in order to change its visual appearance.
  8. Setup appropriate lightning on a scene and configure it to achieve desired atmosphere.
  9. Implement simple permanent storage system.

Preferred learning outcomes

  1. Implement advanced UI elements used in 3D games (scrollable elements, table views, dynamically generated elements...)
  2. Define and implement self made player control system.
  3. Design and build more complex level by combining predefined and custom made elements.
  4. Implement custom collision detection system and asses where it should be used in place of integrated one in order to achieve performance gain.
  5. Define and implement custom made physical models and use them both solely and in combination with integrated ones.
  6. Create bump maps, displacement maps and transparency maps out of textures.
  7. Build custom materials and shaders and use them on the game elements.
  8. Cache and bake lightning on objects and use it in game.
  9. Implement abstract storage system which will be able to store data on disk or remote REST service.