David Nichol
Home
Blog
Résumé
C++ & C# Projects
Paper Flight
See on GithubGithub Logo
Tags:
VR
C#
Unity
Team
May 2022
Paper Flight
is a VR experience that was released onto the Meta store for Australian game studio LiminalVR. The user is set atop a paper airplane and watches a beautiful tundra environment unfold around them as they witness the power of perspective, scale and tranquility in virtual reality.

Steam Link
Oculus Store Link
Duties:
  • Tech Lead
  • Integration of a custom spline editor for simulated flight pathSee Code Example
  • Smoothed movement along a spline to reduce sim sicknessSee Code Example
  • General optimization for VR
Project Nova
See on GithubGithub Logo
Tags:
C++
Unreal Engine
FPS
Team
May 2022
Project Nova
is a space horror FPS game made with a group of 5 students in Unreal Engine. Project Nova has a focus on narrative experience and exploration as you unravel the mysteries of a parasite infested space station.

Itch.io Link
Duties:
ECS Fractals
See on GithubGithub Logo
Tags:
Unity
ECS
Multithreading
C#
3D
Solo
December 2020
ECS Fractals
is a 3D Fractal generation tech demo in Unity's early access D.O.T.S. framework. utilizing the lightweight GameObjects of the ECS system and the multithreading of the Jobs systems, I was able to render 390,625 rotating GameObjects in one scene at a steady 30 FPS. (2396% more efficient on frames compared to regular GameObjects)
Ultra Fall
See on GithubGithub Logo
Tags:
Unity
Platformer
C#
2D
Solo
December 2020
Ultrafall
Is a 2D Unity clone of the game 'Downwell' by Devolver Digital made in a 3 week solo jam. It's a vertical platformer but the aim is to fall rather than climb. Art assets created by Jay Draper.
See on GithubGithub Logo
Tags:
C#
Unity
Navmesh
A* Pathfinding
Solo
February 2020
3D C# agent AI stealth demo using Unity's Navmesh system. Based on a decision tree that encompasses interactions triggered by proximity and sound.
Agent behaviors include seeing, smelling and hearing. Hearing is done with a large box collision radius, but has a lower chance of detection than hearing. Detection is based on a random chance of alerting the agent every second the player is colliding with that box.
Smelling detection has a shorter radius but larger chance of detection. Sight is a raycast from the eyes of the agent and has a 100% chance of alerting the agent. Once the agents have been in chasing mode for too long, they go into a resting mode, where they run to a particular area to replenish their energy.
Breakout
See on GithubGithub Logo
Tags:
Unity
C#
Monogame
2D
Solo
November 2020
Tasked with the challenge of recreating the Atari game 'Breakout' with two new mechanics, I went for a slingshot and time slow to spice things up. Created first in Monogame's C# engine, then in Unity. The playable version is the Unity one.
Fun fact: each ball reflection has a random amount of entropy between 0 and .1 positive or negative Unity units added to its direction when colliding with an object to keep each bounce slightly unpredictable.
College Student Simulator
See on GithubGithub Logo
Tags:
Unity
Serious Games
Simulation Games
3D
C#
Team
December 2019
Made with three other peers for a class project. The game needed to be a simulator and convey some real purpose to talk about important issues. We chose student mental health. We polled students across campus to understand what makes life difficult for students, and used that data to create a "choose your own adventure" to get you through the semester.
Each choice affects your grades, enjoyment and stress, and if you aren't able to keep those scores in check by the end of 15 weeks you lose. All programming done by me.
CSV Parser
See on GithubGithub Logo
Tags:
C++
CSV
File IO
Linux
May 2021
A CSV Parser created to parse and find unique string instances in a CSV with 3.7M entries, the City of Chicago Food Inspections Dataset. Made with CMake in Linux.
Euchre
See on GithubGithub Logo
Tags:
C++
Shuffle Algorithms
Card Game AI
Linux
April 2021
Card game 'Euchre' made in C++ using CMake in Linux. Each round is a shuffle, then cards are dealt either two per player then three, or three per player then two. Each computer uses a hand ranking algorithm to determine which card is the most valuable for that turn, then plays it. The computer who wins the most turns wins the game.
Blackjack
See on GithubGithub Logo
Tags:
Shuffle Algorithms
May 2020
Card game Blackjack made in C++. Cards are shuffled and dealt between a computer dealer and the player. The player then may hit or stand, and once the player decides to stand the dealer's face down card is revealed and the winner is determined.
WPF Sports App
See on GithubGithub Logo
Tags:
WPF
C#
Data Binding
MVVM
File Serialization
May 2021
A WPF app that works as a sports match scheduler. Create players, add them to a created team, set up match details, and display randomized results of that match and team stats. Entirely savable and loadable.