CS 354R Assignment 0

Ball in Room

Assignment 0: Creating a Game



Project Description

You will familiarize yourself with the Godot game engine by building a game using C# scripting after downloading the Godot engine with .NET support. This game demonstration will show several basic aspects of a 2D game. At minimum: a playable character, an interactable level, win-lose conditions, and a GUI system.

Basic Requirements

Your demonstration will contain a minimum of the following objects:

  1. A playable character.
  2. An interactable level.
  3. Win-lose conditions.
  4. A GUI system.
You will use the Godot editor to compose nodes into scenes, and you will script in C# (you should not use GDScript). You should follow Godot best practices, such as scene prefabs, and you are encouraged to look through/work through the Godot documentation/tutorials here. You will be graded on the elegance of your implementation, so take some time to think about how best to structure your scenes/code.

Playable Character Requirements

The character must take at least 3 forms of unique input. For example, in a platformer, you would have at minimum move left, move right, and jump. In a dungeon crawler, you would have at minimum cursor targeting, move to target, and attack.

An Interactable Level

The level should have at least two forms of interactivity. This could be collidable objects that provide traversable geometry and collectable objects for a platformer, or a traversable board with interactable pieces for a board game.

Win-lose Conditions

The game should have some form of win and loss conditions. You will need to manage the state of the game to determine if the player has won or lost. If you are creating something like an infinite runner, there may not be a win condition per-se, but you should have some system to measure success as a substitute (i.e. a point system).

A GUI System

The game should have at least one form of heads-up display (HUD) that is rendered during gameplay, and at least one out-of-game menu such as a pause screen or a main menu to start the game. Both GUI systems should reflect changes in the game state as necessary.

Extra Credit

The are several opportunities for extra credit in this assignment if you'd like to add the features below, but note that extra credit points will only be available after completing the minimum requirements.

Animations (1-2 points)

Include some form of animation in the game. This could be done using SpriteFrames, or 2D skeletons as best suits your game. You can include animated 3D elements in the game, but the gameplay itself should remain 2D for simplicity.

Sound Effects (1 point)

Add sound effects and/or background music to the game. Both sound effects and background music should be context sensitive (e.g. a sound effect plays every time the character jumps, and the background music stops when the player loses).

NPCs (2 points)

Add non-playable characters (NPCs) to the game. These can be enemies, or allies, and you can choose how the player should interact with them, but they should exhibit some form of "intelligent" behavior. This can be as simple as moving back and forth along a platform or targeting the player with projectiles.

Getting Started

If you are working from the lab machines, you may skip this step. If you want to develop on your own machine, you must first download the Godot game engine version 4.3 with .NET to your development machine. If you'd like to build from source, you can, but it will involve more setup. The guides for building to Linux, Windows, and Mac are all here. Since you'll need to use C#, you'll need to modify these instructions to compile for .NET. You will need Python and SCons to successfully build, and you may need to take additional steps if you'd like to work with an IDE such as Visual Studio or XCode.

I would recommend looking through their documentation on starting in Godot as well.

Packaging Your Project for the Lab Machines

Please put your project into a private GitLab repository, and add me and the TA (thesharkcs and Jmedich2). Make sure both of us are added as Developer or higher so that we can access the code. Create a branch called code-freeze within the repository that contains the following:

  1. A README text file that tells the TA exact steps for running the game. This will likely be very simple in this project, but include it to get in the habit.
  2. A project report that tells us what functionality you've implemented, any other interesting features of the program (e.g. it's really fast because I did this clever thing), issues you encountered if there are unresolved problems, and how to play the game. You should also document your code layout and describing the basic implementation of your scene hierarchies. You can include either code snippets or screenshots of the more interesting features in your code. This will help the TA spot check your implementation in case rebuilding the game is too time-consuming.
  3. A link to video footage (ideally via Youtube or some other easily accessible platform) of your game in action, demonstrating all basic features plus any extra credit features you implemented.
  4. A folder called Assignment0 containing your project and associated files.
Submit a link via Canvas (it is impossible to keep track of all student repos, so Canvas will be the definitive place to determine if a project was submitted or not).

Grading

You'll be graded on how well you met the requirements of the assignment. D quality work is project compiles but features are not working. C quality work is features have been implemented in a way that is mostly working, but the project may be buggy or not scalable. B quality work is features are working, but the project may have scaling issues, or lack consideration for tuning and iterating, include difficult to read code. A quality work is features have been implemented in a robust, polished way that demonstrates consideration for tuning and scaling, including well-written code.


Last modified: 08/30/24 by Sarah Abraham theshark@cs.utexas.edu