GDD 1 (2023/24)


Overview


About

Game Design and Development 1 is an introductory course about Game Design, Game Mechanics, Game Art, Game Engines, Gamer Psychology, and more.

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

There is no mandatory attendance except for the course introduction lecture, the tutoring interviews and the final presentation.

Schedule

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

Green highlighted dates are mandatory!

DateEvent
2023-10-06, Fri[HS i11] Course Introduction (Slides)
2023-10-13, Fri[HS i11] Game Engine Overview & Unity I (Slides) (Unity Game)
2023-10-13, Fri[I-00] Send Discord Names (Submission)
2023-10-20, Fri[HS i11] Games, Game Design, Process (Slides)
2023-10-27, Fri[HS i11] Unity II and I02 Framework (Slides)
2023-10-27, Fri[I-01] Mini Game (Submission)
2023-11-03, Fri[HS i11] Game Art Overview (Slides)
2023-11-10, Fri[HS i11] Game Design Overview (Slides)
2023-11-10, Fri[G-01] Group Registration + Game Idea (Submission)
2023-11-17, Fri[HS i11] GIT Workflow + Project Management (Slides)
2023-11-17, Fri[G-02] Game Design Document Draft (Submission)
TBA[Tutoring Interview] Game Design Document Draft
2023-11-24, Fri[HS i11] History of Video Games (Slides)
2023-12-01, Fri[HS i11] Serious Games and Gamification (Slides)
2023-12-01, Fri[I-02] Pokemon Game (Submission)
2023-12-15, Fri[HS i11] Working in Dev Teams: Tips and Challenges (Slides)
2023-12-15, Fri[G-03] First Prototype (Submission)
2024-01-12, Fri[HS i11] Game Design Selected Topics I (Slides)
2024-01-12, Fri[G-04] QA Feedback (Submission)
TBA[Tutoring Interview] Development Progress
2024-01-19, Fri[HS i11] Game Design Selected Topics II
2024-01-26, Fri[G-05] Full Game (Optional Submission)
2024-03-01, Fri[G-05] Full Game (Submission)
TBAFinal Presentation


Individual Assignments


[I-00] Say Hello

Say hello on Discord! Let us know 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. You can also use your first or full name as a nickname for the Discord server if you want to.

[I-01] Mini Game

Task Description

Create a classic little 2D side-scrolling shmup (“Shoot’em up”, think R-Type, Gradius, etc.) game with Unity to get a hold of game development basics.

The basic features the game has to contain are:

  • Player Character moving from left to right through the level in a side scrolling manner
  • Ability for the player to move freely within the bounds of the level (Arrow Keys or WASD)
  • Ability for the player to fire projectiles
  • Enemies entering the screen from the right hand side
  • Lose condition: enemies can destroy the player character (either with projectiles or by collision)
  • Win condition: You’re free to choose either a highscore based system where the player plays endlessly until they reach the lose condition or a level based system where the level is won at a certain point
  • Display a start screen or text overlay at the beginning with the following information: Your name, your matriculation number, which 2 extension features you implemented (see below for more information), and how the controls in your game work

For this task, we would recommend using Unity 2021.3.x LTS (Long Term Support) version. The visual assets and sounds can be created by yourself in any way you like, or you can use freely available asset packs (if the license allows it, and you credit the creator correctly). If you made assets yourself, give yourself some credits 😉

Credits are mandatory!

You’re free to use any literature or tutorials to complete this task, one tutorial we’d recommend as a starting point is this one. Albeit written for an older Unity version, it should easily be possible to adapt to a current version.

Extensions

We’ve come up with a pool of 10 additional features to implement with the basic shmup gameplay. Every student has to choose 2 features to implement, based on the following rules:

  • Implement the feature with the number corresponding to the last number of your matriculation number!
  • Implement one other feature out of the list which you are free to choose.

