Projects

Atypical: A Type System for Live Performances

– Featured

Chalktalk is a software system developed by Professor Ken Perlin at NYU’s Future Reality Lab. Best described as a magic chalkboard, it allows you to draw and interact with live virtual objects that can be linked together to demonstrate complex concepts. Chalktalk is meant for use in live performances and demos, and is actively used to teach professor Perlin’s computer graphics class.

For my Master’s thesis, I built Atypical, a type system for the connections between these objects. Due to being optimized for a presentation-oriented visual language, it involved some unique design decisions when compared to type systems for typical programming languages.

You can watch a short video summarizing the work, read more about it in a high-level blog post, read more in-depth in the full academic writeup, or check out Chalktalk’s source code on GitHub.

3D Terrain Detailing by Combining Machine Learning and Signal Processing

Created for my undergraduate thesis project, this system uses real-life terrain elevation data in order to procedurally generate virtual 3D terrain with similar characteristics. It allows an artist to specify a general shape for the terrain, and adds detail to it based on the training data. In this online demo, you’ll be able to cycle between several different base terrain shapes and several different training sets, and view the results in full 3D. A modern desktop browser is required, such as the latest version of Chrome.

Behind Lucky Shot

What makes a good, simple control scheme for a top-down, 2D game? Once you have that, how can you use it to make AI opponents that appear to move naturally and intelligently? In this pair of interactive articles (Part 1, Part 2), I explore the design decisions made in my award-winning 2011 game, Lucky Shot, and explore how less is often more.

Games

Clash of the Talons

– Featured

An action-packed competitive multiplayer game where two birds of prey compete to see who can bring the most food to their nests! Originally prototyped at the Royal Ontario Museum Game Jam, where our task was to bring the museum’s biodiversity exhibits to life. Available now!

Hellbound

– Featured

This is one race you don’t want to win.

A totally metal racing game where you have to finish last, created for Party Like it’s 19TOJam9, the best game jam this side of the Atlantic.

You can play online if you have the Unity Player plugin, or download the game for Mac, Windows, or Linux.

This Side Up

Developed for TOJam Hindsight is 2020, the first fully remote TOJam, during the middle of the 2020 quarantines. This game seeks to bring you and your friends closer together by letting you build1 furniture2 online3 with your loved ones4.

  1. Success in building furniture is not guaranteed. Kronopath and the This Side Up dev team are not responsible for any breakages in the laws of physics. ↩︎

  2. Birdhouses count as furniture, right? ↩︎

  3. Yes, you can actually play online with multiple people. Just share the room code! ↩︎

  4. Kronopath and the This Side Up dev team are not responsible for any frustration, disagreement, or other relationship problems This Side Up may cause between you and your loved ones. ↩︎

Fishcious

Jimmy accidentally dropped his protein mix in the fish tank. Momma thought the fish were dead, so she flushed them down the toilet.

But these fish weren’t dead. Oh no. They were mad, buff, and determined not to get sucked into the vortex.

Brutal fish toilet combat! Created in one weekend for TOJam Tentacular, still the best game jam this side of the Atlantic. Click here for the download page.

Systone

Created as a solo project for Molyjam 2013, over the span of one weekend! An experimental rhythm-infused real-time tower defence game.

Click the towers at the bottom, place them at the top, and listen to the music build. The left tower shoots things, the right tower shoots things faster, and the middle tower makes nearby enemies take double damage.

Being a game made over a weekend, what it lacks in balance and polish, it makes up for in groove.

Check out its page at the Molyjam website for more info. You can play it online with the Unity Player plugin, or download it for Mac, Windows, or Linux.

Don’t stop the beat. Don’t stop the beat. Don’t stop the beat. 

Draezard

Created in 2013 with a stellar team of UTGDDC members for TOJam: Haters Gonna Eight over the span of one weekend! Following the theme of the jam, which was “Uncooperative”, we chose to make a two-player top-down scrolling shooter where one player controls the movement and another controls the guns.

It also involves a time-travelling dragon.

Though it was developed for two players, it’s still playable with a single player. But a gamepad is recommended! Playing with two gamepads is even better!

You can play the game online if you have the Unity Player plugin, or download it for Windows 32 bitWindows 64 bit, or Mac OS X.

Cartalotta

Some people make history. Others just reenact it with puppet shows.

A competitive, one-on-one marionette fighting game, or alternately, a ridiculous physics-based flail-a-thon, made in 2012 for TOJam: The Sevening, alongside a big team of fellow UTGDDC members. This was the first game jam I participated in as a programmer, and the first one I attended in its entirety.

You can play it online if you have the Unity Player plugin, or download it for Windows, Mac, or Linux.

Lucky Shot

Winner of the Grand Prize in the University of Toronto Game Design and Development Club’s 2011 Game Making Deathmatch, the game is best described in seven words:

Red is bad.

Shoot red.

Be lucky.

Friday Fatale

The only game on this page not developed, programmed, or designed by me, it was created in 2011 for TOJam Sixy Times over the span of one weekend. This game is a story-driven platformer set in a film-noir style world where nothing is quite as it seems.

Though I wasn’t involved with this game’s programming or design, I provided its jazzy noir soundtrack. Stay a while and listen, won’t you?

(Note: if the music isn’t playing after clicking “Play”, give the game some time to load and then refresh the page.)