UNC COMP590.162 S20: Assignments


Assignment 11: Work on Your Final Project!

comp590s20 Final Project

Assignment 10 [EC]: Basics of Artificial Intelligence (AI) & Navigation in Games

Predicted difficulty: medium

Rough summary: Add AI characters that look at the player if they get too close and avoid the player with RVO avoidance

comp590s20 assignment 10: Basic AI & Navigation

Assignment 9 [EC]: Simple Inverse Kinematics (IK) and Animation

Predicted difficulty: medium

Rough summary: give your treasure hunter a simple body and make it so that their elbows move in response to controller or hand transform

comp590s20 assignment 9: Basic Inverse Kinematics with Biomechanical Constraints

Assignment 8: 3D Spatialized & Propagated Audio

Predicted difficulty: medium setup, easy code

Rough summary: Hide your objects behind things like walls such that the player can use propagated audio to figure out where they are

comp590s20 assignment 8: 3D Spatialized & Propagated Audio

***Midterm Assignment***

Predicted difficulty: it would vary a lot based on how much you understand the methodology and high-level concepts

Rough summary: answer a few questions similar to the non-technical parts of the normal assignments

Assignment 7: Natural Virtual Locomotion

Predicted difficulty: medium/hard for people who understand vector math, hard for others (but arguably most useful skills)

Rough summary: implement the basic redirected walking equation and do a mini-study comparing RDW to joystick input

comp590s20 assignment 7: Virtual Locomotion with Redirected Walking

***Midterm Proposal***

Rough summary: propose final project

comp590s20 Midterm Proposal

Assignment 6: Physiological Responses and Immersion

Predicted difficulty: medium code, easy setup (now that you know how to use VR devices)

Rough summary: Create traps and obstacles like ledges that evoke physiological responses

comp590s20 assignment 6: Evoking Physiological Responses

Assignment 5: Basic VR Development

Predicted difficulty: easy code, tedious setup

Rough summary: Allow your character to grab collectibles and place it in their inventory by putting it near their belt area (like some fanny pack)

comp590s20 assignment 5: VR-ifying TreasureHunter

Assignment 4: Modularizing A2 & Using FSMs

Predicted difficulty: easy code, medium setup

Rough summary: Modularize the A2 code and draw simple FSMs for a few mechanics of a game you like

Even though I mentioned that the Unity version of A5 would be much harder (I didn't intentionally make assignments harder in Unity, they just are as part of the nature of the engine), the point of this class is NOT to discourage people from using Unity or try to punish those people who are using it (believe it or not). So I wrote a Unity version of the class example that does the same thing as the UE4 examples, navmesh, all grab methods, and everything. By my estimate in my experience porting this code, it would have taken the Unity people at least 4x longer to do the assignment than the UE4, which is definitely not fair to them. To help the Unity people follow the lecture code, I have also created utility attachment functions like UE4's inside NickVRPawn so that you can easily look at the lectures and see what's happening (e.g. attach, detach, Snap, Keep World, etc.). This also means that you no longer need to write the Unity parenting code I mentioned!

I made sure to use prefabs and prefab variants to essentially try to make the project object-oriented like UE4's version (as close as Unity can get), so this might help to some extent with the Unity version of A4 (e.g. PickupCubes are "subclasses" aka prefab variants of a Collectible). Because of Unity's janky physics engine, some more work needs to be done to preserve momentum, however.

I'm also posting the entire projects on Github for people to borrow code from. If you borrow code from my project, as usual, make sure to write a comment in your code saying where you got it from.

Unity version: https://github.com/nrewkowski/COMP590ClassExampleUnity

UE4 version: https://github.com/nrewkowski/COMP590ClassExampleUE4

For both engine users, I strongly recommend looking at my comments in the Unity version of the code explaining some differences in implementation so you can better understand how the engines differ. If you continue in this field, it would benefit you to understand both (UE4 users, the C++ version would look kind of similar to the C# except I wouldn't need to write Attachment functions myself, so it's still worth understanding it). Hope it helps a bit for those of you struggling with the noodle code.

comp590s20 assignment 4: Modularizing A2 & Using FSMs

Assignment 3: Basic 3D Modelling with Blender

(doing this first to take a break from the game engine for a bit)

Predicted difficulty: easy..... I simplified it a bit from my original plan due to time constraints (& python in Blender isn't particularly useful for game dev)

Rough summary: Make/sculpt a 3D model of your face and apply a function that I give you to all of the vertices that transforms them

comp590s20 assignment 3: Basic 3D Modelling & Details

Assignment 2: Understanding GameObject/Component Interaction

Predicted difficulty: easy for people who already know some game dev, medium/hard to others

comp590s20 assignment 2: Understanding GameObject/Component Interaction

Assignment 1: VR Dev Environment Setup

Predicted difficulty: easy but tedious

comp590s20 assignment 1