Skip to main content

Advanced Game Programming (5 cr)

Code: HTGP0270-3005

General information


Enrollment
18.11.2024 - 09.01.2025
Registration for the implementation has ended.
Timing
13.01.2025 - 19.05.2025
Implementation is running.
Number of ECTS credits allocated
5 cr
Local portion
5 cr
Mode of delivery
Face-to-face
Unit
School of Business
Campus
Main Campus
Teaching languages
Finnish
Seats
20 - 30
Degree programmes
Bachelor's Degree Programme in Business Information Technology
Teachers
Risto Koskenkorva
Groups
HTG23S1
Bachelor's Degree Programme in Business Information Technology
Course
HTGP0270

Realization has 27 reservations. Total duration of reservations is 47 h 15 min.

Time Topic Location
Mon 20.01.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35AP10 Projektitila TIKO/BIT
Tue 21.01.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35AP10 Projektitila TIKO/BIT
Mon 27.01.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35AP10 Projektitila TIKO/BIT
Tue 28.01.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35AP10 Projektitila TIKO/BIT
Mon 03.02.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35AP10 Projektitila TIKO/BIT
Tue 04.02.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35AP10 Projektitila TIKO/BIT
Mon 10.02.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35AP10 Projektitila TIKO/BIT
Tue 11.02.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35AP10 Projektitila TIKO/BIT
Mon 17.02.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35AP10 Projektitila TIKO/BIT
Tue 18.02.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35AP10 Projektitila TIKO/BIT
Mon 03.03.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35AP10 Projektitila TIKO/BIT
Tue 04.03.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35AP10 Projektitila TIKO/BIT
Mon 10.03.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35AP10 Projektitila TIKO/BIT
Tue 11.03.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35AP10 Projektitila TIKO/BIT
Mon 17.03.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35AP10 Projektitila TIKO/BIT
Tue 18.03.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35AP10 Projektitila TIKO/BIT
Mon 24.03.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35AP10 Projektitila TIKO/BIT
Tue 25.03.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35AP10 Projektitila TIKO/BIT
Mon 31.03.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35AP10 Projektitila TIKO/BIT
Tue 01.04.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35AP10 Projektitila TIKO/BIT
Mon 07.04.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35AP10 Projektitila TIKO/BIT
Tue 08.04.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35AP10 Projektitila TIKO/BIT
Mon 14.04.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35AP10 Projektitila TIKO/BIT
Tue 15.04.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35AP10 Projektitila TIKO/BIT
Tue 22.04.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35F406 Oppimistila UTI/TEKN
Mon 28.04.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Lecture
R35F406 Oppimistila UTI/TEKN
Tue 29.04.2025 time 15:15 - 17:00
(1 h 45 min)
Advanced Game Programming HTGP0270-3005 - Demo
R35F406 Oppimistila UTI/TEKN
Changes to reservations may be possible.

Evaluation scale

0-5

Content scheduling

This section describes the scheduling of the course. Meaning what happens every week (rhythm, timing, weekly tasks, mandatory parts of the implementation)?

The course consists of 5 modules:
- Modules are 3-5 weeks long
- Every module is mandatory and has weekly in-class activities and independent work
- At the end of each module, there is a mandatory module assignment that checks the student's progress and module-related understanding and skills
- Detailed module contents will be available in the learning environment

The course starts with a 3 week long module. The module focuses on the course introduction, setting up the tools and environments as well as taking the first dive into the course topic. By the end to the 1st module every student must have fill the following criteria:
- Participated to all of the course in-class activities (marked participation)
- Returned the module assignment that has been accepted
- If 1 or more of the criteria is not filled, the student will be considered as inactive / withdrawn from the course (according to Jamk course resource requirements)

