- After `Lutris` is installed, open it and on the top bar, search for `Epic Games` and you will see the result `Epic Games Store`. Go ahead and click on install.
- After `Lutris` is installed, open it and on the top bar, search for `Epic Games` and you will see the result `Epic Games Store`. Go ahead and click on `install`.
- After installing it, open it and sign in with your account.
- After installing it, open it and sign in with your account.
@ -14,12 +14,12 @@ Starting from an empty project, after creating a level with a floor (nothing els
- give the character the ability to:
- give the character the ability to:
- move forward, backward, left and right using the WASD keys
- move forward, backward, left and right using the WASD keys.
- look around and change direction using the mouse
- look around and change direction using the mouse.
- jump using Space
- jump using Space.
- attack using the left mouse click
- attack using the left mouse click.
- create an animation blueprint file to animate the character so she can be animated while running, jumping, attacking, etc.
- create an animation blueprint file to animate the character so she can be animated while running, jumping, attacking, etc...
- implement the Aim Offset, so that when the player moves the mouse, the head of Countess follow the direction we’re looking at, in a 180-degree angle.
- implement the Aim Offset, so that when the player moves the mouse, the head of Countess follow the direction we’re looking at, in a 180-degree angle.
@ -19,7 +19,7 @@ After creating a blank project and importing the content from the provided folde
- In order to play the game, the player only needs to use the mouse and never the keyboard.
- In order to play the game, the player only needs to use the mouse and never the keyboard.
- Create your own interaction point to indicate where the player is heading.
- Create your own interaction point to indicate where the player is heading.
- The design of the interaction point is up to you, but it should display a text underneath it, indicating where this interaction point is going to lead the player to (burger store, metro, park, etc...)
- The design of the interaction point is up to you, but it should display a text underneath it, indicating where this interaction point is going to lead the player to (burger store, metro, park, etc...).
- There should always be an interaction point visible to the player, somewhere in the world that lets the player quit, no matter where the player is in the map.
- There should always be an interaction point visible to the player, somewhere in the world that lets the player quit, no matter where the player is in the map.
- There should be no brutal transitions in the teleportation phase.
- There should be no brutal transitions in the teleportation phase.
In this exercise, you will create a racing online game. The player will be able to race with another player to see who is faster. When you feel stuck remember that once, a man could not work out how to fasten his seatbelt. But then it suddenly clicked!
In this exercise, you will create an online racing game. The player will be able to race with another player to see who is faster. When you feel stuck remember that once, a man could not work out how to fasten his seatbelt. But then it suddenly clicked!
### Objectives
### Objectives
@ -36,9 +36,9 @@ As the game is done, you only will need to make the multiplayer part of it. Basi
- If you are not the host, a widget should pop on the screen saying “Waiting for the host to start” and if you are the host it should be a “Click START to start” widget. Therefore the host of the server should have a Start button available.
- If you are not the host, a widget should pop on the screen saying “Waiting for the host to start” and if you are the host it should be a “Click START to start” widget. Therefore the host of the server should have a Start button available.
- Once the game started, all players spawn on the map and the race starts after a countdown (A little delay may occur for the client but it quickly goes back to normal so do not worry about this possible issue.)
- Once the game started, all players spawn on the map and the race starts after a countdown (A little delay may occur for the client but it quickly goes back to normal so do not worry about this possible issue).
- The first to finish the race has a text on the screen written “YOU WIN”. The rest of the players get a “YOU LOSE” instead.
- The first to finish the race gets a message on the screen displaying “YOU WIN”. The rest of the players get a “YOU LOSE” instead.
- Once the player crosses the finish line, the player input is disabled (the player can no longer move).
- Once the player crosses the finish line, the player input is disabled (the player can no longer move).
###### Is the maximum number of players 4 and the minimum 2?
###### Is the maximum number of players 4 and the minimum 2?
###### If you try to host the server without a server name (input text box empty), does a warning message appears and are you forbidden to enter the server?
###### If you try to host the server without a server name (input text box empty), does a warning message appear and are you forbidden to enter the server?
###### On the Join menu, can you switch between searching LAN sessions and Online sessions?
###### On the Join menu, can you switch between searching LAN sessions and Online sessions?
###### Once the game finds a session, Is a button with the session name displayed on the screen?
###### Once the game finds a session, Is a button with the session name displayed on the screen?
###### Does this button allows the player to join the host session?
###### Does this button allow the player to join the host session?
###### Is there a loading screen while joining the session?
###### Is there a loading screen while joining the session?
@ -13,7 +13,7 @@ The player starts the game by controlling a Third Person character and as soon h
As for the vehicle, these are the expectations:
As for the vehicle, these are the expectations:
- create a blueprint named BaseCar, that will be the parent of all vehicles classes.
- create a blueprint named BaseCar, that will be the parent of all vehicles classes.
- BaseCar should be a fully functional and realistic vehicle. In other words, it should accelerate, brake, have a handbrake, the back wheels should not turn, neither should the front wheels exceed a certain angle, etc.
- BaseCar should be a fully functional and realistic vehicle. In other words, it should accelerate, brake, have a handbrake, the back wheels should not turn, neither should the front wheels exceed a certain angle, etc...
- BaseCar should also have dynamic instance for the lights.
- BaseCar should also have dynamic instance for the lights.
- The vehicle lights needs to simulate the real behavior of a real vehicle. When pressing the letter 'L' the front lights and the rear presence lights should turn on or off, when braking three braking lights (left, right and center) should turn on and the rear lights should turn on when reversing.
- The vehicle lights needs to simulate the real behavior of a real vehicle. When pressing the letter 'L' the front lights and the rear presence lights should turn on or off, when braking three braking lights (left, right and center) should turn on and the rear lights should turn on when reversing.
- The BaseCar blueprint should contain "Set Material" nodes to change the headlamp material in order to have the effect where the lights are turned on.
- The BaseCar blueprint should contain "Set Material" nodes to change the headlamp material in order to have the effect where the lights are turned on.
@ -22,7 +22,7 @@ As for the vehicle, these are the expectations:
- only one AnimationBlueprint can be used for this project.
- only one AnimationBlueprint can be used for this project.
- when inside the vehicle, if the 'C' key is pressed, the camera should change from the third person view of the vehicle to the driver view inside the car.
- when inside the vehicle, if the 'C' key is pressed, the camera should change from the third person view of the vehicle to the driver view inside the car.
- when in the camera of the driver, the player must be able to see the gears and the speedometer in the dashboard
- when in the camera of the driver, the player must be able to see the gears and the speedometer in the dashboard.
There must be three models of cars on the map the character can choose from. All of them should inherit the BaseCar class. These three models should be:
There must be three models of cars on the map the character can choose from. All of them should inherit the BaseCar class. These three models should be:
@ -43,6 +43,6 @@ When finished, your project should look like the [“Expected Result” video](h
As bonus objectives you can:
As bonus objectives you can:
- Create steam/flames particles going out from the car exhaust
- Create steam/flames particles going out from the car exhaust.
- Animate the character entering and sitting in the car
- Animate the character entering and sitting in the car.
- Add a button to open the doors while inside the car without exiting it
- Add a button to open the doors while inside the car without exiting it.
The focus of this exercise is to learn to display information, buttons, images and whatever you will need on the screen using Widgets. Kinda like those displays in Iron Man, but not really.
The focus of this exercise is to learn to display information, buttons, images and whatever you will need on the screen using Widgets. It is kinda like those displays in Iron Man, but not really.
### Objectives
### Objectives
@ -10,33 +10,44 @@ You will create a first-person style game with only directional and mouse input.
For this project you will start the game with an empty project and be sure to create it including the starter content. It is requested that you:
For this project you will start the game with an empty project and be sure to create it including the starter content. It is requested that you:
- Create a PlayerCharacter blueprint and give him the ability to move forward, backward, left and right. Also, use the mouse to look around.
- Create a PlayerCharacter blueprint and give him the ability to move forward, backward, left and right. Also, the mouse has to be used to look around.
- Create a start menu by pressing Escape.
- Create a start menu by pressing Escape.
- This Start menu should pause the game and the mouse should show up.
- This Start menu should pause the game and the mouse should display.
- The Start menu should have a minimum of 4 buttons:
- The Start menu should have a minimum of 4 buttons:
- Resume, that resumes the game when clicked
- A button for each of the students in the group with their username
- A Resume button, that resumes the game when clicked.
- A button for each of the students in the group with their username.
- Each button should link directly to each student Intra profile.
- Each button should link directly to each student Intra profile.
- Graphics Settings, explained afterwards
- A Graphics Settings button, this is explained afterwards.
- Quit to desktop, that on release should exit the game
- A Quit to desktop button, that on release should exit the game.
When the player clicks on the Graphics Settings button, another widget should appear where it contains:
When the player clicks on the Graphics Settings button, another widget should appear where it contains:
- a slider that lets the player choose the percentage of the resolution scale.
- a slider that lets the player choose the percentage of the resolution scale.
- a dropdown menu where the player can choose the resolution.
- a dropdown menu where the player can choose the resolution.
- At least three different resolutions should be displayed in the dropdown
- At least three different resolutions should be displayed in the dropdown.
- a button at the bottom of the Widget to apply the two above resolution settings.
- a checkbox that when switched on shows the game in full screen and in windowed mode otherwise
- an apply button at the bottom of the Widget which actualizes the two above resolution settings.
- a checkbox, which when switched on, shows the game in full screen and in windowed mode otherwise.
- four choices for PostProcessQuality, ShadowQuality, TextureQuality, EffectQuality and FoliageQuality. These four choices are LOW, MEDIUM, HIGH and EPIC.
- four choices for PostProcessQuality, ShadowQuality, TextureQuality, EffectQuality and FoliageQuality. These four choices are LOW, MEDIUM, HIGH and EPIC.
- Theses settings got to be executed with the “Execute Console Command” node.
- These settings have to be executed with the “Execute Console Command” node.
- PostProcessAAQuality setting should have the following options as buttons: Off, 2x, 4x, 6x.
- PostProcessAAQuality setting should have the following options as buttons: Off, 2x, 4x, 6x.
- You can use the “append (string)” node to switch between all four choices.
- You can use the “append (string)” node to switch between all four choices.
- A “Back” button that bring us back to the main Start menu.
- A “Back” button that bring the player back to the main Start menu.
- No more than 25 string variables are allowed in the Graphics Setting widget file.
- No more than 25 string variables are allowed in the Graphics Setting widget file.
While controlling the player in the game, a widget should be visible at all times. This widget should display on a corner of the screen the rounded X, Y, Z (as integers) coordinates of the player. Just make sure it doesn’t disturb the visibility of the other widgets. If you want, after opening the pause menu you can make the player position widget disappear, making it appear again when you return to the game.
While controlling the player in the game, a widget should be visible at all times. This widget should display on a corner of the screen the rounded X, Y, Z (as integers) coordinates of the player. Just make sure it does not disturb the visibility of the other widgets. If you want, after opening the pause menu you can make the player position widget disappear, and make it appear again when you return to the game.
On the level you should display some grass, textured objects and post process on the terrain to show the settings changes. You can find some stuff on the StarterContent folder.
On the level you should display some grass, textured objects and post process on the terrain to show the settings changes. You can find some of those in the StarterContent folder.
When finished, your project should look like the [“Expected Result” video](https://youtu.be/0v-spQJwDwM).
When finished, your project should look like the [“Expected Result” video](https://youtu.be/0v-spQJwDwM).
@ -44,7 +55,7 @@ When finished, your project should look like the [“Expected Result” video](h
### Bonus
### Bonus
As bonuses you can maybe:
As bonuses you can:
- Add a resolution confirmation button when changing resolution.
- Add a resolution confirmation button when changing resolution.
- Use the “On Release” attribute of the buttons, instead of the "On Pressed".
- Use the “On Release” attribute of the buttons, instead of the "On Pressed".
The goal of this exercise is to create a zombie game with a wave system similar to the Call of Duty zombie mode. Do you know what does it take to become a zombie? Dead-ication.
The goal of this exercise is to create a zombie game with a wave system similar to the Call of Duty zombie mode. Do you know what it takes to become a zombie? Dead-ication.
### Objectives
### Objectives
@ -14,36 +14,46 @@ These are some the features that the game should have:
- a Menu map where you will display 3 options:
- a Menu map where you will display 3 options:
- Start Game (Load the map and launch the game)
- Start Game (Load the map and launch the game).
- Settings (Migrate your WidgetFactory project to integrate it to this one)
- Settings (Migrate your WidgetFactory project to integrate it to this one).
- Quit Game (Exits the game)
- Quit Game (Exits the game).
After entering the game by clicking the "Start Game" button, the game should contain:
After entering the game by clicking the "Start Game" button, these are the game requirements:
- a widget on the screen should be visible for the player life and should also contain the wave number that the player is in.
- a widget on the screen should be visible for the player life and should also contain the wave number that the player is in.
- an enemy spawning system from a blueprint that can be placed around the world.
- an enemy spawning system from a blueprint that can be placed around the world.
- zombies should never all spawn at the same time. Zombies should spawn one by one every `N` second(s)(you decide what N is).
- zombies should never all spawn at the same time. Zombies should spawn one by one every `N` second(s)(you decide what N is).
- create the animation for the Zombie. There should be at least two animations (running and attacking). These actions have to be performed by the Behavior Tree.
- create the animation for the Zombie. There should be at least two animations (running and attacking). These actions have to be performed by the Behavior Tree.
- on spawn, the Zombie should detect the player location and run towards it, following the Behavior Tree that you created earlier.
- on spawn, the Zombie should detect the player location and run towards it, following the Behavior Tree that you created earlier.
- when shooting, a fire projectile has to be casted and shot from the muzzle of the rifle.
- when shooting, a fire projectile has to be casted and shot from the muzzle of the rifle.
- when the Zombie is near the player, the zombie should hit the player.
- when the Zombie is near the player, the zombie should hit the player.
- when the player is hit, his life bar should decrease.
- when the player is hit, his life bar should decrease.
- after 5 hits the player should die.
- after 5 hits the player should die.
- the life of the player should slowly get back up, 2 seconds after the hit. If the player gets hit again, wait 2 seconds again to give him back his health.
- the life of the player should slowly get back up, 2 seconds after the hit. If the player gets hit again, wait 2 seconds again to give him back his health.
- on zombie component hit with the projectile, the zombie should lose health when it gets hit and should not die in one shot.
- on zombie component hit with the projectile, the zombie should lose health when it gets hit and should not die in one shot.
- after being hit multiple times and dying, the death of the zombie has to be noticeable.
- after being hit multiple times and dying, the death of the zombie has to be noticeable.
- the zombie spawning and the recovery of health should be handled by the node "Set Timer by Function Name"
- the zombie spawning and the recovery of health should be handled by the node "Set Timer by Function Name".
- the wave system should be as simple as it sounds. When you kill a certain amount of zombies in the first round, you calculate the number of zombie you want for the second round and spawn them (You can maybe get more creative than zombiesNumber \* 2 or \* wave).
- the wave system should be as simple as it sounds. When you kill a certain amount of zombies in the first round, you calculate the number of zombie you want for the second round and spawn them (You can maybe get more creative than zombiesNumber \* 2 or \* wave).
- more zombies should spawn as the waves increases.
- more zombies should spawn as the waves increases.
- you have the freedom to create the map and design the level. Just be sure that the Navigation Mesh Bound covers the whole map or else you’ll have trouble with the zombie not coming for the player.
- every projectile and zombie should be destroyed when they're no more visible/alive.
- you have the freedom to create the map and design the level. Just be sure that the Navigation Mesh Bound covers the whole map or else you will have trouble with the zombie not coming for the player.
- every projectile and zombie should be destroyed when they are no more visible/alive.
- the sound from the shot and from the zombie have to be handled.
- the sound from the shot and from the zombie have to be handled.
- zombie sound should be following the zombie and the distance should raise or lower the sound when the player gets closer or far.
- zombie sound should be following the zombie and the sound should increase or decrease depending wether the player gets closer or futher from the zombie.
- when you shoot, there must be heard two sounds: the shot sound and the shells of the round hitting the ground.
- when you shoot, two sounds must be heard: the shot sound and the shells of the round hitting the ground.
- when the player is dead at least two information have to be displayed on the screen:
- when the player is dead at least two information have to be displayed on the screen:
- Number of zombies killed
- the number of zombies killed.
- Wave the player died
- the wave during which the player died.
- this two stats also have to be displayed when the player presses the TAB button and be hidden when the TAB button is released.
- these two stats also have to be displayed when the player presses the TAB button and be hidden when the TAB button is released.
After downloading and unzipping this [file](https://assets.01-edu.org/ZombieAI.zip), you can copy its content to your project Content folder.
After downloading and unzipping this [file](https://assets.01-edu.org/ZombieAI.zip), you can copy its content to your project Content folder.
@ -59,4 +69,4 @@ To make the game more interesting you could:
- Make a 3D main menu.
- Make a 3D main menu.
- Implement a point system, in which every time the player kills a zombie, pass wave, etc…, the points gets higher.
- Implement a point system, in which every time the player kills a zombie, pass wave, etc…, the points gets higher.
- Add creepy music during the game, add sound at each new wave, etc…
- Add creepy music during the game, add sound at each new wave, etc…
- make the player have to reload the weapon, in other words, make the gun go out of ammo.
- Make the player have to reload the weapon, in other words, make the gun go out of ammo.