GDD 2


Overview


About

Game Design and Development 2 is an in-depth course about Game Development. It covers selected topics such as AI in Games, the Game Design Process, Game Assets and Photogrammetry, Procedural Content Generation, Data Analytics, and more. We recommend attending Game Design and Development 1 before this course.

The course consists of interactive presentations, guest lectures, individual assignments, and a group assignment where you design and implement your own game.

This semester, most of the theoretical lectures will be held on-site in the i11 lecture hall. There is no mandatory attendance except for the course introduction lecture, tutoring interviews, and presentations.

Schedule

This table shows when lectures are held and submissions are due. This semester’s schedule is subject to change, some dates will be updated based on current circumstances.

Green-highlighted dates are mandatory!


DateEvent
2024-03-08, Fri[Lecture] Course Introduction (Slides)
2024-03-15, Fri[Lecture] Game Design Overview, Story, Puzzle,..
2024-03-15, Fri[I-00] Say Hello (Submission)
2024-03-22, Fri[Lecture] Game Design Ideas and Juiciness
2024-03-22, Fri[G-01] Group Registration, Game Idea (Submission)
2024-04-12, Fri[Students] Game Idea Pitch and Discussion
2024-04-19, Fri[Lecture] AI for Game Design
2024-04-26, Fri[Lecture] Advanced Game Design
2024-05-03, Fri[Students] AI Topic Presentations
2024-05-03, Fri[G-02] AI Topic Group Summary Slides (Submission)
2024-05-17, Fri[Lecture] Multiuser Games
2024-05-24, Fri[Lecture] VR Games
2024-05-31, Fri[Lecture] Advanced Game Engines
2024-05-31, Fri[I-01] Multiplayer (Submission)
2024-06-07, Fri[Lecture] Photogrammetry
2024-06-07, Fri[G-03] First Prototype (Submission)
TBA[Students] Tutoring Interview
2024-06-14, Fri[Lecture] Selected Topics
2024-06-14, Fri[I-02] Photogrammetry (Submission)
2024-06-21, Fri[Students] Presentation Current Status
2024-06-21, Fri[G-04] QA Feedback (Submission)
2024-06-28, Fri[G-05] Full Game (Optional Submission)
TBA (September)[G-05] Full Game (Submission)
TBA (September)[Students] Final Presentations


Individual Assignments (40%)


[I-00] Say Hello (required)

Say hello on Discord! Tell us who you are on Discord by telling us your username in TeachCenter. Don’t forget to update your info in TeachCenter if you decide to change your Discord username during the semester. Please change your Discord nickname on the server to your first or full name so we can recognize you at a glance.

[I-01] Multiplayer Implementation (30%)

Task Description

For this task, you will be given an already-created Unity framework. It contains a basic 3D implementation of the well-known game Bomberman. With the current version of the framework, the game can only be played in Local-Multiplayer (LMP). Your task will be to extend the framework and allow players to play a network multiplayer version. In short, the main goal of this exercise is to learn how to work with an already existing project, and how to create a multiplayer functionality within Unity.

The Unity framework can be found on the course website in TeachCenter.

Before you start, create a repository on gitlab.tugraz.at, name it gdd2-i01-<your-matriculation-number> and add your tutor as maintainer (Florian R. Wohlmuth). Add the framework to said repository and start from there. Make sure to push the entire project (not just the build) after each set of changes. This makes everything more clearly structured and it’s easier to understand and comprehend certain changes of yours. There are no other rules to that (like using branches or so) besides keeping the repository up-to-date.