Weekly scheduling:
~4 hours per week for mandatory in-class activities (theory, testing, and implementation in demo) -> Possibly in 2 separate sessions
~4-6 hours per week of independent work relating to the tasks (weekly and other), module assignments, preparing for the lectures, and end product work (everything should further the student's end product)

This means that you should reserve ~8-10 hours of working time every week for this course!

The course also expects every student to have an end product to show by the end of the course:
- The end product demonstrates the student's understanding and skills related to the topics of the course
- The course ends with a final end result presentations in May

Objective

Objectives (goals):
The main objective is to have a deeper understanding of the structure and functionality of a game. The student who completes the course has skills to implement complex games from a technical perspective, taking advantage of a game engine. The student should also have understanding and skills to use advanced programming concepts (software design principles) like SOLID principles, game programming patterns and practices. Basically, to understand how to efficiently use the programming language and clean code in unison with a game engine to create extendable (maintainable) games and game structures.

The student will learn how to use the concepts and principle on selected programming language and the game engine to create complex and well structured game projects.

Learning outcomes:
After completing this course, you should be capable of making complex games with the programming language and selected game engine. You should also have more in-depth programming language expertise, extending from basic language usage to advanced programming concepts (software design principles) such as SOLID principles, generics and game design / programming patterns and practices. All of which will give you better tooling for game development.

Course competences:
Game production competence
Software engineering competence

Content

Done enough basic scripting and would like to dive deeper in the code?

The clean and well organised structure is one of the most important things in game development projects. When projects get bigger, the programming is not only about trying to find quick hack to the things but more of making things in a sustainable, extendable and performant way.

This course extends your game making and programming skills to focus on better understanding of programming language, good architectural decisions and common games related logic.

Materials

This field describes the public learning material that is required for passing the course.

Learning material:
- Teacher's written materials
- Lecture materials (Slides and in the learning environment)
- Databases (in the learning environment)
- Materials related to implementation (in the learning environment)
- Extra reading materials can be found from the web and Books24x7
- Tutorial materials can be found from the web and YouTube (or the course database)

Practicalities and used tools:
- A Version Control System (VCS) compatible with the game engine (e.g. Git, GitHub as the location)
- A game engine (e.g. Unity / Unreal Engine / Godot...)
- Integrated Development Environment (IDE) related to the game engine (e.g. Visual Studio / JetBrains...)
- A programming language related to the game engine (e.g. C# / C++...)

Some tool related public learning materials:
- Microsoft. (2024). C# programming guide [Documentation website]. https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/
- Nystrom, R. (2014). Game Programming Patterns [The book in website format]. https://gameprogrammingpatterns.com/
- Unity Technologies. (2024a). Unity - Manual [Documentation website]. https://docs.unity3d.com/Manual/index.html
- Unity Technologies. (2024b). Unity - Scripting API [Application Programming Interface website]. https://docs.unity3d.com/ScriptReference/index.html

Public learning material links:
- SOLID principles: https://en.wikipedia.org/wiki/SOLID
- Clean C#: https://leanpub.com/cleancsharp
- Game programming patterns: https://gameprogrammingpatterns.com/contents.html

Teaching methods

This field describes the methods of teaching and learning used in the implementation and how student guidance will be arranged.

A blended model:
The primary mode of delivery is a combination of activities in-class on campus, and in specific cases on-line.
However, if the COVID-19 or other similar situation requires the learning will be supported by on-line activities.

The activities will deepen the learning in the following possible ways:
- Theoretical lectures and testing
- Individual and possible group work (implementation)
- Individual and possible group exercises, learning tasks (assignments) and reflection
- Guidance in the form of guided demos and end result reviews (also help with challenges)

The course activities can also contain:
- Project-based learning
- Flipped learning (learning about the topic before theory lectures)
- Knowledge tests
- Topic specific focus teaching
- Topic specific research
- Database use for challenges/problems/tutorials (problem based learning)

Participation to possible on-line activities:
- Zoom is used for on-line activities
- Requires a working webcam, headphones and microphone
- If one or more of the following are missing, the participation can be declined

Artificial intelligence (AI) usage:
- The use of AI and AI-assisted tools is permitted and recommended
- Pure copying (plagiarism) is still prohibited and will result in appropriate penalties

Official communication channels:
- Teams (primary) and email
- Course news (forum)
- DiscordApp / WhatsApp / other comms are prohibited from the faculty members
- The sessions can be recorded and the links added to the workspace (recording permission will always be requested from the participants beforehand)

Employer connections

This field describes connections to working life and practical training.

The course might have visiting lecturers (game industry experts), and possibly an excursion (virtual or physical).

The possible course project will mimic real-life project experiences.

Exam schedules

This field indicates the date and time of the actual exam and all retake opportunities.

There will be no exam on this course!
- Every student reserves a 30 min evaluation slot, where they will show their end results (portfolio) to verify the skills and knowledge required to pass the course
- The evaluation will be carried out with 1-on-1 conversations together with the course teacher(s)
- The reservation of the evaluation slots will be made possible through the learning platform

The date and time of the evaluation:
- Mid May
- Exact dates and the chances to retakes are announced during the course

Completion alternatives

This field describes the alternative completion methods for the course.

You have the right to apply for recognition of your studies if you have prior learning (e.g. university studies completed elsewhere) that can be accredited towards the degree you are currently completing.

The recognition of prior learning is possible in the following ways:
- Accreditation of higher education studies (replacement or inclusion)
- Recognition of informal learning

More precise info:
- JAMK Degree Regulations, section 17
- https://www.jamk.fi/en/for-students/degree-student/recognition-of-prior-learning-and-experience

Student workload

This section describes the learning assignments and the time needed for completing them and the student’s other scheduling.

The workload of 5 credits is 135 hours. The load is distributed the following way:
- 55 hours of guided in-class activities
- 80 hours of independent work

This is roughly the following hour amounts:
~55 hours: In-class activities (Lectures, testing and implementation in demo)
~35 hours: Tasks (weekly and other), module assignments, and preparing for lectures
~30 hours: End product work
~15 hours: Portfolio preparations (for evaluation purposes)

Assessment criteria, satisfactory (1)

Sufficient (1): You have basic knowledge of the creation of complex games with the programming language, the game engine, and other tools. You know the SOLID principles and some of the game design patterns. You understand and are capable of using the main concepts of object-oriented programming and can utilize them to develop your own game. You can be productive in a limited role as a programmer.

Satisfactory (2): You understand the process of the creation of complex games with the programming language, the game engine, and other tools. You can use the SOLID principles and some of the game design and programming patterns. You can make structurally good code.

Assessment criteria, good (3)

Good (3): You can analyze the process of the creation of complex games with the programming language, the game engine, and other tools. You are able to identify and analyze some of the game design and programming patterns, as well as SOLID principles. You can be productive in a role as a programmer.

Very Good (4): You are capable of creating highly complex games with the programming language, the game engine, and other tools. You take advantage of some of the game design and programming patterns, as well as SOLID principles in your code.

Assessment criteria, excellent (5)

Excellent (5): You are capable of creating highly complex, and well organized game projects with the programming language, the game engine, and other tools. You are able to evaluate and describe the advantages of some of the game design and programming patterns, as well as SOLID principles. You can produce exceptionally good quality code according to CLEAN principles. You have done cooperation with another programmer in your project(s).

Qualifications

You need to posses intermediate skills in game programming and game engines as well as understanding of the Object-Oriented Programming paradigm, and therefore this course is not for you are not familiar with modern game development tools and programming. A previous game mechanics related code base is highly recommended.

Sufficient skills in the programming language, the OOP paradigm, the game engine, and other related tools.

Go back to top of page