Subject

Video game programming

1. Course Title Video game programming
Video Game Programming
2. Code F23L3W152
3. Study Programme
4. Organizer of the study programme (unit, institute, department or division) Faculty of Computer Science and Engineering
5. Degree level (first, second, third cycle) First Cycle
6. Academic year / semester 7 / Winter
7. Number of ECTS credits 6
8. Teacher Katarina Troyanets Dineva, Suzana Loshkova
9. Prerequisites for enrolling in the course Algorithms and Data Structures or Applied Algorithms and Data Structures
10. Objectives of the course programme (competences) The goal of the course is to introduce students to the process of video game programming. To that end, students will be introduced to the basic components of a video game and how they are programmed. Upon completion of the course, the student is expected to understand video game programming concepts and be able to independently or as part of a team develop a simple video game.
11. Course content Lectures:
1. Introduction. Definition. Brief history. Classifications and types of games.
2. Game architecture. Game initialization. Providing an exit from the game.
3. Actors in the game. Ways of defining actors. Composition of objects for defining actor characteristics.
4. Main game loop. Ways to control the flow of the game. Using threads.
5. Caching game resources. Data types. Techniques for efficient data calculation and efficient reading of the same.
6. Input devices. Types. Input control.
7. User interfaces for games. Defining the view. Programming controls and on-screen elements. Localization.
8. Managing in-game events. Adding and controlling in-game sound.
9. Fundamental Principles of In-Game Graphics. Defining Materials. Coordinate Systems and Transformations. Representation of Graphics Objects in the Game. Lighting Model.
10. In-game graphics. Using textures. Representation and programming of 3D scenes.
11. Physics in games. Laws and embedding laws into element behavior. Collision programming.
12. Artificial Intelligence. Techniques for describing the behavior of virtual agents.

Practical Classes:
Introduction to technologies and programming languages for video game programming.
2. More advanced features of technologies and programming languages that enable video game programming.
3. Implementation of examples for defining actors and their characteristics.
4. Implementation of a basic form of the game's main loop.
5. Implementation of a more complex form of the game's main loop. Loading and reading data.
6. Implementation of examples that include game input and input control,
7. Implementation of the game's user interface. Programming controls and on-screen elements. Localization.
8. Implementation of examples with in-game event management. Adding and controlling in-game sound.
9. Examples involving in-game graphics. Defining materials. Coordinate systems and transformations. Representation of graphical objects in the game. Lighting model.
10. Examples that include the use of textures. Representation and programming of 3D scenes.
11. Examples of physics applied in games. Laws and the integration of laws into element behavior. Collision programming.
12. Examples involving artificial intelligence. Techniques for describing the behavior of virtual agents.
12. Learning methods Lectures supported by slide presentations, interactive lectures, practical classes (using equipment and software packages), teamwork, case studies, guest lecturers, independent preparation and defence of a project assignment and seminar paper, and learning in an electronic environment (forums and consultations).
13. Total available time 6 ECTS x 30 hours = 180 hours
14. Distribution of available time 30 + 45 + 15 + 15 + 75 = 180 hours
15. Forms of teaching activities
15.1. Lectures - theoretical instruction 30 hours
15.2. Exercises (laboratory, auditory), seminars, teamwork 45 hours
16. Other forms of activities
16.1. Project assignments 15 hours
16.2. Independent assignments 15 hours
16.3. Home study 75 hours
17. Assessment method
17.1. Tests 10 points
17.2. Seminar paper / project (presentation: written and oral) 15 points
17.3. Activities and learning 10 points
17.4. Final exam 50 points
18. Grading criteria (points / grade)
up to 50 points5 (five) (F)
from 51 to 60 points6 (six) (E)
from 61 to 70 points7 (seven) (D)
from 71 to 80 points8 (eight) (C)
from 81 to 90 points9 (nine) (B)
from 91 to 100 points10 (ten) (A)
19. Requirement for obtaining a signature and taking the final exam completed activities 15.1 and 15.2
20. Language of instruction Macedonian and English
21. Method for monitoring the quality of teaching internal evaluation and survey mechanism
22. Literature
22.1. Required literature
1. James R. Parker | Game Development Using Python (Second Edition) | Mercury Learning and Information | 2021
2. David Baron | Game Development Patterns with Unity 2021: Explore practical game development using software design patterns and best practices in Unity and C# (2nd Edition) | Packt Publishing | 2021
3. Casey Hardman | Game Programming with Unity and C#: A Complete Beginner's Guide | Apress | 2020
4. Al Sweigart | Invent Your Own Computer Games with Python (4th Edition) | No Starch Press | 2016
5. Jason Gregory | Game Engine Architecture (Third Edition) | A K Peters/CRC Press | 2018
6. Mike McShaffry, David Graham | Game Coding Complete, Fourth Edition | Cengage Learning PTR | 2013
7. James R. Parker | Game Development Using Python (Second Edition) | Mercury Learning and Information | 2021
8. David Baron | Game Development Patterns with Unity 2021: Explore practical game development using software design patterns and best practices in Unity and C# (2nd Edition) | Packt Publishing | 2021
9. Casey Hardman | Game Programming with Unity and C#: A Complete Beginner's Guide | Apress | 2020
10. Al Sweigart | Invent Your Own Computer Games with Python (4th Edition) | No Starch Press | 2016
11. Jason Gregory | Game Engine Architecture (Third Edition) | A K Peters/CRC Press | 2018
12. Mike McShaffry, David Graham | Game Coding Complete, Fourth Edition | Cengage Learning PTR | 2013
22.2. Additional literature
No. Author Title Publisher Year