Make sure to display your name and matriculation number in the main menu (the first screen which is shown when starting the game). Besides that, this task consists of a total of three sub-tasks:

  • 1) Multiplayer functionality (15%): This is the main focus of the exercise. Within this sub-task, you must implement a functionality, where up to four players can play one game. We highly recommend using Mirror Networking, since it is open-source and relatively easy to implement. There will also be a dedicated lecture about Multiplayer Games, talking about Mirror and naming some example usages. Note that you are free to use other packages as well (e.g. Photon), however, please be aware of the fact, that we cannot offer support for Networking assets other than Mirror.
  • 2) Synchronization (10%): Here, you should refactor the Lobby and Game scene in a way, that selected characters are the same on everyone’s device. Every player should run around as their chosen player role on everyone’s screen. For this sub-task, this synchronization must happen not only in the Game scene but already in the Lobby scene as well.
  • 3) Host / Connection Screen (5%): You should refactor the main menu to have the option to host a game or connect to a lobby via IP address. Take a look at the image below to get an idea for the UI design. The main screen should end up looking similar to this. Hosting and joining a game throws each player into the Lobby scene. Once, every player confirms their character, the game can be started (only by the host). From that point on, the game should be playable exactly like in the LMP version.

Submission

Once you feel comfortable with your work, create a Windows build and upload a zip containing the build on the TeachCenter within the deadline in the schedule. Don’t forget to also push the final version on GitLab.

[I-02] Photogrammetry (10%)

Task Description

Physically based rendering (PBR) is an approach that seeks to render images in a way that models the lights and surfaces with optics in the real world. Photogrammetry is a technique that enables us to create 3D models based on photos of the object (usually a lot of photos).

1) 3D model (5%): Create a 3D model from a real object using photogrammetry. Preferably find a statue or other cool object at or around the Inffeld campus or a landmark of Graz. If you find another interesting object somewhere else, you may create a model of that object.

2) PBR material (5%): Create a PBR material from a real image including textures like Albedo, Height, Normal, Roughness, and Ambient Occlusion.

The used software can be freely chosen, most of the commercial packages feature trial versions which you can use for this task. Here’s a list of software you can use:

Since you’re supposed to take photos, a camera will also be needed. Luckily everything ranging from a DSLR to a smartphone camera works pretty well. However, we recommend the use of a DSLR camera. These articles compile a lot of useful advice on how to take great photos for photogrammetry: GDC Talk, Autodesk, Agisoft, Sketchfab

Most of the time photogrammetry creates very dense models, which aren’t very performant in a realtime/gaming/vr environment, so it is best practice to optimize the 3D models before using them in games. Depending on which software you decide to use you can either take a look at the built-in optimization tools (if applicable) or use external tools like MeshLab or Blender for optimization.

We will check your models for face count. We also expect your models to not have holes and do not include surroundings that are not part of your model.

Submission

Upload a zip containing:

  • 3 screenshots of your 3D model, showing the model from front, top, and side respectively.
    • i02-model-<your-matriculation-number>-[front/top/side].[png/jpeg]
  • The 3D model in a format that can be opened by Blender 4.x.
    • i02-<your-matriculation-number>-model.[blend/obj/fbx]
  • The textures of your PBR material.
    • i02-<your-matriculation-number>-texture-[alb/hgt/nor/rou/aoc].[png/jpeg]

to the TeachCenter within the deadline in the schedule.

Optional: Upload your model to Sketchfab, a place to upload and view 3D models in your browser (or VR) without any additional plugins. Tag it with ‘tugamedev’, make sure to enter a few sentences of meaningful description, and submit a link to it in TeachCenter.


Group Assignments (60%)


[G-01] Group Registration, Game Idea

Task description

  • Form a group of 4 people and decide on a game idea that satisfies the details below. If you haven’t found a group yet you can find group members on Discord.
  • Create a repository (e.g. on gitlab.tugraz.at) and add your tutor as a maintainer (Florian R. Wohlmuth).
  • Create a document where you describe your idea and tell us about which technologies you plan to use in a few paragraphs. Create a rough effort estimate for your idea to make sure it is possible to implement the idea this semester. You can also add some sketches. The document can later be used as a basis for your game design document.
  • Also, decide on a fancy name for your group.

Fundamentals