List of additional features:
Note: The following special projectiles are separate from the basic projectile

  • 0) Shrink item: The feature adds the ability to the player character to pick up a randomly spawning item by touching it and pressing a button at the same time. Alternatively, you can also let the player collect the item (by touching) and press a button to activate it. The item hereby shrinks the player to half their size on picking it up.
  • 1) Homing projectile: Implement a special projectile which automatically targets and steers towards the nearest or a randomly chosen enemy. The visuals for this one should be different from regular or other types of projectiles.
  • 2) Enemies dodging projectiles: The feature adds the ability to the enemies to dodge incoming projectiles. Dodging needs to be a reaction to player projectiles, moving the enemy out of the way. Teleportations are also allowed if they are visually distinguishable as a mechanic and do not create other problems, like enemies teleporting into the player. Random movement does not count as dodging.
  • 3) Exploding projectile: Create a special type of projectile which explodes if it hits an enemy and then does area damage, which means it hurts every enemy within a certain radius from the impact point. Choose visuals which clearly communicate to the player where damage is applied.
  • 4) Ship selection: Add a simple player character selection screen with 2 choices before starting the game. The 2 selectable player characters should be different in regards to visuals as well as moving speed and projectile damage.
  • 5) Fire projectiles: The feature adds the ability to the player character to shoot fire projectiles. An enemy hit by a fire projectile takes damage over the timespan of 2 seconds. The visuals should show that state accordingly (“enemy on fire”).
  • 6) Time Stop collectible (á la Matrix): This feature adds a randomly spawning item that the player can pick up by touching it. The item itself stops the time for 5 seconds and lets the player shoot the enemies meanwhile.
  • 7) Ice projectiles: The feature adds the ability to the player character to shoot ice projectiles. An enemy hit by an ice projectile is unable to move for 2 seconds. The visuals should show that state accordingly (“enemy frozen”).
  • 8) 2 Player local coop mode (No networking!): Include a 2 player mode, with 2 character players on the screen at once, both controllable via the same keyboard for 2 players sitting next to each other. The players play together against enemies to complete the game.
  • 9) Laser weapon: Implement an additional laser weapon which fires a continuous ray across the screen for 2 seconds, every enemy touched by the ray takes damage. Has a recharge time of 4 seconds.

Bonus

  • 3 seconds time rewind (“Braid”).
  • Add an Assassin’s Creed themed mechanic
  • Use your own Sprite Shader like “Outline”, “NormalMap Lightning”, “Sprite Deformation”, “Ghost Trail”, …
  • Use a parallax effect for the background.

Performance

The target frame rate is 30 FPS or more on a PC built from the most used gaming hardware in the most recent Steam Hardware Survey. To measure the FPS just use the package provided in Discord. Make sure that you achieve the target frame rate in the WebGL build before submitting your game.
The FPS script needs to be included in the build, otherwise, points will be deducted.

Submission

Once done implementing your game, deploy a WebGL build. You’re responsible for uploading and hosting your WebGL build, we recommend using itch.io or github pages. Enter the link to your WebGL build and upload a zip containing the build on TeachCenter within the deadline in the schedule.

[I-02] Pokémon Game

Task Description

For this task, you have to create a Pokémon-like game in Unity. Working with a provided framework (that can be found in the TeachCenter), you must extend the project by implementing the features listed below. This will give you a better understanding of working with an already existing project and how to expand it.

The framework given to you is based on this YouTube playlist. Feel free to add further content besides the given tasks. In case you need general help with the basic functionality of Pokémon and its content, you can visit this site.

As in I-01, credits are mandatory here too!

Before you start, create a private repository on gitlab.tugraz.at and add the tutors as maintainer. (Florian R. Wohlmuth, Emma Stettner)

The following three features must be implemented:

  • 1) New Pokémon and Moves: Choose your favourite Pokémon and the most interesting attacks you know and bring them into the game. The Pokémon, as well as the moves can be taken from newer or older game generations (- you can find all the sprites here). You can also come up with your own ideas. Make sure to create at least two of each kind.
  • 2) Additional Pokéball: Some Pokémon require special Pokéball in order to catch them more easily. Implement at least three new types. In case you need an overview, here is a list of all known Pokéball in the games. In this task, you may also use your creativity and come up with your own designs and purposes. However, please ensure that each creation delivers a meaningful input to the game.
  • 3) Language Support: Your game should be playable internationally, of course. In order to achieve that, you need to make sure other people can understand the in-game text. Therefore, language support needs to be implemented. Which language you support, is up to you. Here you can find the package to implement, provided by the GameLabGraz.

