Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CON-3139 Game-dev introduction project #2725

Merged
merged 6 commits into from
Sep 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 148 additions & 0 deletions subjects/gaming/2-5-d-adventure/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
## 2.5D Adventure

### Overview

This project involves creating a simple 2.5D side-scroller game designed to introduce you to the fundamentals of Unreal Engine 5 and game development, without the complexity of advanced mechanics. It focuses on the essential skills and concepts needed to start your journey as a game developer.

<center>
<img src="./resources/1.jpg?raw=true" style = "width: 500px !important; height: 350px !important;"/>
</center>

### Role play

You've just embarked on your journey into game development, choosing `Unreal Engine 5` as your primary tool. Excited by the possibilities, you decide to create a simple 2.5D game as your first project. However, as you dive into the engine, you realize there's a vast array of tools and features you've never encountered before. Now, you're tasked with navigating this uncharted territory, learning new skills in level design, scripting, and asset management to bring your game to life.

### Learning Objective

At the end of this project you will have learned:

- Setting up a basic player character (input handling, movement, camera, etc.)
- Basic scripting (`Blueprints` and/or `C++`).
- Collision detection.
- Object creation and `instancing`.
- Basic UI/HUD.
- Basic level design
- Game logic and flow (Game Loops).

### Instructions

#### General

The use of `event dispatchers` is mandatory throughout the project, any code coupling will be disqualified.

> Tip: look for the observer pattern.

Your game should follow a coherent `theme` of your choice, whether it's a dark fantasy, sci-fi, or something entirely different. Let your imagination guide you.

> Note: the resources section will list some places where you can browse assets.

> Tip: For maximum learning, it is recommended to start this project with a blank Unreal project and implement everything from scratch.

#### Main Menu

The main menu `widget` should:

- Be on a separate `level/map` from the `main game` map.
- Contain two buttons:
- Start game button.
- Exit game button.

#### Player Character

The player `character` should:

- Have a skeletal mesh.
- Move only along two axes: left-right and up-down.
- Have a basic locomotion system with the following animations:
- `Idle`.
- `Walking`.
- `Running`.
- `Jumping`.
- `Falling`.
- `Landing`.
- Transition smoothly between a walking and running animations based on their speed.
<center>
<img src="./resources/locomotion.gif?raw=true" style = "width: 500px !important; height: 350px !important;"/>
</center>

> Tip: Look into the best practices for creating a locomotion system, Animation blueprints and Blend spaces.

#### Collectible

The collectible `Actor` should:

- Have a static mesh.
- Rotate around an axis of your choice.
- Have a box collider that acts like a trigger.
- Be collected when the player enters its box trigger.
- Play a sound when collected
<center>
<img src="./resources/collectible.gif?raw=true" style = "width: 500px !important; height: 350px !important;"/>
</center>

#### HUD

The HUD `widget` should:

- Display a value related to the `collectible`.
- Be updated each time a `collectible` is picked up.
<center>
<img src="./resources/hud.gif?raw=true" style = "width: 500px !important; height: 350px !important;"/>
</center>

#### Enemy

The enemy `character` should:

- Have a skeletal mesh.
- Have at least a walking cycle.
- Have a simple AI that patrols between two set points.
- Kill the player on collision.
- Be killed if the player lands on top of it.
- Play a sound when killed.
- create an instance of `Collectible` at the place of death.
> Note: Make sure the instance of collectible spawned from killing an enemy also updates the HUD.

<center>
<div style="display: flex; justify-content: center;">
<img src="./resources/enemywalk.gif?raw=true" style="width: 500px !important; height: 350px !important;" />
<img src="./resources/enemydie.gif?raw=true" style="width: 500px !important; height: 350px !important;" />
</div>
</center>

#### Game Loop Logic

The game loop consists of a spawn point where the player `starts` and `respawns` when dead.
And an end point that defines the player goal to finish the level.
When the player reaches the end point:

- a menu with options to `restart` or `quit` the game should be displayed.

#### Level design