Your game idea must be based on a 3D environment and the game must integrate the 3D models and material of the photogrammetry assignment in the environment (creative integrations are allowed). Furthermore, an AI Concept (a list of concepts that will be published for G-02) must be part of your game. Include some achievements that can be unlocked within your game.

Technology

Your game should include one of the concepts outlined in this section. If you can not integrate any of these concepts or if you have a different unique feature that you want to integrate in your game, contact the tutors before submitting your game idea.

Augmented / Virtual Reality

Implement an augmented / virtual reality game. Most likely, we will be able to provide access to our equipment at Campus Inffeldgasse. Design your game with AR / VR in mind. Depending on the regulations, we will be able to provide testing possibilities during the summer.

If you have your own equipment, let us know for which platform you plan to develop in your game idea document.

Note: Take care that your game does not induce motion sickness (i.e. take care of locomotion design, stuttering, framerate, etc.), include interactions tailored to AR / VR, and make it as intuitive as possible.

Multi-Sensory

In addition to visual and audio, include an additional sensory element into your game e.g.:

  • Haptic Feedback: Integrate haptic feedback mechanisms to provide tactile sensations that correspond to in-game actions or events.
  • Olfactory (Smell): Explore the incorporation of scent-based cues or effects into the game experience.
  • Gustatory (Taste): Experiment with incorporating taste sensations into the game.

Alternative Controls

Create a game that does not just use standard input hardware (keyboard, mouse, controller) in standard ways. Instead, design and use an alternative control mechanism. This option can also include some basic networking to connect your alternative inputs to your game. Crafting, DIY know-how, and electronics tinkering skills are an advantage for this option. Your creativity is the limit, but here are some examples to give you a feel for what is meant by alternative inputs:

  • Phone: Connect a phone via wifi or Bluetooth and use the touchscreen in combination with some of the sensors (gyroscope, accelerometer, …) to control the game.
  • Repurposed peripherals: Use other peripherals such as a microphone or a drawing tablet to control the game.
  • Custom inputs: Disassemble an old keyboard and build a custom controller, or use some components from the maker toolbox to create custom input devices. Raspberry Pi, Arduino, mircropython, and esp8266 are good platforms you can use as a starting point for your device.
  • Make your game controllable via a sofa, house plant, or banana.

The FabLab and E-Lab are great places for tinkering with custom hardware. Feel free to consult with electrical engineering students for this option.

Topics & Inspiration

You are free to choose the topic and genre of your game.

Guidelines

Diversity:
Keep important aspects such as race, gender, culture etc. in mind, should they be relevant for your game.

Accessibility:
Motor (e.g. more than one type of input device), Cognitive (e.g. contextual in-game help), Vision (e.g. color blindness safe colors), Hearing (e.g. subtitles), General (e.g. difficulty levels). You can look up more details here.

Submission

Share the link to your repository on TeachCenter.

Create a PDF with the naming convention:
g-01-group-##.pdf

## is your group number, hence group 5 sends the file g-01-group-05.pdf.

First, enter your group in TeachCenter, then upload your file and enter your group name within the deadline in the schedule.

[G-02] AI Topic, Group Summary

Task Description

As a group pick one of the topics and select it in TeachCenter (first come first serve, the start of the selection will be announced on Discord) and create a short presentation (max 5 slides) about how this concept can be applied in a game project and give examples.

Every game project has to include at least one of the concepts. The descriptions of the other groups should help you choose which one you want to include, but you can pick any topic from the list for your game. It is ok if several groups include the same topic in their game.

Topic-List

  • Bayesian Networks
  • Blackboard Architecture
  • Command Hierarchy
  • Decision Tree Learning
  • Emergent Behavior
  • Filtered Randomness
  • Flocking
  • Formations
  • Fuzzy Logic
  • Genetic Algorithms
  • Influence Mapping
  • Level-of-Detail AI

  • NGram Statistical Prediction
  • Neural Nets & Perceptions
  • Obstacle Avoidance
  • Player Modeling and Reputation System
  • Production and Trigger Systems
  • Reinforcement Learning
  • State Machines and Stack-based State Machines
  • Smart Terrain
  • Subsumption Architecture
  • Terrain Analysis

