Siirry suoraan sisältöön

Advanced Game ProgrammingLaajuus (5 op)

Tunnus: HTGP0270

Laajuus

5 op

Vastuuhenkilö

  • Risto Koskenkorva,
Ajoitus

13.01.2025 - 19.05.2025

Opintopistemäärä

5 op

Toteutustapa

Lähiopetus

Yksikkö

Liiketoimintayksikkö

Toimipiste

Pääkampus

Opetuskielet
  • Suomi
Paikat

20 - 30

Koulutus
  • Bachelor's Degree Programme in Business Information Technology
Opettaja
  • Risto Koskenkorva
Ryhmät
  • HTG23S1
    Bachelor's Degree Programme in Business Information Technology

Oppimateriaali ja suositeltava kirjallisuus

Tässä kentässä kuvataan kurssin suorittamiseen vaadittava julkinen oppimateriaali.

Oppimateriaalit:
- Opettajan kirjalliset materiaalit
- Luentomateriaalit (Diat ja oppimisympäristössä)
- Tietokannat (oppimisympäristössä)
- Toteuttamiseen liittyvät materiaalit (oppimisympäristössä)
- Ylimääräistä luettavaa löytyy verkosta ja Books24x7:stä
- Oppimateriaalit löytyvät verkosta ja YouTubesta (tai kurssin tietokannasta)