Additionally, you need to choose three of the following features to implement:

  • 1) Gym and badges: To make your game more challenging, implement at least one gym. Like in the original games, you will also be able to earn badges, once the gym leader is defeated. Thus, an implementation of a showcase of the users badges is needed and should be available at all times.
  • 2) New Area: Adding new areas will introduce an explorative aspect to the game, making it more distinctive and therefore more fun. Choosing this task, you have to implement at least one unique area of your liking. This can be a desert, a new city, a snow area or whatever you can come up with.
  • 3) Map: The bigger the map, the more confusing orientation can become. To help the player out, you can implement a map showing the current position of the player in a top-down view. The map should also display the names of the routes and different areas. It is up to you, if you want to create a static map which is always shown in the corner of the game, or create a functionality to show it full-screen via a button click. (If you also choose task 5, it is recommended to go with the second option)
  • 4) Mega evolution: Some Pokémon will only be able to show their full strength when given a special stone / item during their fight. You need to randomly hide this item in the map and bind one type of Pokémon with it. Every time this Pokémon is given this item during one of their fights, its sprite shall change, and its stats must increase. Be careful with balancing, however. Once their fight is over, they will return to their normal form. You should implement at least two of those cases.
  • 5) Fly / Cascade: If you want to give your Pokémon some extra abilities, you may choose this task and give them the ability to fly, surf and ride waterfalls. In the given YouTube tutorial, you may already find how to implement surf. In addition to that, you need to implement the ability cascade, which makes your Pokémon go up (or down) waterfalls. When you want to fly, one Pokémon of type Air needs to learn the attack fly. Then you should be able to somehow select the area where you want to go to. Make sure that all of those abilities must be valid and equipped attacks (like in the original games) and should have small animations when used appropriately out of combat.
  • 6) Following Pokémon: Some of you may know that there are some generations out there, where the first Pokémon in the team used to follow the user. Now this will be your task to implement. The sprite of the very first Pokémon is supposed to follow the steps of the player. Ensure that the follow animation doesn’t look too blunt / lifeless.

Submission

Once done implementing your game, create a Windows build and upload a zip containing the build on TeachCenter within the deadline in the schedule.


Group Assignments


[G-01] Group Registration, Game Idea

Task description

Find a group of four people and decide on a game idea that satisfies the topics and guidelines. If you don’t have a group already, you can find group members on Discord.

Create a repository on gitlab.tugraz.at and add the tutors as maintainer.

Describe your idea in a few sentences, you can add a small sketch if you want to. Also, decide on a fancy name for your group.

Topics & Inspiration

The inspirational topics for 2023/24 are:

Topic 1: Financials

Topic 2: Urban Planning

Topic 3: Historical Era

Topic 4: Mythology

Topic 5: Dystopia

Your game idea should include one or more of these topics (creative ways of touching a topic are possible). Details about the topics will be given in the respective lecture.

Guidelines

Diversity:
Keep important aspects such as race, gender, culture etc. in mind
.

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 draw inspiration from
here.

Submission

Create a PDF with the naming convention:
game-idea-##.pdf

## is your group number, hence group 5 sends the file game-idea-05.pdf.

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

[G-02] Game Design Document Draft

Task Description

Use the Game Design Document Template to create the first draft of your game design document. Keep the topics and guidelines listed above in mind.

Submission

Create a PDF with the naming convention:
game-design-doc-draft-##.pdf

## is your group number, hence group 5 sends the file game-design-doc-draft-05.pdf.

Upload the file to 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 the build to 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 file, or Excel sheet) 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, 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 PDF with the naming convention:
qa-##.[txt/csv/xlsx]

## is your group number, hence group 5 sends the file qa-05.csv.

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. If the exhibition cannot be held at the university, there will be some kind of online exhibition.

Deliverables

  • readme.txt with the following information, so that we can feature your games on the website:
  • (1) short game description
    (2) who worked on this game (+ matr.nr)
    (3) Technologies used
    (4) Credits
    (5) Link to build for feature on website (such as on https://gamelabgraz.com/games/)
  • Final Game Design Document as PDF
  • 4-6 screenshots
  • a small video of the gameplay (ca 2-3 minutes)
  • Build and source code (full Unity project) of your game

Submission

Upload all deliverables to TeachCenter within the deadline in the schedule.

Update the details about your game on your itch.io page and join this year’s game jam. 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 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] Mini Game or any following assignment has been submitted.

You need to submit all assignments to receive a passing 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 the presentation can be taken into account as well. For written assignments, the readability, formatting, and how precisely the topic got 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% and more, the student receives a passing grade. The grading key denotes which percentage corresponds to which grade.

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

Late submissions are not considered by default. 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.

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, 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-0115%
I-0225%
Group Assignments60%

Grading Key

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

Game Collection

A collection of games created in previous GameLabGraz lectures

Your game goes here.
2022/23 GDD1 Games
2021/22 GDD1 Games
2020/21 GDD1 Games
2020 GDD2 Games
2019 GDD1 Games
2018 GDD2 Games
2017 GDD1 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 Aidan Granberry on Unsplash
[I-02] Photo by Headway on Unsplash