Credits
6
Types
Elective
Requirements
  • Prerequisite: IDI
Department
CS
This course will introduce basic concepts of video game programming. As a result students will design and develop games using the knowledge acquired in the course.

Teachers

Person in charge

  • Antonio Chica Calaf ( )

Others

  • Alejandro Ríos Jerez ( )
  • Francisco Jose Arias Arnedo ( )
  • Jesus Alonso Alonso ( )
  • Oscar Argudo Medrano ( )

Weekly hours

Theory
2
Problems
0
Laboratory
2
Guided learning
0
Autonomous learning
6

Competences

Transversal Competences

Teamwork

  • G5 [Avaluable] - To be capable to work as a team member, being just one more member or performing management tasks, with the finality of contributing to develop projects in a pragmatic way and with responsibility sense; to assume compromises taking into account the available resources.
    • G5.3 - To identify the roles, skills and weaknesses of the different members of the group. To propose improvements in the group structure. To interact with efficacy and professionalism. To negotiate and manage conflicts in the group. To recognize and give support or assume the leader role in the working group. To evaluate and present the results of the tasks of the group. To represent the group in negotiation involving other people. Capacity to collaborate in a multidisciplinary environment. To know and apply the techniques for promoting the creativity.

Technical Competences

Common technical competencies

  • CT1 - To demonstrate knowledge and comprehension of essential facts, concepts, principles and theories related to informatics and their disciplines of reference.
    • CT1.2A - To interpret, select and value concepts, theories, uses and technological developments related to computer science and its application derived from the needed fundamentals of mathematics, statistics and physics. Capacity to solve the mathematical problems presented in engineering. Talent to apply the knowledge about: algebra, differential and integral calculus and numeric methods; statistics and optimization.
  • CT4 - To demonstrate knowledge and capacity to apply the basic algorithmic procedures of the computer science technologies to design solutions for problems, analysing the suitability and complexity of the algorithms.
    • CT4.3 - To demonstrate knowledge and capacity to apply the fundamental principles and the basic techniques of the intelligent systems and its practical application.
  • CT5 - To analyse, design, build and maintain applications in a robust, secure and efficient way, choosing the most adequate paradigm and programming languages.
    • CT5.3 - To design, write, test, refine, document and maintain code in an high level programming language to solve programming problems applying algorithmic schemas and using data structures.
    • CT5.5 - To use the tools of a software development environment to create and develop applications.
    • CT5.6 - To demonstrate knowledge and capacity to apply the fundamental principles and basic techniques of parallel, concurrent, distributed and real-time programming.

Technical Competences of each Specialization

Computer science specialization

  • CCO2 - To develop effectively and efficiently the adequate algorithms and software to solve complex computation problems.
    • CCO2.6 - To design and implement graphic, virtual reality, augmented reality and video-games applications.

Objectives

  1. Understanding the history of game development.
    Related competences: CCO2.6,
  2. Understanding the internal structure of a computer game development team, understanding what are the tasks assigned to each role.
    Related competences: G5.3, CCO2.6,
  3. Understand the basic structure of a game, its main loop, as well as the various components that form it.
    Related competences: CCO2.6, CT5.6,
  4. Learn the basic concepts used in 2D game programming: sprites, tiling, scrolling, multiple layers, parallax and isometric view.
    Related competences: CCO2.6, CT5.3,
  5. Assimilate the basic concepts of 3D game programming like the typical visualization pipeline and the use of scene graphs.
    Related competences: CT1.2A, CCO2.6, CT5.3,
  6. Understand the main acceleration algorithms for interior rendering.
    Related competences: CCO2.6, CT5.3,
  7. Understand the main acceleration algorithms for exterior rendering.
    Related competences: CCO2.6, CT5.3,
  8. Understand how organic objects (trees, grass, water, núbols) are rendered in a game.
    Related competences: CCO2.6, CT5.3,
  9. Understanding the different techniques applied to the animation of characters in video games.
    Related competences: CCO2.6, CT5.3,
  10. Understand and assimilate the various types of cameras that can be used in a video game.
    Related competences: CCO2.6, CT5.3,
  11. Understand the different concepts that apply to the development of particles systems. Learn the options they provide in the generation of visual effects in real time.
    Related competences: CCO2.6, CT5.3,
  12. Understand the fundamentals of the application of artificial intelligence in videogames.
    Related competences: CCO2.6, CT4.3, CT5.3,
  13. Understand what are the capabilities and limitations of the physical simulation systems in current game engines.
    Related competences: CCO2.6,
  14. Assimilate the concepts behind the design of videogames, in particular the importance of the gameplay and its relationship with the usability of applications.
    Related competences: CCO2.6,
  15. Demonstrate the ability to develop a game using an engine created specifically for this purpose.
    Related competences: G5.3, CCO2.6, CT5.5, CT4.3, CT5.3, CT5.6,

