Siirry suoraan sisältöön

Advanced Game ProgrammingLaajuus (5 op)

Opintojakson tunnus: HTGP0270

Opintojakson perustiedot


Laajuus
5 op
Vastuuhenkilö
Risto Koskenkorva

Osaamistavoitteet

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

Sisältö

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.

Esitietovaatimukset

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.

Arviointikriteerit, tyydyttävä (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.

Arviointikriteerit, hyvä (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.

Arviointikriteerit, kiitettävä (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).

Oppimateriaalit

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

Toteutustavat

The primary mode of delivery is a combination of in-class activities (demo) 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)

Siirry alkuun