Credits
6
Types
- GIA: Elective
- GRAU: Elective
- GCED: Elective
Requirements
- Prerequisite: IDI
Department
CS
Teachers
Person in charge
- Antonio Chica Calaf ( achica@cs.upc.edu )
Others
- Alejandro Ríos Jerez ( arios@cs.upc.edu )
- Francisco Jose Arias Arnedo ( francisco.jose.arias@upc.edu )
- Genis Bayona Jaume ( genis.bayona@upc.edu )
- Oscar Argudo Medrano ( oargudo@cs.upc.edu )
Weekly hours
Theory
2
Problems
0
Laboratory
2
Guided learning
0
Autonomous learning
6
Competences
Teamwork
- 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.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.3 - To demonstrate knowledge and capacity to apply the fundamental principles and the basic techniques of the intelligent systems and its practical application.
- 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.6 - To design and implement graphic, virtual reality, augmented reality and video-games applications.
Objectives
-
Understanding the history of game development.
Related competences: CCO2.6, -
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, -
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, -
Learn the basic concepts used in 2D game programming: sprites, tiling, scrolling, multiple layers, parallax and isometric view.
Related competences: CCO2.6, CT5.3, -
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, -
Understand the main acceleration algorithms for interior rendering.
Related competences: CCO2.6, CT5.3, -
Understand the main acceleration algorithms for exterior rendering.
Related competences: CCO2.6, CT5.3, -
Understand how organic objects (trees, grass, water, núbols) are rendered in a game.
Related competences: CCO2.6, CT5.3, -
Understanding the different techniques applied to the animation of characters in video games.
Related competences: CCO2.6, CT5.3, -
Understand and assimilate the various types of cameras that can be used in a video game.
Related competences: CCO2.6, CT5.3, -
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, -
Understand the fundamentals of the application of artificial intelligence in videogames.
Related competences: CCO2.6, CT4.3, CT5.3, -
Understand what are the capabilities and limitations of the physical simulation systems in current game engines.
Related competences: CCO2.6, -
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, -
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
-
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. -
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. -
2D videogame programming
Concepts 2D game programming. Sprites, tiling, scrollers, multiple layers, parallax, isometric view. -
3D videogame programming
Basic concepts. Interior and exterior rendering. Organic objects. Character animation. Types of cameras. -
Videogame design
Videogame design concepts. Gameplay. Storyboard of the game. Document design. -
Artificial Intelligence for videogames
Routing, finite state machines and rule systems. Action-oriented intelligence and tactical intelligence. -
Particle systems
Generation, behavior, and extinction of particles and its use to achieve visual effects in a videogame. -
Physics
Collisions. Dynamics of rigid bodies. Restrictions. Springs. -
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
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
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
-
3D games
- Watt, A.H.; Policarpo, F,
Addison-Wesley,
2001-2003.
ISBN: 0201619210
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002553659706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Game engine architecture
- Gregory, J,
Taylor & Francis, CRC Press,
2018.
ISBN: 9781138035454
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004158889706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Core techniques and algorithms in game programming
- Sánchez-Crespo, D,
New Riders,
2004.
ISBN: 0131020099
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003929749706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Complementary
-
2D Game Development: From Zero To Hero
- Penazzo, Daniele,
https://www.penaz.it/en/active-projects/2dgd_f0th.html
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