forked from root/public
xpetit
3 years ago
140 changed files with 1613 additions and 1656 deletions
@ -1,63 +1,65 @@ |
|||||||
## Metrics card - Export of students' results |
## Metrics card - Export of students' results |
||||||
|
|
||||||
### Where to find the data |
### Where to find the data |
||||||
|
|
||||||
Metrics for students from a given campus can be found in the Metrics card in the Admin dashboard. |
Metrics for students from a given campus can be found in the Metrics card in the Admin dashboard. |
||||||
|
|
||||||
### Important information |
### Important information |
||||||
* Data can be exported in csv and json formats |
|
||||||
* Data is filtered by campus, exports include all historical data for that campus. |
|
||||||
* We will later develop a feature that enables filtering information before downloading it |
|
||||||
* Data is updated every hour |
|
||||||
* The download link is valid for 24 hours |
|
||||||
* We recommend sharing the downloaded document itself instead of the download link as the link contains the admin’s authorisation token |
|
||||||
|
|
||||||
|
- Data can be exported in csv and json formats |
||||||
|
- Data is filtered by campus, exports include all historical data for that campus. |
||||||
|
- We will later develop a feature that enables filtering information before downloading it |
||||||
|
- Data is updated every hour |
||||||
|
- The download link is valid for 24 hours |
||||||
|
- We recommend sharing the downloaded document itself instead of the download link as the link contains the admin’s authorisation token |
||||||
|
|
||||||
### Description of the data included in the exports |
### Description of the data included in the exports |
||||||
|
|
||||||
Field | Example | Description |
| Field | Example | Description | |
||||||
----- | ----- | ----- |
| --------------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
||||||
**user** | MarieMalarme | Student’s github username |
| **user** | MarieMalarme | Student’s github username | |
||||||
**first_name** | Marie | Student’s first name |
| **first_name** | Marie | Student’s first name | |
||||||
**last_name** | Malarme | Student’s last name |
| **last_name** | Malarme | Student’s last name | |
||||||
**object** | who-are-you | Name of the object for which a result is given |
| **object** | who-are-you | Name of the object for which a result is given | |
||||||
**type** | exercise | There are 3 object types: <br/> - exercise (for quests and exams) <br/> - raid <br/> - project |
| **type** | exercise | There are 3 object types: <br/> - exercise (for quests and exams) <br/> - raid <br/> - project | |
||||||
**parent** | Quest 01 | The object’s hierarchical parent: <br/> - If the object is an exercise, the parent will be either a quest or an exam. <br/> - If the object is a raid or a project, the parent will be the module (piscine or div) |
| **parent** | Quest 01 | The object’s hierarchical parent: <br/> - If the object is an exercise, the parent will be either a quest or an exam. <br/> - If the object is a raid or a project, the parent will be the module (piscine or div) | |
||||||
**module** | piscine-go | The part of the curriculum in which the object is included, either a piscine (piscine Go, piscine JS, piscine Rust) or the main curriculum (Div01) |
| **module** | piscine-go | The part of the curriculum in which the object is included, either a piscine (piscine Go, piscine JS, piscine Rust) or the main curriculum (Div01) | |
||||||
**path** | /madere/piscine-go/quest-01/who-are-you | The url to that object, which outlines the path and hence the hierarchical structure to that object |
| **path** | /madere/piscine-go/quest-01/who-are-you | The url to that object, which outlines the path and hence the hierarchical structure to that object | |
||||||
**attempts** | 2 | Number of submission attempts made by the student |
| **attempts** | 2 | Number of submission attempts made by the student | |
||||||
**status** | succeeded | Current status of the student's work on the object: <br/> - "available" indicates that the student has started working on the object but either hasn't submitted it yet to be corrected, or is waiting for the auditing process to be completed <br/> - "succeeded" and "failed" are attributed once the object has been corrected |
| **status** | succeeded | Current status of the student's work on the object: <br/> - "available" indicates that the student has started working on the object but either hasn't submitted it yet to be corrected, or is waiting for the auditing process to be completed <br/> - "succeeded" and "failed" are attributed once the object has been corrected | |
||||||
**xp** | 325 | Number of XPs gained by the student for succeeding |
| **xp** | 325 | Number of XPs gained by the student for succeeding | |
||||||
**base_xp** | 325 | Maximum number of XPs the student can get for succeeding for that object |
| **base_xp** | 325 | Maximum number of XPs the student can get for succeeding for that object | |
||||||
**grade** | 1 | The student’s score for that object is a number between 0 (failed) and 1 (succeeded). If the object is a project, the grade can be superior to 1 when the student successfully passes bonus questions |
| **grade** | 1 | The student’s score for that object is a number between 0 (failed) and 1 (succeeded). If the object is a project, the grade can be superior to 1 when the student successfully passes bonus questions | |
||||||
**last_update** | 2020-07-27T15:39:46.368Z | Date and time of the student’s latest activity for that object |
| **last_update** | 2020-07-27T15:39:46.368Z | Date and time of the student’s latest activity for that object | |
||||||
|
|
||||||
### Explanation of the XP and Grade calculation |
### Explanation of the XP and Grade calculation |
||||||
|
|
||||||
#### Exercises within quests |
#### Exercises within quests |
||||||
* _Test mode_: automatic tester |
|
||||||
* _XPs_: fixed value. Students get all the points when succeeding at the exercise, no matter how many attempts they made. |
- _Test mode_: automatic tester |
||||||
* _Grade_: 0 (failure) or 1 (success) |
- _XPs_: fixed value. Students get all the points when succeeding at the exercise, no matter how many attempts they made. |
||||||
|
- _Grade_: 0 (failure) or 1 (success) |
||||||
|
|
||||||
#### Exercises within exams |
#### Exercises within exams |
||||||
* _Contextual information_: |
|
||||||
* Exams consist of many exercises which are grouped by difficulty levels. The student is randomly assigned an exercise from each level and has to succeed in order to move on to the next exercise level. |
|
||||||
* Each exercise level has a maximum amount of XPs which grows according to the level’s difficulty. |
|
||||||
* Exams are limited in time so students have to successfully complete as many exams as they can as fast as they can with the least amount of errors. |
|
||||||
* _Test mode_: automatic tester |
|
||||||
* _XPs_: variable value. Students get the maximum amount of points when they succeed at the first attempt. Each failed submission reduces the amount of XPs the student can get for that level. |
|
||||||
* _Grade_: 0 (failure) or 1 (success) |
|
||||||
|
|
||||||
#### Raids |
- _Contextual information_: |
||||||
* _Test mode_: projects are evaluated by a jury panel in 2 steps: |
- Exams consist of many exercises which are grouped by difficulty levels. The student is randomly assigned an exercise from each level and has to succeed in order to move on to the next exercise level. |
||||||
* First the jury evaluates the code through an audit, a series of pass / fail questions to be answered by the auditor. Succeeding the audit gives students a certain amount of XPs. |
- Each exercise level has a maximum amount of XPs which grows according to the level’s difficulty. |
||||||
* The jury then interviews students and can decide to give them bonus / malus XPs based on their evaluation of the code and the students’ answers to their questions. |
- Exams are limited in time so students have to successfully complete as many exams as they can as fast as they can with the least amount of errors. |
||||||
* _XPs_: variable value calculated as a fixed value for succeeding the project plus / minus XPs attributed by the jury at their discretion |
- _Test mode_: automatic tester |
||||||
* _Grade_: 0 (failure) or 1 (success) |
- _XPs_: variable value. Students get the maximum amount of points when they succeed at the first attempt. Each failed submission reduces the amount of XPs the student can get for that level. |
||||||
|
- _Grade_: 0 (failure) or 1 (success) |
||||||
|
|
||||||
#### Projects |
#### Raids |
||||||
* _Test mode_: audits, which are peer-to-peer evaluations based on a series of pass/fail questions to be answered by the auditor |
|
||||||
* _XPs_: variable value. Students can get more than the maximum value of XPs if they complete bonus exercises. They get no XPs at all if they fail at least one of the questions in the audit |
|
||||||
* _Grade_: number between 0 and 1, proportionate to the number of questions successfully passed in the audit. The grade can be higher than 1 if the student completed bonus exercises. |
|
||||||
|
|
||||||
|
- _Test mode_: projects are evaluated by a jury panel in 2 steps: |
||||||
|
- First the jury evaluates the code through an audit, a series of pass / fail questions to be answered by the auditor. Succeeding the audit gives students a certain amount of XPs. |
||||||
|
- The jury then interviews students and can decide to give them bonus / malus XPs based on their evaluation of the code and the students’ answers to their questions. |
||||||
|
- _XPs_: variable value calculated as a fixed value for succeeding the project plus / minus XPs attributed by the jury at their discretion |
||||||
|
- _Grade_: 0 (failure) or 1 (success) |
||||||
|
|
||||||
|
#### Projects |
||||||
|
|
||||||
|
- _Test mode_: audits, which are peer-to-peer evaluations based on a series of pass/fail questions to be answered by the auditor |
||||||
|
- _XPs_: variable value. Students can get more than the maximum value of XPs if they complete bonus exercises. They get no XPs at all if they fail at least one of the questions in the audit |
||||||
|
- _Grade_: number between 0 and 1, proportionate to the number of questions successfully passed in the audit. The grade can be higher than 1 if the student completed bonus exercises. |
||||||
|
@ -1,40 +1,40 @@ |
|||||||
## ArmyOfOne |
## ArmyOfOne |
||||||
|
|
||||||
In this exercise, you will learn to create a complex player movement from scratch. The character you will use is Countess from the game Paragon. She's nice after you know her, just give her a chance. |
In this exercise, you will learn to create a complex player movement from scratch. The character you will use is Countess from the game Paragon. She's nice after you know her, just give her a chance. |
||||||
|
|
||||||
### Objectives |
### Objectives |
||||||
|
|
||||||
For this project you will implement a fully playable character using what we call Animation Blueprint, Aim Offset and PlayerCharacter Blueprint. |
For this project you will implement a fully playable character using what we call Animation Blueprint, Aim Offset and PlayerCharacter Blueprint. |
||||||
|
|
||||||
### Instructions |
### Instructions |
||||||
|
|
||||||
Starting from an empty project, after creating a level with a floor (nothing else is really required), you should: |
Starting from an empty project, after creating a level with a floor (nothing else is really required), you should: |
||||||
|
|
||||||
- create a Third Player Character Blueprint and apply the Countess mesh to it. |
- create a Third Player Character Blueprint and apply the Countess mesh to it. |
||||||
|
|
||||||
- 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. |
||||||
|
|
||||||
- separate the upper and lower body part, so that the character is able to walk and attack at the same time without any animation problems. |
- separate the upper and lower body part, so that the character is able to walk and attack at the same time without any animation problems. |
||||||
|
|
||||||
- make Countess lean according to the mouse direction, while running forward. |
- make Countess lean according to the mouse direction, while running forward. |
||||||
|
|
||||||
- use Animation Blendspace to organize your movements. |
- use Animation Blendspace to organize your movements. |
||||||
|
|
||||||
- use Animation Blueprint variables to handle different animation states. |
- use Animation Blueprint variables to handle different animation states. |
||||||
|
|
||||||
After downloading and unzipping this [file](https://assets.01-edu.org/Unreal-Engine-Piscine/ArmyOfOne.zip), you can copy its content to your project Content folder. |
After downloading and unzipping this [file](https://assets.01-edu.org/Unreal-Engine-Piscine/ArmyOfOne.zip), you can copy its content to your project Content folder. |
||||||
|
|
||||||
When finished, your project should look like the [“Expected Result” video](https://youtu.be/sebi5icA1MM). |
When finished, your project should look like the [“Expected Result” video](https://youtu.be/sebi5icA1MM). |
||||||
|
|
||||||
> Do not forget to zip up the project compile and save everything for peer correction. |
> Do not forget to zip up the project compile and save everything for peer correction. |
||||||
|
|
||||||
[Here](https://www.youtube.com/playlist?list=PLHyAJ_GrRtf9sxZqgfPVM06PrLk8_CWA-) you can find an instructional playlist on Unreal Engine. |
[Here](https://www.youtube.com/playlist?list=PLHyAJ_GrRtf9sxZqgfPVM06PrLk8_CWA-) you can find an instructional playlist on Unreal Engine. |
||||||
|
@ -1,33 +1,33 @@ |
|||||||
#### Functional |
#### Functional |
||||||
|
|
||||||
###### Can the Countess character move in the four directions (forward, backward, left and right) using the WASD keys? |
###### Can the Countess character move in the four directions (forward, backward, left and right) using the WASD keys? |
||||||
|
|
||||||
###### Can the Countess character jump using the Space key? |
###### Can the Countess character jump using the Space key? |
||||||
|
|
||||||
###### Can the Countess character attack using the left mouse click? |
###### Can the Countess character attack using the left mouse click? |
||||||
|
|
||||||
###### While running, does moving the mouse left and right change the player's leaning angle and direction? |
###### While running, does moving the mouse left and right change the player's leaning angle and direction? |
||||||
|
|
||||||
###### Is the animation used for the countess in the animation blueprint stored in a BlendSpace file? |
###### Is the animation used for the countess in the animation blueprint stored in a BlendSpace file? |
||||||
|
|
||||||
###### Does the Countess head follow the mouse orientation? |
###### Does the Countess head follow the mouse orientation? |
||||||
|
|
||||||
###### Is an Aim Offset being used to move the Countess head according to the mouse movement? |
###### Is an Aim Offset being used to move the Countess head according to the mouse movement? |
||||||
|
|
||||||
###### Can the Countess character attack using the blades when clicking on the left mouse button? |
###### Can the Countess character attack using the blades when clicking on the left mouse button? |
||||||
|
|
||||||
###### Are the body transitions smooth when starting an attack or jumping, etc…? |
###### Are the body transitions smooth when starting an attack or jumping, etc…? |
||||||
|
|
||||||
###### Can you attack and move around at the same time without damaging the animations performance? |
###### Can you attack and move around at the same time without damaging the animations performance? |
||||||
|
|
||||||
###### Does the Countess body blends between two animations (are blend nodes being used)? |
###### Does the Countess body blends between two animations (are blend nodes being used)? |
||||||
|
|
||||||
###### Is the upper body and lower body being controlled as "two separate modules"? |
###### Is the upper body and lower body being controlled as "two separate modules"? |
||||||
|
|
||||||
###### Does the Animation Blueprint have at least three variables in order to handle the character speed if she is in the air and attacking? |
###### Does the Animation Blueprint have at least three variables in order to handle the character speed if she is in the air and attacking? |
||||||
|
|
||||||
#### Bonus |
#### Bonus |
||||||
|
|
||||||
###### Can the Countess character execute more than 3 attacks? |
###### Can the Countess character execute more than 3 attacks? |
||||||
|
|
||||||
###### Are they at least two different Countess skins being used? |
###### Are they at least two different Countess skins being used? |
||||||
|
@ -1,27 +1,27 @@ |
|||||||
#### HTML structure |
#### HTML structure |
||||||
|
|
||||||
###### Does the webpage look the same as the template, and includes all the elements? |
###### Does the webpage look the same as the template, and includes all the elements? |
||||||
|
|
||||||
###### When clicking on an item of the navbar menu, does it scroll to the corresponding section in the page? |
###### When clicking on an item of the navbar menu, does it scroll to the corresponding section in the page? |
||||||
|
|
||||||
#### Custom CSS |
#### Custom CSS |
||||||
|
|
||||||
###### Have the colors been modified from the template version? |
###### Have the colors been modified from the template version? |
||||||
|
|
||||||
###### Does the Dashboard section display the 3 cards, looking similar to the template? |
###### Does the Dashboard section display the 3 cards, looking similar to the template? |
||||||
|
|
||||||
#### JS interactions |
#### JS interactions |
||||||
|
|
||||||
###### When clicking on the images' section, does it toggle the order of the pics? |
###### When clicking on the images' section, does it toggle the order of the pics? |
||||||
|
|
||||||
###### +In the Contact section, when writing something in the input and clicking the button, the following sentence should appear in the place of the input, and display the text filled in the input: "Nice to meet you _[input data displayed here]_ 👋! Thanks for introducing yourself.". Is this working? |
###### +In the Contact section, when writing something in the input and clicking the button, the following sentence should appear in the place of the input, and display the text filled in the input: "Nice to meet you _[input data displayed here]_ 👋! Thanks for introducing yourself.". Is this working? |
||||||
|
|
||||||
###### +When clicking on a card of the dashboard, does it open a modal displaying the card content? |
###### +When clicking on a card of the dashboard, does it open a modal displaying the card content? |
||||||
|
|
||||||
###### +Does the modal close when clicking on the closing button & when pressing the "Escape" key? |
###### +Does the modal close when clicking on the closing button & when pressing the "Escape" key? |
||||||
|
|
||||||
###### +Does the modal include a widget allowing to change the alignment of the text? |
###### +Does the modal include a widget allowing to change the alignment of the text? |
||||||
|
|
||||||
###### +Does the header display a different Chuck Norris' joke every time the page is reloaded? |
###### +Does the header display a different Chuck Norris' joke every time the page is reloaded? |
||||||
|
|
||||||
###### +Does the header display a different Chuck Norris' joke every 10 seconds? |
###### +Does the header display a different Chuck Norris' joke every 10 seconds? |
||||||
|
@ -1,25 +1,25 @@ |
|||||||
#### Functional |
#### Functional |
||||||
|
|
||||||
###### Are the map size (X = 35, Y = 40, Z = 1) and composition (using cubes) being respected? |
###### Are the map size (X = 35, Y = 40, Z = 1) and composition (using cubes) being respected? |
||||||
|
|
||||||
###### Are the projectile size (X = Y = Z = 0,5) and speed (10000) being respected? |
###### Are the projectile size (X = Y = Z = 0,5) and speed (10000) being respected? |
||||||
|
|
||||||
###### If you try to move the target to the target zone, is the player forbidden from trespassing to that zone by an invisible wall? |
###### If you try to move the target to the target zone, is the player forbidden from trespassing to that zone by an invisible wall? |
||||||
|
|
||||||
###### When you shoot a target, does the bullet go through the invisible wall? |
###### When you shoot a target, does the bullet go through the invisible wall? |
||||||
|
|
||||||
###### Did the targets correctly lay on the floor when hit by the projectile? |
###### Did the targets correctly lay on the floor when hit by the projectile? |
||||||
|
|
||||||
###### Did the target rotate from the bottom and not from the center? |
###### Did the target rotate from the bottom and not from the center? |
||||||
|
|
||||||
###### Is there only one class “BP_Target” present on the project? |
###### Is there only one class “BP_Target” present on the project? |
||||||
|
|
||||||
###### 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) |
###### 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) |
||||||
|
|
||||||
#### Bonus |
#### Bonus |
||||||
|
|
||||||
###### Do different targets have different speeds? |
###### Do different targets have different speeds? |
||||||
|
|
||||||
###### Do the walls and floor have texture? |
###### Do the walls and floor have texture? |
||||||
|
|
||||||
###### Are there obstacles in front of targets? |
###### Are there obstacles in front of targets? |
||||||
|
@ -1,187 +1,187 @@ |
|||||||
#### Authentication |
#### Authentication |
||||||
|
|
||||||
###### Are an email and a password asked for in the resgistration? |
###### Are an email and a password asked for in the resgistration? |
||||||
|
|
||||||
###### Does the project detect if the email or password are wrong? |
###### Does the project detect if the email or password are wrong? |
||||||
|
|
||||||
###### Does the project detect if the email or user name is already taken in the registration? |
###### Does the project detect if the email or user name is already taken in the registration? |
||||||
|
|
||||||
##### Try to register as a new user in the forum. |
##### Try to register as a new user in the forum. |
||||||
|
|
||||||
###### Is it possible to register? |
###### Is it possible to register? |
||||||
|
|
||||||
##### Try to login with the user you created. |
##### Try to login with the user you created. |
||||||
|
|
||||||
###### Can you login and have all the rights of a registered user? |
###### Can you login and have all the rights of a registered user? |
||||||
|
|
||||||
##### Try to login without any credentials. |
##### Try to login without any credentials. |
||||||
|
|
||||||
###### Does it show a warning message? |
###### Does it show a warning message? |
||||||
|
|
||||||
###### Are sessions present in the project? |
###### Are sessions present in the project? |
||||||
|
|
||||||
##### Try opening two different browsers and login into one of them. Refresh the other browser. |
##### Try opening two different browsers and login into one of them. Refresh the other browser. |
||||||
|
|
||||||
###### Can you confirm that the browser non logged remains unregistered? |
###### Can you confirm that the browser non logged remains unregistered? |
||||||
|
|
||||||
##### Try opening two different browsers and login into both of them. Refresh both browsers. |
##### Try opening two different browsers and login into both of them. Refresh both browsers. |
||||||
|
|
||||||
###### Can you confirm that only one of those browsers has an active session? |
###### Can you confirm that only one of those browsers has an active session? |
||||||
|
|
||||||
##### Try opening two different browsers and login into one of them. Then create a new post or just add a comment. Refresh both browsers. |
##### Try opening two different browsers and login into one of them. Then create a new post or just add a comment. Refresh both browsers. |
||||||
|
|
||||||
###### Does it present the comment/post on both browsers? |
###### Does it present the comment/post on both browsers? |
||||||
|
|
||||||
#### SQLite |
#### SQLite |
||||||
|
|
||||||
###### Does the code contain at least one CREATE query? |
###### Does the code contain at least one CREATE query? |
||||||
|
|
||||||
###### Does the code contain at least one INSERT query? |
###### Does the code contain at least one INSERT query? |
||||||
|
|
||||||
###### Does the code contain at least one SELECT query? |
###### Does the code contain at least one SELECT query? |
||||||
|
|
||||||
##### Try registering in the forum, open the database with `sqlite3 <database_name.db>` and perform a query to select all the users (Example: SELECT \* FROM users;). |
##### Try registering in the forum, open the database with `sqlite3 <database_name.db>` and perform a query to select all the users (Example: SELECT \* FROM users;). |
||||||
|
|
||||||
###### Does it present the user you created? |
###### Does it present the user you created? |
||||||
|
|
||||||
##### Try creating a post in the forum, open the database with `sqlite3 <database_name.db>` and perform a query to select all the users (Example: SELECT \* FROM post;). |
##### Try creating a post in the forum, open the database with `sqlite3 <database_name.db>` and perform a query to select all the users (Example: SELECT \* FROM post;). |
||||||
|
|
||||||
###### Does it present the post you created? |
###### Does it present the post you created? |
||||||
|
|
||||||
##### Try creating a comment in the forum, open the database with `sqlite3 <database_name.db>` and perform a query to select all the users (Example: SELECT \* FROM comment;). |
##### Try creating a comment in the forum, open the database with `sqlite3 <database_name.db>` and perform a query to select all the users (Example: SELECT \* FROM comment;). |
||||||
|
|
||||||
###### Does it present the comment you created? |
###### Does it present the comment you created? |
||||||
|
|
||||||
#### Docker |
#### Docker |
||||||
|
|
||||||
###### Does the project have Dockerfiles? |
###### Does the project have Dockerfiles? |
||||||
|
|
||||||
##### Try to run the command `"docker image build [OPTINS] PATH | URL | -"` to build the image using using the project Dockerfiles and run the command `"docker images"` to see images. |
##### Try to run the command `"docker image build [OPTINS] PATH | URL | -"` to build the image using using the project Dockerfiles and run the command `"docker images"` to see images. |
||||||
|
|
||||||
``` |
``` |
||||||
student$ docker images |
student$ docker images |
||||||
REPOSITORY TAG IMAGE ID CREATED SIZE |
REPOSITORY TAG IMAGE ID CREATED SIZE |
||||||
<name of the image> latest 85a65d66ca39 7 seconds ago 795MB |
<name of the image> latest 85a65d66ca39 7 seconds ago 795MB |
||||||
``` |
``` |
||||||
|
|
||||||
###### Does all images build as above? |
###### Does all images build as above? |
||||||
|
|
||||||
##### Try running the command `"docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]"` to start the containers using the images just created and run the command `"docker ps -a"` to see containers. |
##### Try running the command `"docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]"` to start the containers using the images just created and run the command `"docker ps -a"` to see containers. |
||||||
|
|
||||||
``` |
``` |
||||||
student$ docker ps -a |
student$ docker ps -a |
||||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
||||||
cc8f5dcf760f <name of the image> "./server" 6 seconds ago Up 6 seconds 0.0.0.0:8080->8080/tcp ascii-art-web |
cc8f5dcf760f <name of the image> "./server" 6 seconds ago Up 6 seconds 0.0.0.0:8080->8080/tcp ascii-art-web |
||||||
``` |
``` |
||||||
|
|
||||||
###### Is the docker containers running as above? |
###### Is the docker containers running as above? |
||||||
|
|
||||||
###### Does the project present no [unused object](https://docs.docker.com/config/pruning/)? |
###### Does the project present no [unused object](https://docs.docker.com/config/pruning/)? |
||||||
|
|
||||||
#### Functional |
#### Functional |
||||||
|
|
||||||
##### Enter the forum as a non-registered user. |
##### Enter the forum as a non-registered user. |
||||||
|
|
||||||
###### Are you prohibited to create a post? |
###### Are you prohibited to create a post? |
||||||
|
|
||||||
##### Enter the forum as a non-registered user. |
##### Enter the forum as a non-registered user. |
||||||
|
|
||||||
###### Are you prohibited to create a comment? |
###### Are you prohibited to create a comment? |
||||||
|
|
||||||
##### Enter the forum as a non-registered user and try to like a comment. |
##### Enter the forum as a non-registered user and try to like a comment. |
||||||
|
|
||||||
###### Are you prohibited to like a post? |
###### Are you prohibited to like a post? |
||||||
|
|
||||||
##### Enter the forum as a non-registered user and try to dislike a comment. |
##### Enter the forum as a non-registered user and try to dislike a comment. |
||||||
|
|
||||||
###### Are you prohibited to dislike a comment? |
###### Are you prohibited to dislike a comment? |
||||||
|
|
||||||
##### Enter the forum as a registered user, go to a post and try to create a comment for it. |
##### Enter the forum as a registered user, go to a post and try to create a comment for it. |
||||||
|
|
||||||
###### Were you able to create the comment? |
###### Were you able to create the comment? |
||||||
|
|
||||||
##### Enter the forum as a registered user, go to a post and try to create an empty comment for it. |
##### Enter the forum as a registered user, go to a post and try to create an empty comment for it. |
||||||
|
|
||||||
###### Were you prohibited to create the comment? |
###### Were you prohibited to create the comment? |
||||||
|
|
||||||
##### Enter the forum as a registered user and try to create a post. |
##### Enter the forum as a registered user and try to create a post. |
||||||
|
|
||||||
###### Were you able to create a post? |
###### Were you able to create a post? |
||||||
|
|
||||||
##### Enter the forum as a registered user and try to create an empty post. |
##### Enter the forum as a registered user and try to create an empty post. |
||||||
|
|
||||||
###### Were you prohibited to create the post? |
###### Were you prohibited to create the post? |
||||||
|
|
||||||
##### Try creating a post as a registered user and try to choose several categories for that post. |
##### Try creating a post as a registered user and try to choose several categories for that post. |
||||||
|
|
||||||
###### Were you able to choose several categories for that post? |
###### Were you able to choose several categories for that post? |
||||||
|
|
||||||
##### Try creating a post as a registered user and try to choose a category for that post. |
##### Try creating a post as a registered user and try to choose a category for that post. |
||||||
|
|
||||||
###### Were you able to choose a category for that post? |
###### Were you able to choose a category for that post? |
||||||
|
|
||||||
##### Enter the forum as a registered user and try to like or dislike a post. |
##### Enter the forum as a registered user and try to like or dislike a post. |
||||||
|
|
||||||
###### Can you like or dislike the post? |
###### Can you like or dislike the post? |
||||||
|
|
||||||
##### Enter the forum as a registered user and try to like or dislike a comment. |
##### Enter the forum as a registered user and try to like or dislike a comment. |
||||||
|
|
||||||
###### Can you like or dislike the comment? |
###### Can you like or dislike the comment? |
||||||
|
|
||||||
##### Enter the forum as a registered user, try liking and disliking a post and then refresh the page. |
##### Enter the forum as a registered user, try liking and disliking a post and then refresh the page. |
||||||
|
|
||||||
###### Does the number of likes/dislikes change? |
###### Does the number of likes/dislikes change? |
||||||
|
|
||||||
##### Enter the forum as a registered user and try to like and then dislike the same post. |
##### Enter the forum as a registered user and try to like and then dislike the same post. |
||||||
|
|
||||||
###### Can you confirm that it is not possible that the post is liked and disliked at the same time? |
###### Can you confirm that it is not possible that the post is liked and disliked at the same time? |
||||||
|
|
||||||
##### Enter the forum as a registered user and try seeing all of your created posts. |
##### Enter the forum as a registered user and try seeing all of your created posts. |
||||||
|
|
||||||
###### Does it present the expected posts? |
###### Does it present the expected posts? |
||||||
|
|
||||||
##### Enter the forum as a registered user and try seeing all of your liked posts. |
##### Enter the forum as a registered user and try seeing all of your liked posts. |
||||||
|
|
||||||
###### Does it present the expected posts? |
###### Does it present the expected posts? |
||||||
|
|
||||||
##### Navigate to a post of your choice and see its comments. |
##### Navigate to a post of your choice and see its comments. |
||||||
|
|
||||||
###### Are all users (registered or not) able to see the number of likes and dislikes that comment has? |
###### Are all users (registered or not) able to see the number of likes and dislikes that comment has? |
||||||
|
|
||||||
##### Try seeing all posts from one category using the filter. |
##### Try seeing all posts from one category using the filter. |
||||||
|
|
||||||
###### Are all posts displayed from that category? |
###### Are all posts displayed from that category? |
||||||
|
|
||||||
###### Did the server behaved as expected?(did not crashed) |
###### Did the server behaved as expected?(did not crashed) |
||||||
|
|
||||||
###### Does the server use the right [HTTP method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)? |
###### Does the server use the right [HTTP method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)? |
||||||
|
|
||||||
###### Are all the pages working? (Absence of 404 page?) |
###### Are all the pages working? (Absence of 404 page?) |
||||||
|
|
||||||
###### Does the project handle [HTTP status 400 - Bad Requests](https://kinsta.com/knowledgebase/400-bad-request/#causes)? |
###### Does the project handle [HTTP status 400 - Bad Requests](https://kinsta.com/knowledgebase/400-bad-request/#causes)? |
||||||
|
|
||||||
###### Does the project handle [HTTP status 500 - Internal Server Errors](https://www.restapitutorial.com/httpstatuscodes.html)? |
###### Does the project handle [HTTP status 500 - Internal Server Errors](https://www.restapitutorial.com/httpstatuscodes.html)? |
||||||
|
|
||||||
###### Are only the allowed packages being used? |
###### Are only the allowed packages being used? |
||||||
|
|
||||||
###### As an auditor, is this project up to every standard? If not, why are you failing the project?(Empty Work, Incomplete Work, Invalid compilation, Cheating, Crashing, Leaks) |
###### As an auditor, is this project up to every standard? If not, why are you failing the project?(Empty Work, Incomplete Work, Invalid compilation, Cheating, Crashing, Leaks) |
||||||
|
|
||||||
#### General |
#### General |
||||||
|
|
||||||
###### +Does the project present a script to build the images and containers? (using a script to simplify the build) |
###### +Does the project present a script to build the images and containers? (using a script to simplify the build) |
||||||
|
|
||||||
#### Basic |
#### Basic |
||||||
|
|
||||||
###### +Does the project runs quickly and effectively? (Favoring recursive, no unnecessary data requests, etc) |
###### +Does the project runs quickly and effectively? (Favoring recursive, no unnecessary data requests, etc) |
||||||
|
|
||||||
###### +Does the code obey the [good practices](https://public.01-edu.org/subjects/good-practices/)? |
###### +Does the code obey the [good practices](https://public.01-edu.org/subjects/good-practices/)? |
||||||
|
|
||||||
###### +Is there a test file for this code? |
###### +Is there a test file for this code? |
||||||
|
|
||||||
#### Social |
#### Social |
||||||
|
|
||||||
###### +Did you learn anything from this project? |
###### +Did you learn anything from this project? |
||||||
|
|
||||||
###### +Can it be open-sourced / be used for other sources? |
###### +Can it be open-sourced / be used for other sources? |
||||||
|
|
||||||
###### +Would you recommend/nominate this program as an example for the rest of the school? |
###### +Would you recommend/nominate this program as an example for the rest of the school? |
||||||
|
@ -1,51 +1,51 @@ |
|||||||
#### Functional |
#### Functional |
||||||
|
|
||||||
###### Does the forum present the 4 types of users? |
###### Does the forum present the 4 types of users? |
||||||
|
|
||||||
##### Try to enter the forum as a Guest |
##### Try to enter the forum as a Guest |
||||||
|
|
||||||
###### Can you confirm that the content is only viewable? |
###### Can you confirm that the content is only viewable? |
||||||
|
|
||||||
##### Try registering as a normal user. |
##### Try registering as a normal user. |
||||||
|
|
||||||
###### Can you create posts and comments? |
###### Can you create posts and comments? |
||||||
|
|
||||||
##### Try registering as a normal user. |
##### Try registering as a normal user. |
||||||
|
|
||||||
###### Can you like or dislike a post? |
###### Can you like or dislike a post? |
||||||
|
|
||||||
##### Try registering as a moderator. Then login to an admin account and see if the admin user has received the request. |
##### Try registering as a moderator. Then login to an admin account and see if the admin user has received the request. |
||||||
|
|
||||||
###### Can you confirm that the admin received the request? |
###### Can you confirm that the admin received the request? |
||||||
|
|
||||||
##### Try accepting a moderator using the admin user. |
##### Try accepting a moderator using the admin user. |
||||||
|
|
||||||
###### Has the moderator been promoted? |
###### Has the moderator been promoted? |
||||||
|
|
||||||
##### Try using the moderator to delete a obscene post |
##### Try using the moderator to delete a obscene post |
||||||
|
|
||||||
###### Can you confirm that it is possible? |
###### Can you confirm that it is possible? |
||||||
|
|
||||||
##### Try using the moderator to report a illegal post |
##### Try using the moderator to report a illegal post |
||||||
|
|
||||||
###### Did the admin user receive the report? |
###### Did the admin user receive the report? |
||||||
|
|
||||||
##### Try using the admin user to answer the moderator request. |
##### Try using the admin user to answer the moderator request. |
||||||
|
|
||||||
###### Did the moderator receive the answer from the admin? |
###### Did the moderator receive the answer from the admin? |
||||||
|
|
||||||
##### Try using an admin user to demote a moderator. |
##### Try using an admin user to demote a moderator. |
||||||
|
|
||||||
###### Can you confirm that it is possible? |
###### Can you confirm that it is possible? |
||||||
|
|
||||||
##### As an auditor, is this project up to every standard? If not, why are you failing the project?(Empty Work, Incomplete Work, Invalid compilation, Cheating, Crashing, Leaks) |
##### As an auditor, is this project up to every standard? If not, why are you failing the project?(Empty Work, Incomplete Work, Invalid compilation, Cheating, Crashing, Leaks) |
||||||
|
|
||||||
#### General |
#### General |
||||||
|
|
||||||
###### +Does the project present more then 4 types of users? |
###### +Does the project present more then 4 types of users? |
||||||
|
|
||||||
#### Social |
#### Social |
||||||
|
|
||||||
###### +Did you learn anything from this project? |
###### +Did you learn anything from this project? |
||||||
|
|
||||||
###### +Would you recommend/nominate this program as an example for the rest of the school? |
###### +Would you recommend/nominate this program as an example for the rest of the school? |
||||||
|
@ -1,103 +1,103 @@ |
|||||||
#### Functional |
#### Functional |
||||||
|
|
||||||
###### Has the requirement for the allowed packages been respected? (Reminder for this project: (only [standard packages](https://golang.org/pkg/) |
###### Has the requirement for the allowed packages been respected? (Reminder for this project: (only [standard packages](https://golang.org/pkg/) |
||||||
|
|
||||||
###### Is the data from the artists being used? |
###### Is the data from the artists being used? |
||||||
|
|
||||||
###### Is data from the relations being used? |
###### Is data from the relations being used? |
||||||
|
|
||||||
##### Try to see the "members" for the artist/band `"Queen"` |
##### Try to see the "members" for the artist/band `"Queen"` |
||||||
|
|
||||||
``` |
``` |
||||||
"Freddie Mercury", |
"Freddie Mercury", |
||||||
"Brian May", |
"Brian May", |
||||||
"John Daecon", |
"John Daecon", |
||||||
"Roger Meddows-Taylor", |
"Roger Meddows-Taylor", |
||||||
"Mike Grose", |
"Mike Grose", |
||||||
"Barry Mitchell", |
"Barry Mitchell", |
||||||
"Doug Fogie" |
"Doug Fogie" |
||||||
``` |
``` |
||||||
|
|
||||||
###### Does it present the right "member", as above? |
###### Does it present the right "member", as above? |
||||||
|
|
||||||
##### Try to see the "firstAlbum" for the artist/band `"Gorillaz"` |
##### Try to see the "firstAlbum" for the artist/band `"Gorillaz"` |
||||||
|
|
||||||
``` |
``` |
||||||
"26-03-2001" |
"26-03-2001" |
||||||
``` |
``` |
||||||
|
|
||||||
###### Does it present the right date for the "firstAlbum", as above? |
###### Does it present the right date for the "firstAlbum", as above? |
||||||
|
|
||||||
##### Try to see the "locations" for the artist/band `"Travis Scott"` |
##### Try to see the "locations" for the artist/band `"Travis Scott"` |
||||||
|
|
||||||
``` |
``` |
||||||
"santiago-chile" |
"santiago-chile" |
||||||
"sao_paulo-brasil" |
"sao_paulo-brasil" |
||||||
"los_angeles-usa" |
"los_angeles-usa" |
||||||
"houston-usa" |
"houston-usa" |
||||||
"atlanta-usa" |
"atlanta-usa" |
||||||
"new_orleans-usa" |
"new_orleans-usa" |
||||||
"philadelphia-usa" |
"philadelphia-usa" |
||||||
"london-uk" |
"london-uk" |
||||||
"frauenfeld-switzerland" |
"frauenfeld-switzerland" |
||||||
"turku-finland" |
"turku-finland" |
||||||
``` |
``` |
||||||
|
|
||||||
###### Does it present the right "locations" as above? |
###### Does it present the right "locations" as above? |
||||||
|
|
||||||
##### Try to see the ""members"" for the artist/band `"Foo Fighters"`. |
##### Try to see the ""members"" for the artist/band `"Foo Fighters"`. |
||||||
|
|
||||||
``` |
``` |
||||||
"Dave Grohl" |
"Dave Grohl" |
||||||
"Nate Mendel" |
"Nate Mendel" |
||||||
"Taylor Hawkins" |
"Taylor Hawkins" |
||||||
"Chris Shiflett" |
"Chris Shiflett" |
||||||
"Pat Smear" |
"Pat Smear" |
||||||
"Rami Jaffee" |
"Rami Jaffee" |
||||||
``` |
``` |
||||||
|
|
||||||
###### Does it present the right members as above? |
###### Does it present the right members as above? |
||||||
|
|
||||||
##### Try to trigger an event using some kind of action (ex: Clicking the mouse over a certain element, pressing a key on the keyboard, resizing or closing the browser window, a form being submitted, an error occurring, etc). |
##### Try to trigger an event using some kind of action (ex: Clicking the mouse over a certain element, pressing a key on the keyboard, resizing or closing the browser window, a form being submitted, an error occurring, etc). |
||||||
|
|
||||||
###### Does the event responds as expected? |
###### Does the event responds as expected? |
||||||
|
|
||||||
###### Did the server behaved as expected?(did not crashed) |
###### Did the server behaved as expected?(did not crashed) |
||||||
|
|
||||||
###### Does the server use the right [HTTP method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)? |
###### Does the server use the right [HTTP method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)? |
||||||
|
|
||||||
###### Has the website runned without crashing at anytime? |
###### Has the website runned without crashing at anytime? |
||||||
|
|
||||||
###### Are all the pages working? (Absence of 404 page?) |
###### Are all the pages working? (Absence of 404 page?) |
||||||
|
|
||||||
###### Does the project handle [HTTP status 400 - Bad Requests](https://kinsta.com/knowledgebase/400-bad-request/#causes)? |
###### Does the project handle [HTTP status 400 - Bad Requests](https://kinsta.com/knowledgebase/400-bad-request/#causes)? |
||||||
|
|
||||||
###### Does the project handle [HTTP status 500 - Internal Server Errors](https://www.restapitutorial.com/httpstatuscodes.html)? |
###### Does the project handle [HTTP status 500 - Internal Server Errors](https://www.restapitutorial.com/httpstatuscodes.html)? |
||||||
|
|
||||||
###### Is the communication between server and client well established? |
###### Is the communication between server and client well established? |
||||||
|
|
||||||
###### Does the server present all the needed handlers and patterns for the http requests? |
###### Does the server present all the needed handlers and patterns for the http requests? |
||||||
|
|
||||||
###### As an auditor, is this project up to every standard? If not, why are you failing the project?(Empty Work, Incomplete Work, Invalid compilation, Cheating, Crashing, Leaks) |
###### As an auditor, is this project up to every standard? If not, why are you failing the project?(Empty Work, Incomplete Work, Invalid compilation, Cheating, Crashing, Leaks) |
||||||
|
|
||||||
#### General |
#### General |
||||||
|
|
||||||
###### +Does the event system run as asynchronous? (usage of go routines and channels) |
###### +Does the event system run as asynchronous? (usage of go routines and channels) |
||||||
|
|
||||||
###### +Is the site hosted or deployed? Can you access the website through a DNS (Domain Name System)? |
###### +Is the site hosted or deployed? Can you access the website through a DNS (Domain Name System)? |
||||||
|
|
||||||
#### Basic |
#### Basic |
||||||
|
|
||||||
###### +Does the project runs quickly and effectively? (Favoring recursive, no unnecessary data requests, etc) |
###### +Does the project runs quickly and effectively? (Favoring recursive, no unnecessary data requests, etc) |
||||||
|
|
||||||
###### +Does the code obey the [good practices](https://public.01-edu.org/subjects/good-practices/)? |
###### +Does the code obey the [good practices](https://public.01-edu.org/subjects/good-practices/)? |
||||||
|
|
||||||
###### +Is there a test file for this code? |
###### +Is there a test file for this code? |
||||||
|
|
||||||
#### Social |
#### Social |
||||||
|
|
||||||
###### +Did you learn anything from this project? |
###### +Did you learn anything from this project? |
||||||
|
|
||||||
###### +Can it be open-sourced / be used for other sources? |
###### +Can it be open-sourced / be used for other sources? |
||||||
|
|
||||||
###### +Would you recommend/nominate this program as an example for the rest of the school? |
###### +Would you recommend/nominate this program as an example for the rest of the school? |
||||||
|
@ -1,55 +1,55 @@ |
|||||||
## MouseVR |
## MouseVR |
||||||
|
|
||||||
On this one you will learn the basics of interaction using objects, learn the use of blueprint interface and learn stereoscopic sphere texturing. How, you ask? By creating a game in which you will be in a city and will be looking for interaction points in order to travel through the map. And do not to look straight at the end of the subject. |
On this one you will learn the basics of interaction using objects, learn the use of blueprint interface and learn stereoscopic sphere texturing. How, you ask? By creating a game in which you will be in a city and will be looking for interaction points in order to travel through the map. And do not to look straight at the end of the subject. |
||||||
|
|
||||||
### Objectives |
### Objectives |
||||||
|
|
||||||
You will have to create a game that uses the mouse as if it were the player head in a VR game. You will navigate through the map using the mouse, focusing in certain points in order to "teleport" to that location. |
You will have to create a game that uses the mouse as if it were the player head in a VR game. You will navigate through the map using the mouse, focusing in certain points in order to "teleport" to that location. |
||||||
|
|
||||||
### Instructions |
### Instructions |
||||||
|
|
||||||
After creating a blank project and importing the content from the provided folder, you should focus on the following points to accomplish the previous explained features: |
After creating a blank project and importing the content from the provided folder, you should focus on the following points to accomplish the previous explained features: |
||||||
|
|
||||||
- Use Scene Capture to take a 360 degrees screenshot, that you will need later on every targeted location on the map. |
- Use Scene Capture to take a 360 degrees screenshot, that you will need later on every targeted location on the map. |
||||||
|
|
||||||
- With this, you can create a new material and apply it to a sphere. |
- With this, you can create a new material and apply it to a sphere. |
||||||
- Find a way to display the material inside and outside the sphere to create a VR world illusion. |
- Find a way to display the material inside and outside the sphere to create a VR world illusion. |
||||||
|
|
||||||
- Create a pawn that can move his head using the mouse inside the spheres. |
- Create a pawn that can move his head using the mouse inside the spheres. |
||||||
|
|
||||||
- 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. |
||||||
|
|
||||||
- Use an Interface Blueprint to handle interactions: a Blur, a Focus and an Active interaction. |
- Use an Interface Blueprint to handle interactions: a Blur, a Focus and an Active interaction. |
||||||
|
|
||||||
- Use a SphereTraceByChannel node to be able to look at objects. |
- Use a SphereTraceByChannel node to be able to look at objects. |
||||||
|
|
||||||
- Use casting with your interaction point to know which object you are looking at. |
- Use casting with your interaction point to know which object you are looking at. |
||||||
|
|
||||||
- Use an interaction timer to set how many times should the player look at an interaction point in order to travel to the next space (like on the video example). In other words, the player should look for a while at the interaction point before getting teleported to the next scene. |
- Use an interaction timer to set how many times should the player look at an interaction point in order to travel to the next space (like on the video example). In other words, the player should look for a while at the interaction point before getting teleported to the next scene. |
||||||
|
|
||||||
- Except for the interaction point and the spheres containing the panoramic images, no 3D objects are allowed on the map. |
- Except for the interaction point and the spheres containing the panoramic images, no 3D objects are allowed on the map. |
||||||
|
|
||||||
After downloading and unzipping this [file](https://assets.01-edu.org/Unreal-Engine-Piscine/MouseVR.zip), you can copy its content to your project Content folder. |
After downloading and unzipping this [file](https://assets.01-edu.org/Unreal-Engine-Piscine/MouseVR.zip), you can copy its content to your project Content folder. |
||||||
|
|
||||||
When finished, your project should look like the [“Expected Result” video](https://youtu.be/Tor1Q10NG_Q). |
When finished, your project should look like the [“Expected Result” video](https://youtu.be/Tor1Q10NG_Q). |
||||||
|
|
||||||
> Do not forget to zip up the project compile and save everything for peer correction. |
> Do not forget to zip up the project compile and save everything for peer correction. |
||||||
|
|
||||||
### Bonus |
### Bonus |
||||||
|
|
||||||
The following are the bonuses for this project: |
The following are the bonuses for this project: |
||||||
|
|
||||||
- Create a circle, around the interaction points, that indicates when the interaction point will be triggered. |
- Create a circle, around the interaction points, that indicates when the interaction point will be triggered. |
||||||
- Animate the interaction points. |
- Animate the interaction points. |
||||||
- Add looping background music during the experience. |
- Add looping background music during the experience. |
||||||
|
|
||||||
[Here](https://www.youtube.com/playlist?list=PLHyAJ_GrRtf9sxZqgfPVM06PrLk8_CWA-) you can find an instructional playlist on Unreal Engine. |
[Here](https://www.youtube.com/playlist?list=PLHyAJ_GrRtf9sxZqgfPVM06PrLk8_CWA-) you can find an instructional playlist on Unreal Engine. |
||||||
|
|
||||||
Ah! I made you look. |
Ah! I made you look. |
||||||
|
@ -1,31 +1,31 @@ |
|||||||
#### Functional |
#### Functional |
||||||
|
|
||||||
###### When you move the mouse does the "head" of the player move accordingly? |
###### When you move the mouse does the "head" of the player move accordingly? |
||||||
|
|
||||||
###### Can we navigate throughout the map using interaction points? |
###### Can we navigate throughout the map using interaction points? |
||||||
|
|
||||||
###### Does every interaction point contain a text underneath it indicating where that interaction point is going to lead you? |
###### Does every interaction point contain a text underneath it indicating where that interaction point is going to lead you? |
||||||
|
|
||||||
###### Do all interaction points led you to the location they tell you? |
###### Do all interaction points led you to the location they tell you? |
||||||
|
|
||||||
###### Can we play the whole game without pressing any key on the keyboard? |
###### Can we play the whole game without pressing any key on the keyboard? |
||||||
|
|
||||||
###### Is a "Quit Game" interaction point always available, so that it is possible to quit the game at any point of the game? |
###### Is a "Quit Game" interaction point always available, so that it is possible to quit the game at any point of the game? |
||||||
|
|
||||||
###### Are all teleportation visible to the player smooth and non brutal? |
###### Are all teleportation visible to the player smooth and non brutal? |
||||||
|
|
||||||
###### Is a sphere being used to cast instead of a single ray, in other words, did the student used a SphereTraceByChannel node? |
###### Is a sphere being used to cast instead of a single ray, in other words, did the student used a SphereTraceByChannel node? |
||||||
|
|
||||||
###### Is an Interface Blueprint being used to handle the different actions on the interaction point (Blur,Focus and Active)? |
###### Is an Interface Blueprint being used to handle the different actions on the interaction point (Blur,Focus and Active)? |
||||||
|
|
||||||
###### Do you need to stare for a little at an interaction point to be able to teleport to a different scene? |
###### Do you need to stare for a little at an interaction point to be able to teleport to a different scene? |
||||||
|
|
||||||
###### Except for the interaction point and the spheres containing the panoramic images, are there any 3D objects on the map? |
###### Except for the interaction point and the spheres containing the panoramic images, are there any 3D objects on the map? |
||||||
|
|
||||||
#### Bonus |
#### Bonus |
||||||
|
|
||||||
###### Is a circle that indicates when the interaction point will be triggered present? |
###### Is a circle that indicates when the interaction point will be triggered present? |
||||||
|
|
||||||
###### Is the interaction point animated? |
###### Is the interaction point animated? |
||||||
|
|
||||||
###### Is there looping background music during the game? |
###### Is there looping background music during the game? |
||||||
|
@ -1,69 +1,69 @@ |
|||||||
## NascarOnlineAlpha |
## NascarOnlineAlpha |
||||||
|
|
||||||
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! |
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 |
||||||
|
|
||||||
You will have to create a car game using an already existing project that you will have to download. |
You will have to create a car game using an already existing project that you will have to download. |
||||||
|
|
||||||
You will learn to analyze the code and understand what the developer did before you, and adapt it to extend the gameplay to continue the development of the game. |
You will learn to analyze the code and understand what the developer did before you, and adapt it to extend the gameplay to continue the development of the game. |
||||||
|
|
||||||
### Instructions |
### Instructions |
||||||
|
|
||||||
In order to start the project, you will have to open the Epic Games Launcher, switch to the Learn tab and search for the Vehicle Game project. Once you find it and download it, you can create a new Vehicle Game project and that will be the base of your project. |
In order to start the project, you will have to open the Epic Games Launcher, switch to the Learn tab and search for the Vehicle Game project. Once you find it and download it, you can create a new Vehicle Game project and that will be the base of your project. |
||||||
|
|
||||||
As the game is done, you only will need to make the multiplayer part of it. Basically, these are the requirements: |
As the game is done, you only will need to make the multiplayer part of it. Basically, these are the requirements: |
||||||
|
|
||||||
- As soon as the game starts it should ask for a name to assign to the player. |
- As soon as the game starts it should ask for a name to assign to the player. |
||||||
|
|
||||||
- Create a main menu map where the player can choose either to Host/Join a session. |
- Create a main menu map where the player can choose either to Host/Join a session. |
||||||
|
|
||||||
- If the player chooses to Host, the game should ask you for a server name, number of players allowed on the server, whether the player wants to host via LAN or ONLINE, and a host button that launches the player into a multiplayer Lobby. |
- If the player chooses to Host, the game should ask you for a server name, number of players allowed on the server, whether the player wants to host via LAN or ONLINE, and a host button that launches the player into a multiplayer Lobby. |
||||||
|
|
||||||
- The maximum number of players should be 4 and the minimum should be 2. |
- The maximum number of players should be 4 and the minimum should be 2. |
||||||
- If the server name is not provided, the player can not yet host the server and a warning message should appear requesting to insert a name for the server. |
- If the server name is not provided, the player can not yet host the server and a warning message should appear requesting to insert a name for the server. |
||||||
|
|
||||||
- If you press the Join button, the game should display, a list of available sessions which the player can join. Also a refresh button should be available to search for sessions again. |
- If you press the Join button, the game should display, a list of available sessions which the player can join. Also a refresh button should be available to search for sessions again. |
||||||
|
|
||||||
- A button with the server name in it should appear for each session found. By clicking on it, the player is directly transferred to the host lobby. |
- A button with the server name in it should appear for each session found. By clicking on it, the player is directly transferred to the host lobby. |
||||||
- The option to do the search for LAN sessions or ONLINE sessions must be presented to the player. |
- The option to do the search for LAN sessions or ONLINE sessions must be presented to the player. |
||||||
|
|
||||||
- In the start menu, there should also be a button that enables the player to quit the game. |
- In the start menu, there should also be a button that enables the player to quit the game. |
||||||
|
|
||||||
- In every other menu, there should be a button that allows the player to go back. |
- In every other menu, there should be a button that allows the player to go back. |
||||||
|
|
||||||
- On the host lobby, before the creator of the session starts the game, the player should be able to drive around the map. |
- On the host lobby, before the creator of the session starts the game, the player should be able to drive around the map. |
||||||
|
|
||||||
- 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 gets a message on the screen displaying “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). |
||||||
|
|
||||||
- Use the provided loading screen to hide all screen/player switching between maps and screens. |
- Use the provided loading screen to hide all screen/player switching between maps and screens. |
||||||
|
|
||||||
As for the multiplayer aspect, here are some hints that you will have to follow: |
As for the multiplayer aspect, here are some hints that you will have to follow: |
||||||
|
|
||||||
- Use the Advanced Session plugin to have more host options when creating and searching for a session. |
- Use the Advanced Session plugin to have more host options when creating and searching for a session. |
||||||
|
|
||||||
- Use replicated Custom Events to share information. |
- Use replicated Custom Events to share information. |
||||||
|
|
||||||
- Use Game Instance to handle all widgets navigation. |
- Use Game Instance to handle all widgets navigation. |
||||||
|
|
||||||
- Use Game State and replicated variables to know who is the winner of the game. If you have more info to share for all players on the game, do it through Game State using server replication. |
- Use Game State and replicated variables to know who is the winner of the game. If you have more info to share for all players on the game, do it through Game State using server replication. |
||||||
|
|
||||||
- Use "Has Authority" checks to know if it is the server or the client that is trying to execute an action. |
- Use "Has Authority" checks to know if it is the server or the client that is trying to execute an action. |
||||||
|
|
||||||
When finished, your project should look like the [“Expected Result” video](https://youtu.be/s56rio0bw0U). |
When finished, your project should look like the [“Expected Result” video](https://youtu.be/s56rio0bw0U). |
||||||
|
|
||||||
> Do not forget to zip up the project compile and save everything for peer correction. |
> Do not forget to zip up the project compile and save everything for peer correction. |
||||||
|
|
||||||
### Bonus |
### Bonus |
||||||
|
|
||||||
As bonus for this exercise you can: |
As bonus for this exercise you can: |
||||||
|
|
||||||
- create a restart race button when all players crossed the finish line. |
- create a restart race button when all players crossed the finish line. |
||||||
- display the winner on every player screen when crossing the finish line. |
- display the winner on every player screen when crossing the finish line. |
||||||
- make players join a server by IP address, from another LAN network (two players connected to different networks for example). |
- make players join a server by IP address, from another LAN network (two players connected to different networks for example). |
||||||
|
Some files were not shown because too many files changed in this diff diff.show_more
Loading…
Reference in new issue