mirror of https://github.com/01-edu/public.git
Browse Source
* CON-3142 feat(firing-range) refined subject and audit * CON-3142 fix(firing-range) fixed broken link * CON-3142 fix(firing-range) fixed missing imagepull/2707/head
Abdelhak ELYakoubi
2 weeks ago
committed by
GitHub
5 changed files with 173 additions and 35 deletions
@ -1,39 +1,125 @@
|
||||
## FiringRange |
||||
## Firing-range |
||||
|
||||
In this exercise, you will learn to use the Unreal Engine and Blueprints to script functionalities of a basic FPS game. The theme is to reproduce a firing range. And remember, weapons are allowed only inside the shooting area!! |
||||
### Overview |
||||
|
||||
This project involves creating a fully functional firing range in Unreal Engine 5 (UE5). You will focus on implementing shooting mechanics, a weapon system, player input handling, physics for projectiles, and basic AI to control moving targets. Your task is to build a simple environment where the player can shoot targets, and all systems should work seamlessly together. |
||||
|
||||
<center> |
||||
<img src="./resources/fgm.jpg?raw=true" style="width: 500px !important; height: 350px !important;"/> |
||||
</center> |
||||
|
||||
### Role Play |
||||
|
||||
You are developing a firing range training level for a first-person shooter game. You are required to set up a working shooting system, integrate a functional weapon with reload mechanics, implement a physics system for projectiles, and design basic AI for moving targets. Additionally, you will create a player HUD that tracks their score, accuracy, and remaining ammunition. |
||||
|
||||
### Learning Objective |
||||
|
||||
By the end of this project, you will have implemented: |
||||
|
||||
- A complete shooting mechanic (with accurate aiming, projectiles, and hit detection). |
||||
- A weapon system with at least one firearm, including shooting and reload mechanics. |
||||
- Basic AI to control target movement. |
||||
- Physics-based projectiles that interact with the environment. |
||||
- A simple UI displaying relevant gameplay information (accuracy, ammo count, etc.). |
||||
- A simple firing range level design that incorporates moving and stationary targets. |
||||
|
||||
### Instructions |
||||
|
||||
The map of this project should be composed of a cube with dimensions of X = 35, Y = 40, Z = 1. It should simulate the floor and other cubes as walls around the floor. In the map there should be a zone where the character is able to walk around and shoot the targets and another zone where the player can not go and where the targets are present. |
||||
#### General Requirements |
||||
|
||||
- Use `Blueprints` or `C++` to implement the game mechanics. |
||||
- Implement a firing system where the player can aim downsights and shoot. |
||||
- Implement a weapon system that supports shooting, reloading, and proper hit detection. |
||||
- Create a firing range level that includes both stationary and moving targets. |
||||
- Implement a physics system that governs projectile behavior (trajectory and collisions). |
||||
- Implement a HUD that shows the player's score, accuracy, and remaining ammunition. |
||||
|
||||
#### Main Menu |
||||
|
||||
The game's main menu must: |
||||
|
||||
- Be a separate `level/map`. |
||||
- Include the following options: |
||||
- **Start Game**: Transitions to the firing range gameplay. |
||||
- **Settings**: Allows the player to adjust mouse sensitivity. |
||||
- **Quit**: Closes the game. |
||||
|
||||
#### Game Screen (HUD) |
||||
|
||||
The game screen must include a HUD that displays: |
||||
|
||||
- A precise crosshair that accurately indicates the bullet's point of impact. |
||||
- The player's current accuracy (hits devided by total shots fired). |
||||
- Remaining ammunition and reload status for the current weapon. |
||||
|
||||
#### Player Character |
||||
|
||||
The player character must have the following functionalities: |
||||
|
||||
- Basic movement around the firing range. |
||||
- Proper input handling for aiming, shooting, and reloading. |
||||
- Interact with ammo pickups to replenish ammo. |
||||
|
||||
#### Weapons |
||||
|
||||
You must create at least one firearm (e.g., a pistol) that includes: |
||||
|
||||
- Recoil mechanics. |
||||
- Reloading the weapon with an appropriate animation. |
||||
- Projectile physics that simulate bullet trajectories. |
||||
- Bullet hit detection (with an effect on impact, e.g., sound and visual feedback). |
||||
|
||||
#### Targets and AI |
||||
|
||||
You must implement the following for the targets: |
||||
|
||||
- Create a stationary target. |
||||
- Create a moving target with basic AI that follows a predefined path or pattern. |
||||
- Implement hit detection for the targets. |
||||
- Ensure the targets respawn after a set interval once they are hit. |
||||
<center> |
||||
<div style="display: flex; justify-content: center;"> |
||||
<img src="./resources/example1.jpg?raw=true" style="width: 500px !important; height: 350px !important;" /> |
||||
<img src="./resources/example2.jpg?raw=true" style="width: 500px !important; height: 350px !important;" /> |
||||
</div> |
||||
</center> |
||||
|
||||
For this project you will have to create a Blueprint Class target, that will have some of these characteristics. The target should : |
||||
#### Game Loop Logic |
||||
|
||||
- have associated to it the previous created material. |
||||
- either be moving from side to side or be stationary. |
||||
- be dynamic, using the timeline node. |
||||
- use a public variable to set or unset the movement animation of the target. |
||||
- rise again after x seconds after being hit it with a projectile, and behave like before it was hit. |
||||
The game loop must be continuous and consist of: |
||||
|
||||
Only one class of target is allowed for the whole project. |
||||
- The player starts with a loaded weapon and can shoot at targets. |
||||
- The player can open a pause menu at any time, with options to: |
||||
- Restart the game (reset score, targets, and ammo). |
||||
- Return to the main menu. |
||||
|
||||
The previously mentioned projectile should: |
||||
#### Level Design |
||||
|
||||
- have a size of X = Y = Z = 0,5. |
||||
- have a speed of 10000. |
||||
You must design a firing range that includes: |
||||
|
||||
After downloading and unzipping this [file](https://assets.01-edu.org/Unreal-Engine-Piscine/FiringRange.zip), you can copy its content to your project Content folder. |
||||
- A coherent theme to ensure a consistent and immersive experience. |
||||
- Proper lighting and environment setup to ensure the range is clear and visually appealing. |
||||
- A section with stationary targets. |
||||
- A section with moving targets. |
||||
- Ammo pickups where the player can restock. |
||||
|
||||
When finished, your project should look like the executable example on the folder or the ["Expected Result" video](https://youtu.be/EBibaN-dh_0). |
||||
### Bonus |
||||
|
||||
> Do not forget to zip up the project compile and save everything for peer correction. |
||||
> 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) |
||||
- Add multiple weapons (e.g., a shotgun, sniper rifle) with unique shooting and reload mechanics. |
||||
- Implement more advanced target AI, such as random movement patterns or different difficulty levels. |
||||
- Add different hit zones for targets, with headshots awarding more accuracy points. |
||||
- Design a timed challenge mode where the player must hit all targets within a set time frame. |
||||
|
||||
#### Bonus |
||||
### Submission |
||||
|
||||
Here are some ideas for improving the game: |
||||
- You must upload a zip file of your game build in your repository. |
||||
- Ensure that the build works on your platform. |
||||
- If file size is an issue, use GitHub with [Git LFS](https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-large-files-on-github). |
||||
|
||||
- Targets with different speeds. |
||||
- Textures on the walls and ground. |
||||
- Adding obstacles in front of the targets. |
||||
### Resources |
||||
|
||||
[Here](https://www.youtube.com/playlist?list=PLHyAJ_GrRtf9sxZqgfPVM06PrLk8_CWA-) you can find an instructional playlist on Unreal Engine. |
||||
- [Unreal Engine's AI Documentation](https://dev.epicgames.com/documentation/en-us/unreal-engine/ai-system-settings-in-the-unreal-engine-project-settings?application_version=5.5) |
||||
- [Projectile Movement Component](https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/Game/Components/ProjectileMovement?application_version=5.5) |
||||
- [Mixamo for character animations and models](https://www.mixamo.com/) |
||||
- [SketchFab for 3D models](https://sketchfab.com/) |
||||
- [itch.io for additional assets](https://itch.io/) |
||||
|
@ -1,27 +1,79 @@
|
||||
> Due to file size reason, the solution might be uploaded on GitHub instead of Gitea! |
||||
|
||||
#### Functional |
||||
#### Main menu |
||||
|
||||
###### Are the map size (X = 35, Y = 40, Z = 1) and composition (using cubes) being respected? |
||||
###### Is the main menu widget on a separate level/map? |
||||
|
||||
###### Are the projectile size (X = Y = Z = 0,5) and speed (10000) being respected? |
||||
###### Does the main menu contain a Start Game button that transitions to the firing range gameplay? |
||||
|
||||
###### If you try to move the target to the target zone, is the player forbidden from trespassing to that zone by an invisible wall? |
||||
###### Does the main menu contain a Settings button for adjusting mouse sensitivity? |
||||
|
||||
###### When you shoot a target, does the bullet go through the invisible wall? |
||||
###### Does the main menu contain an Exit Game button? |
||||
|
||||
###### Did the targets correctly lay on the floor when hit by the projectile? |
||||
#### HUD |
||||
|
||||
###### Did the target rotate from the bottom and not from the center? |
||||
###### Does the HUD display an accurate crosshair that indicates the bullet's point of impact? |
||||
|
||||
###### Is there only one class “BP_Target” present on the project? |
||||
###### Does the HUD display the player's accuracy? |
||||
|
||||
###### Do all the public variables have a tooltip? (Mouse over it to check if a description is set or check if the variable have a little green eye on the right) |
||||
###### Does the HUD display the remaining ammunition and the reload status? |
||||
|
||||
#### Player Character |
||||
|
||||
###### Can the player character move around the firing range? |
||||
|
||||
###### Is input handling for aiming, shooting, and reloading functional? |
||||
|
||||
###### Can the player interact with ammo pickups to replenish ammunition? |
||||
|
||||
#### Weapons |
||||
|
||||
###### Does the weapon have recoil mechanics implemented? |
||||
|
||||
###### Can the weapon be reloaded and has a proper reloading animation? |
||||
|
||||
###### Are projectile physics implemented for bullets, simulating accurate bullet trajectories? |
||||
|
||||
###### Is hit detection for bullets functional, with audio and visual feedback upon impact? |
||||
|
||||
#### Targets and AI |
||||
|
||||
###### Is there a stationary target present in the firing range? |
||||
|
||||
###### Is there a moving target with basic AI that follows a predefined path or pattern? |
||||
|
||||
###### Is hit detection implemented for both stationary and moving targets? |
||||
|
||||
###### Do the targets respawn after being hit, within a set interval? |
||||
|
||||
#### Level Design |
||||
|
||||
###### Does the firing range follow a coherent and immersive theme? |
||||
|
||||
###### Is the level lighting and environment properly set up for clarity and appeal? |
||||
|
||||
###### Does the level include a section with stationary targets? |
||||
|
||||
###### Does the level include a section with moving targets? |
||||
|
||||
###### Are there ammo pickups available for the player to replenish ammunition? |
||||
|
||||
#### Game Loop Logic |
||||
|
||||
###### Does the game loop start with a loaded weapon, ready for the player to shoot? |
||||
|
||||
###### Can the player open a pause menu? |
||||
|
||||
###### Does the pause menu include a restart button (reset score, targets, and ammo)? |
||||
|
||||
###### Does the pause menu include a return to the main menu button? |
||||
|
||||
#### Bonus |
||||
|
||||
###### +Do different targets have different speeds? |
||||
###### +Have additional weapons (e.g., shotgun, sniper rifle) with unique shooting and reload mechanics been added? |
||||
|
||||
###### +Has more advanced target AI with random movement patterns or difficulty levels been implemented? |
||||
|
||||
###### +Do the walls and floor have texture? |
||||
###### +Are there hit zones for targets (e.g., headshots) that award more points or accuracy? |
||||
|
||||
###### +Are there obstacles in front of targets? |
||||
###### +Has a timed challenge mode been added where the player must hit all targets within a set time frame? |
||||
|
After Width: | Height: | Size: 205 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 56 KiB |
Loading…
Reference in new issue