Your level design shouldn't consist of just a long, empty run to the finish point. However, since creating a level is a creative process, you have the freedom to design it as you see fit. For example, you can include moving platforms or skill-based platforming elements. The choice is yours to provide the player with a fun and challenging experience.

> Tip: look at other games from a similar genre for inspiration.
> <img src="./resources/platformer.jpg?raw=true" style="width: 600px; height: 350px;" />

<!-- Expected results video link to be added later when available -->

### Bonus

- Add a health system to both the player character and the enemy character. (look into `Components`)
- Add a simple crouch to your locomotion system.
- more mechanics as you see fit for your game.
- Create a simple `Game Design Document` where you describe your mechanics and how are you planning to implement them.

### Submission

- In your repository there should be a zip file of a build of your game for your target platform.
> If it is not possible to upload files to Gitea due to their size, use GitHub instead and have a look at [Git LSF](https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-large-files-on-github)

### Resources

- [Animation Blueprints](https://dev.epicgames.com/documentation/en-us/unreal-engine/animation-blueprints-in-unreal-engine)
- [Actor Components](https://dev.epicgames.com/documentation/en-us/unreal-engine/components-in-unreal-engine)
- [Mixamo for animations and character models](https://www.mixamo.com/)
- [SketchFab for 3D models](https://sketchfab.com/)
- [itch.io for more assets](https://itch.io/)
89 changes: 89 additions & 0 deletions subjects/gaming/2-5-d-adventure/audit/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
> Due to file size reason, the solution might be uploaded on GitHub instead of Gitea!

#### General

##### If, at any point during the audit, coupled code is detected that could have been resolved using the Observer pattern (`event dispatchers`), the audit will stop, and the student will fail the project.

###### Is the game following a coherent theme ?

#### Main Menu

###### Is the main menu widget on a separate level/map from the main game map?

###### Does the main menu contain a Start game button?

###### Does the main menu contain an Exit game button?

#### Player Character

###### Does the player character have a skeletal mesh?

###### Can the player character move only along two axes: left-right and up-down?

###### Does the player character have a basic locomotion system with all the required animations?

###### Does the player character transition smoothly between walking and running animations based on their speed?

#### Collectible

###### Does the collectible Actor have a static mesh?

###### Does the collectible rotate around an axis?

###### Does the collectible have a box collider that acts as a trigger?

###### Is the collectible collected when the player enters its box trigger?

###### Does the collectible play a sound when collected?

#### HUD

###### Does the HUD widget display a value related to the `collectible`?

###### Is the HUD updated each time a `collectible` is picked up?

###### Is the HUD also updated when picking a `collectible` that spawned from killing an enemy?

#### Enemy

###### Does the enemy character have a skeletal mesh?

###### Does the enemy character have at least a walking cycle?

###### Does the enemy character have a simple AI that patrols between two set points?

###### Does the enemy character kill the player on collision?

###### Is the enemy character killed if the player lands on top of it?

###### Does the enemy character play a sound when killed?

###### Does the enemy character create an instance of a `Collectible` at the place of death?

#### Game loop

###### Is there a spawn point where the player starts?

###### Does the player respawn at the spawn point when dead?

###### Is there an end point that defines the player’s goal to finish the level?

###### When the player reaches the end point, is a menu displayed with options to restart or quit the game?

#### Level design

###### Does the level design avoid being just a long, empty run to the finish point?

###### Does the level include mechanics chosen by the student? `(e.g. moving platforms skill-based platforming)`

###### Does the level provide a fun and challenging experience for the player?

#### Bonus

###### +Has a health system been added to both the player character and the enemy character using Components?

###### +Has a simple crouch been added to the player character's locomotion system?

###### +Have additional mechanics been implemented to fit the overall game design?

###### +Has a simple Game Design Document been created that describes the mechanics and outlines the plan for implementing them?
Binary file added subjects/gaming/2-5-d-adventure/resources/1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added subjects/gaming/2-5-d-adventure/resources/hud.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading