Skip to main content

Videogames

Credits
6
Types
  • GIA: Elective
  • GRAU: Elective
  • GCED: Elective
Requirements
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

Others

Weekly hours

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

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.
  • 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.
  • 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
    0h
    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:

    35% Individual 2D game project
    35% 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

    Complementary

    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