Siirry suoraan sisältöön

Game ProgrammingLaajuus (5 cr)

Code: HG00CI44

Credits

5 op

Teaching language

  • English

Responsible person

  • Risto Koskenkorva,

Objective

The objective of the course (objectives):
Have you ever wanted to make a game do your own bidding?

Game development has never before been easier to start with as it currently is, with all the tools freely available. However, to make a game function the way you want with those tools, you should still have a basic understanding of the technological functionality perspective of the game. The technical side includes programming or scripting.

Now is your chance to put your logical skills into use and start doing games that actually do something! Let's get logical!

Course competences:
- Game Production: Student can produce game programming related content for a game project and can work with the tools in meaningful and systematic way. Student can program with and engine-specific language and understand the role of assets. Student can produce value for a game project while working in a game technology related specialist role.
- Learning to Learn: Also takes responsibility for group learning and sharing what has been learned.

The learning objectives of the course (outcomes):
After the course you understand what game functionalities are, and what tools you can use to create them. You also know how they can be used in unison with a game engine in accordance to game technology theory, programming concepts and principles to develop game prototypes (and games). You can apply your knowledge to creating technical building blocks for a game prototype (or a game).

Content

Some of the tools you will familiarise yourself with in this course include a game engine editor, a Integrated Development Environment (IDE) and a version control system. The game technology theory, programming principles and concepts include a game engine Application Programming Interface (API) and Object-Oriented Programming (OOP). You will use at least some features of the game engine specific programming language, the API, and the OOP to implement source code for simple functionalities (or even game mechanics) for a game prototype. You will have experience on the game prototyping process through the creation and usage of the technical building blocks in the game engine.

Qualifications

No previous game programming experience prequisites. Basic competence with a game engine is expected. Sufficient (minimal) programming competence (programming language overall, basic structures, syntax, functions/methods) is expected. Skills with other related tools, like version control system and IDE, are useful.

Assessment criteria, satisfactory (1)

Sufficient (1): You have basic knowledge of the programming language and related core development tools. You understand how to create simple game functionalities and mechanics from scratch with the programming language and the game engine, taking advantage of classes, methods, variables and other basic functionality.

Satisfactory (2): You have basic understanding of most of the concepts of Object-Oriented Programming. You are capable of using simple game functionalities and mechanics with the programming language and the game engine, taking advantage of classes, methods, variables and other basic functionality.

Assessment criteria, good (3)

Good (3): You have basic understanding of most of the concepts of Object-Oriented Programming and can analyse ready scripts and functionalities. You are capable of modifying ready or creating your own simple game functionalities and mechanics with the programming language and the game engine.

Very Good (4): You are capable with main concepts of Object-Oriented Programming. You are capable of creating game functionalities and mechanics from scratch with the programming language and the game engine. You can take advantage of a bit more advanced topics such as events. You have done cooperation with other game developer(s) in your project(s).

Assessment criteria, excellent (5)

Excellent (5): You are very capable with main concepts of Object-Oriented Programming and can critically evaluate ready functionalities. You can use your skills to develop your own game functionalities and mechanics. You are capable of creating complex game functionalities and mechanics with the programming language and the game engine. You have done cooperation with other game developer(s) in your project(s).

Further information

Suitable for anyone who is interested in the game creation process from the technological point of view.

Timing

13.01.2025 - 19.05.2025

Number of ECTS credits allocated

5 op

Mode of delivery

Face-to-face

Unit

Liiketoimintayksikkö

Campus

Pääkampus

Teaching languages
  • English
Seats

20 - 45

Degree programmes
  • Bachelor's Degree Programme in Business Information Technology
Teachers
  • Risto Koskenkorva
Groups
  • HTG24S1
    Bachelor's Degree Programme in Business Information Technology
  • ZJAHTG24S1
    Avoin AMK, Tiko, AMK-polut, BIT, tradenomi amk

Objective

The objective of the course (objectives):
Have you ever wanted to make a game do your own bidding?

Game development has never before been easier to start with as it currently is, with all the tools freely available. However, to make a game function the way you want with those tools, you should still have a basic understanding of the technological functionality perspective of the game. The technical side includes programming or scripting.

Now is your chance to put your logical skills into use and start doing games that actually do something! Let's get logical!

Course competences:
- Game Production: Student can produce game programming related content for a game project and can work with the tools in meaningful and systematic way. Student can program with and engine-specific language and understand the role of assets. Student can produce value for a game project while working in a game technology related specialist role.
- Learning to Learn: Also takes responsibility for group learning and sharing what has been learned.

The learning objectives of the course (outcomes):
After the course you understand what game functionalities are, and what tools you can use to create them. You also know how they can be used in unison with a game engine in accordance to game technology theory, programming concepts and principles to develop game prototypes (and games). You can apply your knowledge to creating technical building blocks for a game prototype (or a game).

Content

Some of the tools you will familiarise yourself with in this course include a game engine editor, a Integrated Development Environment (IDE) and a version control system. The game technology theory, programming principles and concepts include a game engine Application Programming Interface (API) and Object-Oriented Programming (OOP). You will use at least some features of the game engine specific programming language, the API, and the OOP to implement source code for simple functionalities (or even game mechanics) for a game prototype. You will have experience on the game prototyping process through the creation and usage of the technical building blocks in the game engine.

Oppimateriaali ja suositeltava kirjallisuus

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/
- 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

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

Vaihtoehtoiset suoritustavat

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:
- 60 hours of guided in-class activities
- 75 hours of independent work

This is roughly the following hour amounts:
~60 hours: Weekly in-class activities (Lectures, testing and implementation in demo)
~40 hours: Tasks (weekly and other), module assignments, and preparing for lectures
~10 hours: Possible sprint week or prototyping event
~25 hours: Portfolio preparations (for evaluation purposes)

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

Evaluation scale

0-5

Arviointikriteerit, tyydyttävä (1-2)

Sufficient (1): You have basic knowledge of the programming language and related core development tools. You understand how to create simple game functionalities and mechanics from scratch with the programming language and the game engine, taking advantage of classes, methods, variables and other basic functionality.

Satisfactory (2): You have basic understanding of most of the concepts of Object-Oriented Programming. You are capable of using simple game functionalities and mechanics with the programming language and the game engine, taking advantage of classes, methods, variables and other basic functionality.

Arviointikriteerit, hyvä (3-4)

Good (3): You have basic understanding of most of the concepts of Object-Oriented Programming and can analyse ready scripts and functionalities. You are capable of modifying ready or creating your own simple game functionalities and mechanics with the programming language and the game engine.

Very Good (4): You are capable with main concepts of Object-Oriented Programming. You are capable of creating game functionalities and mechanics from scratch with the programming language and the game engine. You can take advantage of a bit more advanced topics such as events. You have done cooperation with other game developer(s) in your project(s).

Assessment criteria, excellent (5)

Excellent (5): You are very capable with main concepts of Object-Oriented Programming and can critically evaluate ready functionalities. You can use your skills to develop your own game functionalities and mechanics. You are capable of creating complex game functionalities and mechanics with the programming language and the game engine. You have done cooperation with other game developer(s) in your project(s).

Qualifications

No previous game programming experience prequisites. Basic competence with a game engine is expected. Sufficient (minimal) programming competence (programming language overall, basic structures, syntax, functions/methods) is expected. Skills with other related tools, like version control system and IDE, are useful.

Further information

Suitable for anyone who is interested in the game creation process from the technological point of view.