UNC COMP590.162 S20: Assignments
- I decided to go in reverse chronological order for convenience and so your device doesn't need to load everything to get to the most recent assignment!
Assignment 11: Work on Your 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
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
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
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
Rough summary: propose final project
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
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)
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.
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
Assignment 2: Understanding GameObject/Component Interaction
Predicted difficulty: easy for people who already know some game dev, medium/hard to others
Assignment 1: VR Dev Environment Setup
Predicted difficulty: easy but tedious