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
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.
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
ActivityEvaluation 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:1234567891011121314 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.