Contents

  1. Videogame development history
    History of videogame development since its inception, through its consolidation as a mean of entertainment and its extension to different platforms and media.
  2. Basic concepts
    Basic concepts of videogame programming. This includes the composition of a game programming team, the basic structure of a game, as well as the components of a game engine.
  3. 2D videogame programming
    Concepts 2D game programming. Sprites, tiling, scrollers, multiple layers, parallax, isometric view.
  4. 3D videogame programming
    Basic concepts. Interior and exterior rendering. Organic objects. Character animation. Types of cameras.
  5. Videogame design
    Videogame design concepts. Gameplay. Storyboard of the game. Document design.
  6. Artificial Intelligence for videogames
    Routing, finite state machines and rule systems. Action-oriented intelligence and tactical intelligence.
  7. Particle systems
    Generation, behavior, and extinction of particles and its use to achieve visual effects in a videogame.
  8. Physics
    Collisions. Dynamics of rigid bodies. Restrictions. Springs.
  9. Additional systems
    Scripting systems. Audio management. Network programming.

Activities

Activity Evaluation act


Introduction to game programming

Review of the history of game development. Taxonomy of video games. Composition of a videogame programming team, with the description of the role performed by each team member.

Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
0h

Basic videogame architecture

Description of the basic architecture of a videogame. Game Loop: presentation and update. Definition of a game engine and its components.

Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h

2D game programming

Introduction to 2D game programming, introducing concepts such as sprites, tiling, scrolling, using multiple layers, parallax and isometric view.

Theory
4h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
4h

2D game programming tools

Introduction to the tools to be used for the realization of a 2D game.

Theory
0h
Problems
0h
Laboratory
8h
Guided learning
0h
Autonomous learning
0h

2D game development

Development of a 2D game individually.

Theory
0h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
18h

Introduction to 3D game programming

Review of the graphics pipeline. Description of the use of scene graphs and overlays. Introduction to the need of acceleration techniques. Types of cameras.

Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
4h

3D game programming tools

Description of operation and use of the graphics engine to be used to implement a 3D computer game.

Theory
0h
Problems
0h
Laboratory
22h
Guided learning
0h
Autonomous learning
0h

3D game development

Team-based development of the 3D game.
Objectives: 15
Theory
0h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
44h

Interior rendering

Description of the portal rendering algorithm and BSP structures for accelerating the rendering of indoor scenes.

Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h

Exterior rendering

Description of the data structures types used for exterior rendering (elevation maps, quadtrees). Algorithms for outdoor display (ROAM, geomipmapping). Displaying organic objects.

Theory
4h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
4h

Character animation

Comparison of explicit and implicit models. Description of keyframe-based animation. Use of hierarchies of transformations (skeletons) and transfer to the associated mesh (Skinning). Facial animation.

Theory
4h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
4h

Particle systems

Description of the operation of a particle system. Generation, behavior, extinction and visualization of a particle.

Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h

Artificial intelligence for videogames

Basic routing algorithms. Finite state machines.

Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h

Videogame physics

Concepts used in physics engines used in games engines: collisions, rigid bodies dynamics, springs.

Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h

Additional systems

Description of the capabilities and use of scripting systems, audio and connectivity of game engines.

Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h

Final exam

Written exam to assess the knowledge gained throughout the course.
Objectives: 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Week: 15 (Outside class hours)
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
0h

Teaching methodology

Theory sessions are designed to introduce the concepts of videogame programming, going into detail on the most common algorithms. These classes will be in units of two hours once a week.

Lab sessions will present 2D and 3D tools that will be used to develop the two projects used to grade the practical component of the course. Just as in the case of the theory classes, laboratory classes are given at a rate of two hours per week.

Evaluation methodology

Grading:

30% Individual 2D game project
40% Team-based 3D game project
30% Final exam

The competence "teamwork" will be evaluated based on the distribution of tasks during the development of the 3D game project. To achieve the maximum grade (A) the student must prove the ability to distribute roles in the development of the 3D game optimally. It is also necessary to demonstrate ability to collaborate with other group members.

Bibliography

Basic:

Web links

Previous capacities


S'espera que l'estudiant:

* Hagi cursat l'assignatura de IDI.
* Entengui i sapiga implementar les estructures de dades i algorismes bàsics