Project1W21
Contents |
Homework Assignment 1: Social Distancing
Prerequisites:
- Windows or Mac PC
- Unity
- GitHub Repo (accepted from GitHub Classroom link)
- No VR equipment is required
Learning objectives:
- Setting up Unity projects for 3D applications
- Using the Unity editor
- Building a 3D scene
- Creating a real-time interactive application
- C# scripts
- Publish an application: create a Windows executable
Overview:
In this project you are going to need to implement a simple game on social distancing. A deadly disease (much deadlier than COVID-19) has spread throughout the world and kills anyone who is within less than 6 feet from an infected person that is not wearing a mask. The game is played in first person view in a 3D environment. People randomly spawn in front of the player, walking slowly towards them. The player's goal is to stare at them long enough for them to get reminded to put their mask on. If the person does not put their mask on before they get within 6 feet from the player, the player gets infected and loses the game.
We are going to give an introduction to this project in discussion on January 11th at 4pm. The due date for the project is Sunday, January 24th at 11:59pm.
1. Building the 3D Scene (30 Points)
The only visible elements of your scene are going to be the infected people that are approaching the player, and the masks they put on when the player is successful at staring at them.
Choose a 3D model from the Unity asset store that represents an infected person. Also choose a 3D model for a face mask that you can put on the infected person. You may have to resize both to match your application's scale.
Create a collision box where the infected person's head is.
Position the player in the scene so that the player is facing the spawn points in first person view. The figure below shows a top-down view of the 3D environment you are creating.
2. Gameplay (70 Points)
- Start a timer to keep track of how long the player survives.
- Every few seconds, spawn a new infected person in one of the two spawn points (randomly selected).
- Have the infected person walk slowly along their walking trajectory.
- Draw crosshairs in the center of the screen, indicating the player's viewing direction.
- Allow the player to turn their head (i.e., the camera) with the mouse: support both left/right rotation and up/down tilt of the camera.
- Change the color or shape of the cursor when it intersects an infected person's head. At this point also start a 2 second timer. You don't need to display the timer.
- Once the 2 second timer is up, render a mask on top of the person's face.
- Detect when each infected person gets within 6 feet from the player. If the person is not wearing a mask at this point, stop the game and display text such as: "You Survived <n> seconds." Show this message for a few seconds, then restart the game.
- Let the person keep walking until the de-spawn point.
- Tweak the game parameters to make the game hard enough to be a challenge, but not too hard to be frustrating.
3. Extra Credit (Up to 10 points)
- Add a Skybox to your scene. You are free to use textures of your own choice. (5 points)
- Trigger indicator: add a visual indicator (no text) showing how long the user has stared at a person and how much longer they need to do it (5 points). Examples:
- Radial widget:
- Slider widget:
- Hexagons: Hexagons
- Radial widget:
If you have your own ideas for extra credit, email us (TAs and/or instructor). If we approve additional extra credit options, we'll add them here.
Submission Instructions
Once you are done implementing the project, record a video demonstrating all the functionality you have implemented.
The video should be no longer than 5 minutes, and can be substantially shorter. The video format should ideally be MP4, but any other format the graders can view will also work.
While recording the video, record your voice explaining what aspects of the project requirements are covered.
To create the video you don't need to use video editing software.
- On any platform, you should be able to use Zoom to record a video.
- For Windows:
- Windows 10 has a built-in screen recorder
- If that doesn't work, the free OBS Studio is very good.
- On Macs you can use Quicktime.
If you can't make any screen recorder work, just hold your phone in front of the screen and record with a steady hand.
Components of your submission:
- Video: Upload the video at the Assignment link on Canvas. Also add a text comment stating which functionality you have or have not implemented and what extra credit you have implemented. If you couldn't implement something in its entirety, please state which parts you did implement and expect to get points for.
- Example 1: I've done the base project with no issues. No extra credit.
- Example 2: Everything works except an issue with x: I couldn't get y to work properly.
- Example 3: Sections 1, 2 and 4 are fully implemented.
- Example 4: The base project is complete and I did z for extra credit.
- Executable: Build your Unity project into a Windows .EXE file or the Mac equivalent and upload it to Canvas as well.
- Source code: Used the startup Unity repo initialized from GitHub Classroom) or any GitHub repo that you have already set up, and upload it to Gradescope with repo for grading. Make sure you use the .gitignore file for Unity that has included in the repo so that only project sources are uploaded.