Hey, I'm Tom
I'm just a man who wants to build interactive experiences for a living, be they physical or digital.
So, in 2013 I enrolled at Worcester Polytechnic Institute, and in 2017 I graduated with a BS in Robotics Engineering and a minor in Interactive Media & Game Design!
Presently, I work as a Software Developer for Liberty Mutual Insurance.
This portfolio contains some of my highlights in both hardware and software engineering, in what is generally a reverse chronological order.
If you'd like to contact me, head to the section below!
Games! and other Software!
g[AR]den
SUMMARY:
- Augmented Reality gardening and domestic plantcare app.
- Uses Computer VIsion to render plants that grow in real-time from physical marker cards.
- Winner of "Best Indie" from MassDiGI in 2018
DESCRIPTION:
gARden is an Augmented Reality app that brings the joys of domestic plantcare to your mobile device.Using printable real-world markers, you can decorate your desk, office or home with digital plants, which require even less maintenance than real ones! The plants are persistently stored, and grow in real time, so you can watch them blossom as the days go by.
Featuring art assets and additional code from Kelly Zhang.
You can read up more about gARden and its team on its dedicated website, http://sunshinecommittee.io!
(pitch video)
SUMMARY:
- Turn-based, local multiplayer stealth tactics game.
- Players scan on-screen QR code to use mobile devices as private game screens, without needing a companion app.
- Hosts local web content server at runtime to serve controllers.
- Features custom C#-to-JavaScript WebSocket networking using JSON API.
- Winner of "Best College Alpha" from MassDiGI in 2016
- Chosen to Showcase at Boston Festival of Indie Games in 2016
DESCRIPTION:
Heist Night is a local multiplayer game of cops-and-robbers, with a turnbased stealth twist. Four players play as the team of thieves, while the fifth plays as the entire police force.Players gather around the television and connect in using their mobile device as a controller, providing them each with a private screen, and allowing each player to sneak around without fear of screen-cheating!
No external app is necessary to play, so anyone on any device can join the fun!
Winner of the MassDiGI Game Challenge "Best College Alpha" Award in 2016, Heist Night was also chosen to be showcased at the 2016 Boston Festival of Indie Games.
Much of the hard work I've put in to Heist Night are in its backend systems. Namely, the game pushes Unity to the limit of what it was meant to do by generating a local content server in-app at runtime, without the need for external software. It also features two-way netcode communications with our non-Unity, custom-designed HTML mobile controllers, which are served to players via the aforementioned server. Heist Night is an ongoing labor of love that gets better by the day.
You can read up more about Heist Night and its team on its dedicated website, http://sunshinecommittee.io!
SUMMARY:
- Eight player party game.
- Designed and built in (under) 48 hours for Global Game Jam 2017 following the theme: 'Waves'.
DESCRIPTION:
Physics based splash-em-up. Up to eight players can set sail by using half of a controller each.Use the stick to steer, and hold the bumper to aim your shots! Hit players in to naval mines or strike them with cannonballs to put them at the bottom of the ocean.
Featuring 3D art assets from Dillon DeSimone, a Water Shader from John Guerra, and additional code from Kelly Zhang.
(download)
SUMMARY:
- Seated Virtual Reality experience built for the GearVR.
- Features custom-built input system that parses head nods or head shakes as input, instead of requiring the user to press any buttons.
DESCRIPTION:
GALDOR is a virtual reality fortune teller made for the GearVR, focused on being a non-disorienting, seated VR experience.My primary contribution to the project involved creating the Head Gesture recognition system that the app uses as its form of input. Instead of requiring the user to touch buttons on the side of the headset, or hold a controller that they can't actually see while in VR, GALDOR derives its input based on common head gestures: a head nod for 'Yes' and a head shake for 'No'.
I've since released that system as Unity Plugin through the asset store here.
Additionally, I was responsible for assembling the gameplay scene in such a way so as to be visually interesting, without also disorienting users who were not previously acclimated to VR.
Designed and built as my first stab at VR, in (under) 24 hours during the Becker 2016 Game Jam.
The download link below also features a non-VR PC build if you want to check it out, but don't have a headset.
Featuring 3D art assets from Dillon DeSimone and additional code from Kelly Zhang.
(download)
(360-degree video)
SUMMARY:
- Randomly-generated object to adjective association puzzles for two players.
- Showcased at WPI's 'Touch Tomorrow' program for children to play.
- Designed and built in (under) 48 hours for Global Game Jam 2016 following the theme: 'Ritual!'
- Showcased at WPI's booth at PAX East 2017 for everyone to play!
DESCRIPTION:
Summon Me Something is a two-player competitive game wherein players must conjure up potions using three ingredients from a set of many to create something that meets the description set forth by the teacher.There's just one catch: you don't know what any of the ingredients correspond to, and you might never! The ingredients change purpose every match, meaning that each game is a new association puzzle to figure out faster than your opponent. The first player to seven correct solutions wins the match.
Can be played with two controllers, or with two players at a single keyboard!
P1 Movement: WASD (Analog Stick) / P1 Interact: Left Ctrl (A Button)
P2 Movement: Arrow Keys (Analog Stick) / P2 Interact: Right Ctrl (A Button)
Featuring art assets from John Guerra and Dillon DeSimone!
(download)
SUMMARY:
- Calculated A* routes around campus based on map networks stored remotely.
- Featured developer tools that allowed multiple people to edit map server data without conflicts.
- Built with a randomly assigned team of 8 other students, using Java and Agile development techniques in 7 weeks.
DESCRIPTION:
WPI Mapper is an open-ended application capable of plotting efficient and accessible routes around campus. By storing and reading map data to and from a remote database, the application was capable of being used from any terminal with minimal overhead.In addition to providing a detailed map of the WPI campus, the Mapper also allowed for any calculated route plans to be sent to email with accompanying step-by-step images. Furthermore, the route calculation can be tweaked by the user by altering Route Settings, where the user can inform the program if they require special accommodations, such as wheelchair accessibility.
I served as overall project manager and also focused on engineering effective developer-end tools. These developer tools to allow any location to be imported and edited, such that the application could be used for more locations than just the campus map. These tools also utilized our server storage for multi-touch editing capabilities, allowing multiple team members to work on filling out the map simultaneously.
Developed over 7 weeks with a nine-person, randomly-assigned team for CS3733: Software Engineering.
Sadly, with the term being long over, the server hosting the map data has since been taken offline.
SUMMARY:
- "Walking Simulator"-style game set after the final quest of a typical RPG.
- Features custom dialogue system that reads in text from a text file.
- Designed and built in (under) 48 hours for Global Game Jam 2015 following the theme: 'What do we do now?'
DESCRIPTION:
Fantastic Finale starts you off at the very end of your quest against the Dark Lord Dramatos. With the world again at peace, what else is there left for an overleveled warrior to do?Somewhat overscoped, we wanted to try something new to us for this Game Jam. With a visual style inspired by Paper Mario, we wanted to create a small narrative experience. For me, this meant designing a dialog and cutscene system from scratch over the weekend. These systems would later get recycled and improved for 'Summon Me Something'.
To be played with a keyboard.
Movement: WASD / Talk: T / Attack: Y
Featuring art assets from John Guerra and Dillon DeSimone!
(download)
SUMMARY:
- Gamified version of WPI campus map for new students or visitors
- Featured trivia about historic areas of campus, as well as hotlines to nearby utilities.
DESCRIPTION:
Project Overworld was a GPS-enabled mobile app that aimed to make the navigation of campus more accessible to new freshmen by featuring a host of information about each unique location as they are visited, by providing directions to and from any two locations on campus, and by providing hotlines to campus utilities and local restaurants.Project Overworld was also planned to feature avatar customization and a trivia system which would ask questions about campus facilities and historical lore.
Unfortunately, as my second real game project, Overworld suffered from being overscoped, and as such, these trivia features never came in to fruition. Other scrapped ideas included an asynchronous multiplayer system, akin to the StreetPass functionality present in the Nintendo 3DS.
Created as part of my Interactive Qualifying Project, which I enrolled in a year early as a sophomore at the behest of my partners Dillon DeSimone and Francesca Carletto-Leon.
You can read the accompanying paper and postmortem, courtesy of the Gordon Library, if you're interested in hearing about that.
SUMMARY:
- Baby's first 2D Plaformer and Unity Project
- The mouse controls the Magnifying Glass, while the keyboard controls the Sea Monkey.
- Enlarging the Sea Monkey with the Magnifying Glass causes them to weigh more and handle differently.
- Designed and built in (under) 48 hours for Global Game Jam 2014 following the theme: 'We see things not as they are, but as we are.'
DESCRIPTION:
In Wee Sea Things, the player controls a tiny Sea Monkey in an aquarium as well as a child holding a magnifying glass to look in to the tank. By magnifying the Sea Monkey, they take on properties as though they were actually physically larger; they can jump higher and fall faster through the water.Wee Sea Things was my first Unity Project, and I was rather proud of it at the time. It features some fancy viewport trickery to achieve the magnification visual effect, and overall I think it represents a somewhat novel and unique concept.
Movement: WASD / Jump: Spacebar / Magnifying Glass: Mouse
Designed and built in (under) 48 hours for Global Game Jam 2014 following the theme: 'We see things not as they are, but as we are...'
After spending all too much time debating the semantics of the theme, we opted to take a literal but mistranscribed stab at it.
Featuring art assets from John Guerra and Dillon DeSimone!
(download)
Robots! and other Hardware!
Autonomous Turtlebot
SUMMARY:
- Used A* to plan efficient routes towards unexplored regions of the map.
- Explored until the entire navigable area was discovered and parsed.
- Programmed in Python for ROS, running on Ubuntu.
DESCRIPTION:
Using ROS and Python on Ubuntu, we designed a system for the Turtlebot to facilitate autonomous navigation around a procedurally explored map.Using visual data from its onboard Kinect sensor, the Turtlebot parsed the data into a working map. From there, it used A* to plan efficient routes towards unexplored regions of the map, in order to optimally continue exploration until the entire pathable area was discovered and parsed.
This robot was produced with help from my teammates, Jacob Hackett and Lumbini Parnas over the course of 7 weeks.
Included below is a screenshot of the live map visualization produced by the robot.
SUMMARY:
- Detected where blocks are along the connected conveyor belt and useed custom Inverse Kinematics library to reach for them.
- Grabed blocks and weighs them, then uses that weight estimate to adjust connected hopper for sorting.
DESCRIPTION:
Working from a prefabricated embedded board and 3D-printed 2-DOF arm, we programmed and tested a system that allowed the arm to function as a sorting tool for objects on an assembly line.To facilitate this task, the team updated a code library in C that was given to us in a work-in-progress state. This library was source-controlled using GitHub and sported such expanded features and PID control and Analog-to-Digital I/O conversion.
Using an IR sensor, the arm was capable of determining the speed of the block as it moved down the conveyor belt, determining where along the width of the belt the block was. By taking these factors in to account in combination with Inverse Kinematics programming, the arm reaches for and picks up the moving object as it passes by. From here, the arm weighs the object, and uses that information to determine how it should tilt the integrated hopper before dropping the object on to the hopper itself.
This robot was produced with help from my teammates, Jacob Hackett and Michael McConnell over the course of 7 weeks.
SUMMARY:
- Autonomously navigated randomized mazes to locate and extinguish a fire.
- On-board odometry equipment tracked and reported robot and fire position.
- Designed, programmed in C, and built in 7 weeks.
DESCRIPTION:
Marlow (named after something really dumb) was capable of autonomously navigating randomized mazes to locate and extinguish a fire located within the maze itself.Marlow was also capable of keeping and reporting accurate data regarding its own position and the estimated position of the fire back to its owner. Using a combination of prefabricated sensors and custom-fabricated parts, Marlow can be constructed on a budget of under $400.
Designed, fabricated and tested over the course of 7 weeks, with help from my teammates, Jacob Hackett and Lumbini Parnas.
Stay in Touch!
If you'd like to strike up a conversation with me, I'm active on Twitter! My handle is @FomTarro; I have the best hot-takes on anime.Or, if Twitter seems a bit too unprofessional, you can always shoot an email to tom@tomfarro.com, and I'll do my best to respond posthaste!
If you're looking to get even more professional, you can network with me via my LinkedIn profile, and check out some of my public projects (such as this page) on my GitHub as well.
Lastly, you can take a look at my resume!