Käytännöt ja käytetyt työkalut:
- Pelimoottorin kanssa yhteensopiva versionhallintasysteemi (Version Control System - VCS) (esim. Git, GitHub sijaintina)
- Pelimoottori (esim. Unity / Unreal Engine / Godot...)
- Pelimoottoriin liittyvä integroitu kehitysympäristö (IDE) (esim. Visual Studio / JetBrains...)
- Pelimoottoriin liittyvä ohjelmointikieli (esim. C# / C++...)

Joitakin työkaluihin liittyviä julkisia oppimateriaaleja:
- Microsoft. (2024). C# programming guide [Dokumentaatiosivusto]. 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 [Dokumentaatiosivusto]. https://docs.unity3d.com/Manual/index.html
- Unity Technologies. (2024b). Unity - Scripting API [Application Programming Interface -sivusto]. https://docs.unity3d.com/ScriptReference/index.html
- Unity Technologies. (2024c). Unity Graphics manual [Dokumentaatiosivusto]. https://docs.unity3d.com/Manual/Graphics.html

Muita linkkejä:
- SOLID principles: https://en.wikipedia.org/wiki/SOLID
- Clean C#: https://leanpub.com/cleancsharp
- Game programming patterns: https://gameprogrammingpatterns.com/contents.html

Opetusmenetelmät

Tässä kentässä kuvataan toteutuksessa käytetyt opetus- ja oppimismenetelmät ja miten opiskelijan ohjaus järjestetään.

Sekoitettu malli:
Ensisijainen toimitustapa on toimintojen yhdistelmä luokassa kampuksella ja tietyissä tapauksissa verkossa.
Jos COVID-19 tai muu vastaava tilanne kuitenkin vaatii, oppimista tuetaan verkkotoiminnoilla.

Toiminta syventää oppimista seuraavilla mahdollisilla tavoilla:
- Teoreettiset luennot ja testaus
- Yksilöllistä ja mahdollista ryhmätyötä (toteutus)
- Yksilölliset ja mahdolliset ryhmäharjoitukset, oppimistehtävät (tehtävät) ja reflektointi
- Opastus ohjattujen demojen ja lopputulosten arvioinnin muodossa (apua myös haasteisiin)

Kurssin toiminta voi sisältää myös:
- Projektipohjainen oppiminen
- Käänteinen oppiminen (aiheen oppiminen ennen teorialuentoja)
- Pistokokeet
- Aihekohtainen opetus
- Aihekohtainen tutkimus
- Tietokannan käyttö haasteisiin/ongelmiin/tutoriaaleihin (ongelmapohjainen oppiminen)

Osallistuminen mahdollisiin verkkotoimintoihin:
- Zoomaa käytetään online-toimintoihin
- Vaatii toimivan web-kameran, kuulokkeet ja mikrofonin
- Jos yksi tai useampi seuraavista puuttuu, osallistuminen voidaan hylätä

Tekoälyn (AI) käyttö:
- Tekoälyn ja tekoälyavusteisten työkalujen käyttö on sallittua ja suositeltavaa
- Puhdas kopiointi (plagiointi) on edelleen kiellettyä ja siitä seuraa asianmukaiset rangaistukset

Viralliset viestintäkanavat:
- Joukkueet (ensisijainen) ja sähköposti
- Uutiset (foorumi)
- DiscordApp / WhatsApp / muut viestit ovat henkilökunnan jäseniltä kiellettyjä
- Istunnot voidaan tallentaa ja linkit lisätä työtilaan (tallennuslupa pyydetään aina etukäteen osallistujilta)

Harjoittelu- ja työelämäyhteistyö

Tämä kenttä kuvaa yhteyksiä työelämään ja harjoitteluun.

Kurssilla voi olla vierailevia luennoitsijoita (pelialan asiantuntijoita) ja mahdollisesti retki (virtuaalinen tai fyysinen).

Mahdollinen kurssiprojekti jäljittelee tosielämän projektikokemuksia.

Tenttien ajankohdat ja uusintamahdollisuudet

Tämä kenttä ilmoittaa varsinaisen kokeen päivämäärän ja kellonajan sekä kaikki uusintamahdollisuudet.

Tällä kurssilla ei ole tenttiä!
- Jokainen opiskelija varaa 30 minuutin arviointiajan, jossa hän esittelee lopputuloksensa (portfolio) varmistaakseen kurssin suorittamiseen vaadittavat taidot ja tiedot
- Arviointi suoritetaan 1-on-1-arviointikeskusteluilla kurssin opettajan/opettajien kanssa
- Arviointipaikkojen varaaminen on mahdollista oppimisalustan kautta

Arvioinnin päivämäärä ja kellonaika:
- Toukokuun puoliväli
- Arviointien ja uusintojen tarkat päivämäärät ilmoitetaan kurssin aikana

Vaihtoehtoiset suoritustavat

Tässä kentässä kuvataan kurssin vaihtoehtoiset suoritustavat.

Sinulla on oikeus hakea opintosi hyväksilukemista, jos sinulla on aiempaa koulutusta (esim. muualla suoritettua yliopisto-opintoja), joka voidaan hyväksyä parhaillaan suorittamaasi tutkintoon.

Aiemman osaamisen tunnustaminen on mahdollista seuraavilla tavoilla:
- Korkeakouluopintojen hyväksilukeminen (korvaaminen tai sisällyttäminen)
- Muulla tavoin hankitun osaamisen tunnistaminen ja tunnustaminen

Tarkempaa tietoa:
- JAMKin tutkintosäännöt, 17 §
- https://www.jamk.fi/fi/opiskelijoille/tutkinto-opiskelija/aiemman-oppimisen-ja-kokemuksen-tunnustus

Opiskelijan ajankäyttö ja kuormitus

Tässä osiossa kuvataan oppimistehtävät ja niiden suorittamiseen tarvittava aika sekä opiskelijan muut aikataulut.

5 opintopisteen työmäärä on 135 tuntia. Kuorma jakautuu seuraavasti:
- 55 tuntia luokassa tapahtuvaa ohjattua toimintaa
- 80 tuntia itsenäistä työskentelyä

Tämä on suunnilleen seuraavat tuntimäärät:
~55 tuntia: Luokassa harjoitukset (Luennot, testaus ja toteutus demossa)
~35 tuntia: Tehtävät (viikko- ja muut), moduulitehtävät ja valmistautuminen luennoille
~30 tuntia: Lopputuotteen tekemiseen liittyvä työ
~15 tuntia: Portfolion valmistelu (arviointia varten)

Sisällön jaksotus

Tässä osiossa kuvataan kurssin aikataulu. Tarkoittaen, mitä tapahtuu joka viikko (rytmitys, ajoitus, viikoittaiset tehtävät, toteutuksen pakolliset osat)?

Kurssi koostuu 5 moduulista:
- Moduulit ovat 3-5 viikkoa pitkiä
- Jokainen moduuli on pakollinen ja sisältää viikoittaista luokassa tapahtuvaa toimintaa ja itsenäistä työtä
- Jokaisen moduulin lopussa on pakollinen moduulitehtävä, joka tarkistaa opiskelijan edistymisen ja moduuliin liittyvän ymmärryksen ja taidot
- Yksityiskohtainen moduulin sisältö tulee olemaan saatavilla oppimisympäristössä

Kurssi alkaa 3 viikon mittaisella moduulilla. Moduuli keskittyy kurssin esittelyyn, työkalujen ja ympäristöjen asettamiseen sekä ensimmäiseen sukeltamiseen kurssin aiheeseen. 1. moduulin loppuun mennessä jokaisen opiskelijan tulee täyttää seuraavat kriteerit:
- Osallistunut kaikkiin kurssin sisäisiin aktiviteetteihin (osallistui selvästi)
- On palauttanut moduulitehtävän, joka on hyväksytty
- Jos 1 tai useampi kriteereistä ei täyty, opiskelija katsotaan ei-aktiiviseksi/kurssilta poistuneeksi (Jamk-kurssin resurssivaatimusten mukaisesti)

Viikkoaikataulu:
~4 tuntia viikossa pakollisiin luokassa tapahtuviin toimintoihin (teoria, testaus ja toteutus demossa) -> Mahdollisesti kahdessa erillisessä istunnossa
~4-6 tuntia viikossa tehtäviin liittyvää itsenäistä työtä (viikko- ja muut), moduulitehtävät, luennoille valmistautuminen ja lopputuotteen tekeminen (kaiken tulee edistää opiskelijan lopputuotetta)

Tämä tarkoittaa, että tälle kurssille kannattaa varata joka viikko ~8-10 tuntia työaikaa!

Kurssi edellyttää myös, että jokaisella opiskelijalla on lopputuote esitettäväksi kurssin loppuun mennessä:
- Lopputuote osoittaa opiskelijan ymmärryksen ja taidot liittyen kurssin aiheisiin
- Kurssi päättyy lopputulosten esittelyyn toukokuussa

Arviointiasteikko

0-5

Ilmoittautumisaika

20.11.2023 - 04.01.2024

Ajoitus

08.01.2024 - 20.05.2024

Opintopistemäärä

5 op

Virtuaaliosuus

2 op

Toteutustapa

60 % Lähiopetus, 40 % Verkko-opetus

Yksikkö

Liiketoimintayksikkö

Toimipiste

Pääkampus

Opetuskielet
  • Suomi
Paikat

20 - 30

Koulutus
  • Bachelor's Degree Programme in Business Information Technology
Opettaja
  • Risto Koskenkorva
Ryhmät
  • HTG22S1
    Bachelor's Degree Programme in Business Information Technology
  • ZJA24KI
    Avoin amk, tiko

Lisätietoja opiskelijoille

Avoin amk 2
EduFutura 3

Arviointiasteikko

0-5

Enrollment

01.11.2022 - 05.01.2023

Timing

09.01.2023 - 19.05.2023

Number of ECTS credits allocated

5 op

Virtual portion

2 op

Mode of delivery

60 % Face-to-face, 40 % Online learning

Unit

Liiketoimintayksikkö

Campus

Pääkampus

Teaching languages
  • English
Seats

0 - 30

Degree programmes
  • Bachelor's Degree Programme in Business Information Technology
Teachers
  • Risto Koskenkorva
  • Peter Ciszek
Groups
  • ZJA23KI
    Avoin AMK, tiko
  • HTG21S1
    Bachelor's Degree Programme in Business Information Technology
  • ZJK23KI
    Korkeakoulujen välinen yhteistyö, TIKO

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.

Oppimateriaali ja suositeltava kirjallisuus

Public learning materials:
- SOLID principles: https://en.wikipedia.org/wiki/SOLID
- Clean C#: https://leanpub.com/cleancsharp
- Game programming patterns: https://gameprogrammingpatterns.com/contents.html
- Unity API: https://docs.unity3d.com/ScriptReference/index.html
- Unity manual: https://docs.unity3d.com/Manual/index.html
- C# programming guide: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/

Other learning material:
- Databases in the learning environment
- Materials in the learning environment

Practicalities and used tools:
- C# (or C++) as the programming language
- Visual Studio (or similar) as the IDE
- Unity (or Unreal Engine) as the Game Engine
- GitHub as the Version Control System
- Extra reading materials can be found from the web and Books24x7
- Tutorial materials can be found from the web and YouTube
- Zoom is used for lectures
- Teams and email are used for official communication
- DiscordApp / WhatsApp / other comms are used for questions, answers and discussions
- All the sessions are recorded and the links are added to the workspace

Teaching methods

The primary mode of delivery is a combination of in-class activities on campus and on-line lectures. The lectures will be recorded to support opportunities for 24/7 learning. The in-class activities deepen the learning in the forms of tutorials, individual and group works, reflection and guidance. However, if the COVID-19 or other similar situation requires the learning will be supported by on-line tutorials and activities.

A blended model:
- The course can also contain project based learning, learning tasks, knowledge tests, topic specific focus teaching, database use for challenges/problems/tutorials (problem based learning)

Employer connections

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

Exam schedules

There is no exam on this course. Every student reserves a 30 min evaluation slot where they will show the task and project 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. The reservation of the evaluation slots will be made possible through the learning platform.

During the last 2-3 weeks after classes will be reserved for the 1-on-1 evaluations. Students can use this time to make games in voluntary game projects.

Vaihtoehtoiset suoritustavat

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 three primary ways: accreditation (replacement or inclusion), recognition of informal learning and studification. More precise info: JAMK Degree Regulations, section 17.

Student workload

One credit corresponds to an average of 27 hours of work, which means that the load of five credits is approximately 135 hours. The load is distributed roughly the following way:
- Lectures: ~28h
- In-class activities: ~23h
- Weekly tasks: ~34h
- Projects and preparing for lectures: ~40h
- End task / portfolio: ~10h

Content scheduling

General scheduling:
- 2 hours per week for lectures (virtual)
- 1,75 hours per week for in-class activities

Further information

Open UAS 5 are included in the total capacity (spots)

Evaluation scale

0-5

Arviointikriteerit, tyydyttävä (1-2)

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.

Arviointikriteerit, hyvä (3-4)

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.