Submission

Create a slide set for your presentation. Use the naming convention:
g-02-group-##.pdf

## is your group number, hence group 5 sends the file g-02-group-05.pdf.

Upload the slides to the TeachCenter within the deadline in the schedule.

[G-03] First Prototype

Task Description

Create a prototype according to the topics and guidelines. The prototype should show what your game will look like (e.g. blockouts of levels) and it should demonstrate the core mechanics of your game.

Create a page for your game on itch.io, you do not need to upload a build yet, but add a short description and screenshots that promote your game.

Submission

Upload a zip file (g-03-group-##.zip, is your group number) containing the build to the TeachCenter and add a link to your itch.io page within the deadline in the schedule.

[G-04] QA Feedback

Task Description

Test a game from another group. The QA Strategy section below outlines what to look out for during testing.

Provide a small report (.txt or .pdf file) with a list of issues you’ve found:
[ID / Type of issue (1-3) / Description of issue / Severity of this issue (A extremely bad – C nice to have) / Tips for improvement]

Example:
#4 / 1 / The game controls are not clear / B / Explain the controls on the start screen
#5 / 3 / Driving into a tree for 100 times crashes game / C / Find root cause for the crash

You should test the player experience, the usability, and QA (alias bugs).

QA Strategy

Type 1: Player Experience (Game Design)

  • Fun?
  • Confused/bored/frustrated?
  • Design good?
  • Idea clear?
  • Mechanics?
  • Level too long/short?
  • Do you understand the game?

Type 2: Usability

  • Interface intuitive?
  • Easy to use?
  • Controls understandable?

Type 3: Quality Assurance (Severe Bugs)

  • Test intensively
  • Find bugs

Submission

Create a submission file with the naming convention:
g-04-group-##.[txt/pdf]

## is your group number, hence group 5 sends the file g-04-group-05.txt/pdf.

Upload the report to TeachCenter and send it to the other group via e-mail or Discord within the deadline in the schedule.

[G-05] Full Game

Task Description

Fully implement your game and create a presentation for the final exhibition.

Presentation
Short “pitch” (max. 4-5 minutes!) – try to “sell” your game/game idea. You can show your video or play the game live (or both if time).

Exhibition
Please bring your own equipment for the exhibition. In case you are missing hardware contact the tutors in advance.

Note: If the exhibition cannot be held at the university, all games will be collected in an itch.io game jam so that you can play all of the games.

Deliverables

Repository:

  • readme.md in the root of your repository with the following information, so that we can feature your games on the website:
    (1) Game title + short game description
    (2) Who worked on this game (all names + matr. nr)
    (3) Technologies used
    (4) Credits (don’t forget to also mention if you made anything by yourself!)
    (5) Link to build for feature on website (such as on https://gamelabgraz.com/games/)
  • Build and source code of your game

TeachCenter:

  • Final Game Design Document
    (don’t forget to mention which AI Topic you chose and how you implemented it in your game)
  • 4-6 screenshots
  • a small video of the gameplay (ca 2-3 minutes)
  • The presentations will be held in person. Please create a trailer video which you can also use as part of your presentation.

Don’t forget to add your itch.io page to the game jam!

Submission

Upload all deliverables within the deadline in the schedule.

Update the details about your game on your itch.io page and join this year’s game jam. Don’t remove the prototype – just add the final build! We encourage you to upload the video and a build of your game to itch.io to make it available to a broader audience.

If you want to develop your game further and publish it not only within the scope of this lecture, we are happy to help and answer any remaining questions.


Links & More


Grading and Fine Print

Overview

Game Design and Development II is a lecture with integrated exercises (VU, continual assessment). If you do not submit any assignments (partial course requirements, Teilleistungen) you will be deregistered from the lecture. The examination is considered to have started when the assignment [I-01] Multiplayer or any following assignment has been submitted.

You need to submit all assignments to receive a passing grade. Empty or zero-effort submissions do not count for this rule and will result in a failing grade.

Each assignment will be graded based on how accurately you fulfill the tasks of the assignment description. For game assignments, the game design document, game elements, game design guidelines, usability, polishing, balancing, and presentation can be taken into account as well. For written assignments, the readability, formatting, and how precisely the topic was addressed can be additional decisive factors. For some assignments you might be able to earn bonus points, this is designated in the assignment description. The assignments are weighted according to the weighting table.

A total of 100% (excluding bonus points) can be achieved. Upon receiving 50% or more, the student receives a passing grade. The grading key denotes which percentage corresponds to which grade.

Note: Individual part and group assignment must both be completed positively (>= 50%)!

Partial course requirements are corrected after all partial course requirements have been completed.

Late submissions are not considered by default and will result in a point deduction. Contact the tutors (preferably before the deadline) if you cannot submit an assignment in time, we might be able to find a solution.

If you decide not to finish the course after submitting the first assignment considered in the examination contact the tutors so that the grouping can be updated. If there are any open questions feel free to contact us.

If you cannot attend on mandatory dates, contact the tutors beforehand.

Plagiarism

If unauthorized aids are used or cases of plagiarism occur (e.g. a written assignment contains parts copied from another source or referencing is not done properly, any part of an assignment is copied from another student or group, or a game contains 3rd-party assets without proper attribution) a grade of “U (Ungültig/Täuschung)”, meaning that the grade is invalid, is given for the course (§5 TU Graz Statute Part Plagiarism). The student is then requested to attend a hearing, where they are confronted with the incident.

Weighting

I-0130%
I-0210%
Group Assignments60%

Grading Key

Percentage/PointsGrade
>= 87.51
>= 75< 87.52
>= 62.5< 753
>= 50< 62.54
< 505

Questions

As always, if you feel unsure about any task or you have a more general question, feel free to ask on our discord server. Please also understand that we won’t be available there 24 hours a day. We encourage you to start with your tasks early enough to ask potential questions. Don’t expect to get an answer one or two hours before a deadline (which is always set to midnight), nor in the middle of the night. We are always happy to help at a reasonable time.

Game Collection

A collection of games created in previous GameLabGraz lectures

Your game goes here.
2022 GDD2 Games
2021 GDD2 Games
2020 GDD2 Games
2018 GDD2 Games

Book Recommendations

Johanna’s personal book recommendations and books the lecture draws inspiration from.

Jane McGonigal – Reality is Broken (+++)
One of my favorite books. Jane McGonigal gives some inspirations and ideas of how to use games in different contexts. Reads like a novel and avoids theoretical aspects.

Jesse Schell – The Art of Game Design (+++)
This is the book I am using a lot for my lecture. Very good summary of the most important design aspects from different points of view (technical aspects, player psychology, all different design things).

Scott Rogers – Level Up (2nd Edition) (+++)
Also a very good design on game design. I’ve especially enjoyed the bonus chapters with inspirational lists for environments, game mechanics, and different templates as an inspirational resource for your games.

Jeremy Gibson – Introduction to Game Design, Prototyping, and Development (++)
This book gives also a very nice introduction to game design techniques, but in a more practical manner. The main part of this book is a unity and C# tutorial.

Raph Koster – A Theory of Fun (++)
I simply love the style of this book. It has comics and sketches ?

Flow – Mihaly Csikszentmihalyi (+)
Wonderful book (THE book) about the flow experience with neat examples from all different fields.

Katie Salen & Eric Zimmerman – Rules of Play (+)
Very interesting book on game design with a lot of practical examples.

Attributions

[I-00] Photo by Tim Mossholder on Unsplash
[I-01] Photo by ShareGrid on Unsplash
[I-02] Photo by Daniele Levis Pelusi on Unsplash
[I-02] Fireworks effect based on work by Heather Allen (Wilcox)