Due: Apr. 15, 2020 @ 11:59 PM
- Read the submission instructions carefully! If you are missing some files, but we can still grade, you will lose 20% of the total points. If we cannot grade your work due to missing files, you will receive no credit.
- Save your project onto the
U:drive, which is your EWS storage, and available across all of the computers in the lab. If you save to the
C:drive, your project will only exist on that single computer.
- If you use your own machine, make sure you use the version of Unity installed on all of the lab machines to avoid compatibility issues.
- To enable autofill in Visual Studio 2019, go to
External Toolsand change the
External Tools Script Editorfrom
Open File Extensionto
Visual Studio 2019.
Table of Contents
The VR lab is closed, so this will be a regular Unity project with no VR additions.
In this MP, you will build a flight simulator in Unity. You must make a start menu, tutorial, script to support your plane, and a user interface. Much of the spec for this MP is vague. This is intentional, as we want you to be in the practice of finding creative solutions to problems. Note: This is an assignment with a lot of details, so please start early.
Flying allows many possible motions. You must tell us what your control scheme is in your README.
PLEASE REGULARLY SAVE YOUR WORK IN THIS MP, AS UNITY MIGHT CRASH AT ANY TIME!
Create a new scene, and load the provided Unity package, which contains a large terrain for you to use. Read up on Terrains in Unity so you can make changes at your discretion. This will be pertinent when you optimize your scene, as excessive amounts of trees and vegetation on the terrain can cause performance issues.
You must create or import a model for your plane. Your model can be simple, provided it isn’t simply a Unity cube or other 3D primitive.
The player should start out in a separate scene, which must contain a room with a start menu. The room can be as simple or complex as you like, but it should be well-lit, and the walls should be a solid color.
The room must contain a start menu with (at least) the option to quit and to start the game. Upon selecting quit, the game should exit. Upon selecting start, the player should be transported to your flight simulator scene.
Your plane must be comfortable, easy to control, and should feel like a real plane. For instance, real planes cannot turn in place, and cannot stay in the air while standing still.
You must add controls for acceleration and deceleration, as well as yaw, pitch, and roll.
You are now going to take your flight simulator, and turn it into a shooting game.
Add a weapon, either a laser or physical bullets/rockets, to your plane.
You must decide from where on the plane the weapon will project or emanate.
Do not use Unity’s
Debug.DrawLine to show a laser, as it will not appear in a built executable.
Now, scatter some spheres in the sky. When your plane successfully shoots a sphere, the sphere should disappear for 5 seconds, and then reappear. Make sure the spheres are easily visible. Successfully shooting the spheres should increment the game score, which we will talk about in the next section.
You must implement some controls that will form the user interface for your game.
You must implement a pause button that pauses the game and provides the option to go back to the main menu.
Additionally, you must display a score value clearly somewhere. After hitting a sphere in your scene, your score should increase.
Add all necessary sounds to your simulator. Some examples include engine noise, crash sounds, firing sounds, ambient music, etc. Make sure that your sounds are neither too loud, nor too quiet to hear, and make for a comfortable experience.
“Game Over” Condition
When the player crashes the plane, they should see a game over screen, which should give the option to go back to the main menu, restart the game, or quit. If your game over screen has a menu, you can choose how it will be controlled, but make sure this is communicated to the player via the tutorial, or messages included in the “game over” menu screen (such as “juggle the touch controllers to return to the main menu”). **
Tutorial (Extra Credit)
Make an in-world, interactive tutorial that explains how to control the plane. This needs to be more than just a copy of your README on the wall as a text canvas.
We will evaluate this using the following criteria (not necessarily an exhaustive list):
Your interface/instruction system allows a first time player, without any prior knowledge of your simulator, should be able to pick up the controls quickly and easily
The overall experience of flying your plane is smooth and comfortable, for example: Are rotations comfortable? Does your plane behave as expected? Does the weapon work as expected?
Your flight simulator keeps the frame rate consistently at 60fps and doesn’t lag
* Don’t do this ** DEFINITELY DO NOT DO THIS
Step 1: Create a Unity package file
- Save your Unity scene in the Assets folder with a descriptive title.
- Using the editor, find the created scene in the Project menu
- Right click on the scene and select “Export Package…”
- Export the file using default settings. Make sure that “Include dependencies” is enabled.
- This will create a
.unitypackagefile. We may use this during grading if your executable does not work, so make sure you also submit the data folder.
Step 2: Create a standalone build
- Save the project to
C:\Users\<your netid>\<project name>temporarily, rather than the EWS
U:drive. Local storage is faster when building.
- Go to Edit → Project Settings → Player. Make sure the “Virtual Reality Supported” box under XR Settings is checked.
- Go to File → Build Settings.
- Open the scene with your work for the MP.
- Click “Add Open Scenes”. You must have saved the scene to the assets folder for this to work.
- Click “Build”.
- This will create an executable (
.exe) for running the build, a folder containing your scene data, a “Mono” folder, and
Step 3: Copy the Input Manager file
- Shut down your project.
- In your project folder, navigate to the
- Find the
InputManager.assetfile, and copy it to your submission folder. This will allow us to replicate any new gamepad buttons or joysticks you mapped.
Step 4: Zip the files and submit through Compass
- Create a zip file containing the following items:
.unitypackagecreated in Step 1
Mono, AND DATA FOLDER created in Step 2
InputManager.assetfile found in Step 3
README.txtfile containing any instructions or notes relevant for evaluating your assignment.
- Ensure that the executable in your submission folder runs correctly on the Rift before submitting. The easiest way to do this is to unpack the zip file into a new folder, and then run the executable.
- Name the file by separating NetIDs with underscores-
_cs498vr_MP#_part#.zip. EXAMPLE: If
anna2worked together, the file for MP 1.1 should be called
- Only one partner should submit the resulting file.
|Plane||5||Game has a controllable plane|
|Acceleration/Deceleration||10||Plane can accelerate and decelerate comfortably|
|Rotation||10||Plane can yaw, pitch, and roll|
|Weapon||10||Pressing a button shoots out a raycast or bullet from the plane|
|Spheres||5||There are spheres around the terrain|
|Shooting Game||25||Player can shoot spheres, which disappear, then reappear|
|Start Menu||10||Game has a legible and understandable in-world start menu|
|Score Display||5||Score is displayed in-world|
|Sound||15||Sounds in game world complement the environment|
|Game Over||15||Game handles plane crashes and shows game over in some manner|
|Framerate/Comfort||40||Framerate rarely drops below 60 fps, game sound is not obnoxious, and plane acceleration, deceleration, and rotations are comfortable.|
|In-world tutorial||20||The tutorial and explanation to the player is in game (extra credit)|