//Matt Schoen

//Software Engineer

//Co-Founder, Defective Studios

using Home; using Resume; using Photos;
class ContactInfo{
const string facebook_id = "mtschoen"
const string twitter_id = "mtschoen"
const string github_id = "mtschoen"
const string quora_id = "Matt-Schoen"
const string google_id = "+MattSchoen"
} class Unity{
public Unity(){
I work at Unity now! I joined the VR Labs team in San Francisco on May 2, 2016. Most of my previous work in Unity has been under the Defective Studios umbrella. I'm calling out specifics here which were projects that I took the lead on, but please also visit DefectiveStudios.com and read our blog to see what we've been up to.
public void CosmoKnots(){
CK CosmoKnots is our flagship game (on hold temporarily). Still in alpha, there is a fairly long road ahead of us before we consider this game to be done. There's a lot to say, so read the blog to see what we've been up to on this project! UPDATE: CosmoKnots was given Trailblazer Recognition in the Intel Realsense App Challenge!
public void Dragons Adventure(){
CW HitPoint Studios posted to the BUG mailing list looking for a "Unity performance surgeon." I figured that such a job was right up my alley and eventually signed on to the team for a few months as an independent contractor. My responsibilities included overhauling the world builder system and squashing general performance bugs like out of memory errors and frame rate drops on mobile devices.
public void UniMerge(){
UM UniMerge fills a crucial hole in the process of doing version control in a Unity project. It allows users to compare otherwise-unreadable scene files within Unity itself in order to merge them after branch merging or conflicted merges. Check out the promo video to see the tool in action.
UPDATE: I gave a talk at Unite about Unimerge!
public void GameFace HomeScreen(){
Not many people have seen this project in action since it was made for hardware that is currently only a prototype. GameFace is one of the players in the emerging VR market, and they engaged us at Defective to create an interactive home-screen app switcher for the system. Look forward to more news about this in time.
public void JSONObject(){
JO The JSONObject module was a class that I made early on in my use of Unity. I wasn't happy with existing C# libraries and how they integrated with a Unity project, so I set out to make the simplest JSON parser I could have. It's become a very popular free tool on the Asset Store and is used by many different projects at many different studios.
public void Defective Splines(){
The spline system that drove character locomotion in Platformer, Defective's first project, is also a module that we released for free on the Unity Asset Store. It's been a while since I updated it, but it still works well as a character controller or simple pathing system for moving objects around in Unity games.
public void DX11 Tesselation experiment(){
As a brief hiatus from CosmoKnots, shortly after Unity released their DirectX 11 API, I decided to try some DX11 hacks. Along with the tessellation shader in the link above, I played with compute shaders in an attempt to create GPU-driven smoke particles. That one didn't get far enough to show. To my knowledge, this was the first ever post about quad patch tessellation in Unity.
public void Garbage-free String Hack(){
A hack that I arrived at after many months of attempts to optimize in-game data serialization. It fixes performance problems that arise in Unity games that make too many calls to string manipulation functions that create garbage.
class WebWork{
public WebWork(){
I've done a variety of small web jobs over the years. My most comfortable stack is the admittedly out-dated LAMP (PHP/MySQL) setup, but I've also worked with C# in an ASP.NET application, I've deployed and interfaced with ElasticSearch (which is quite cool), and I've even dabbled with Ruby On Rails, though I'm not fond of it.
public void SkeedyID(){
SkeedyID SkeedyID is a web service (currently in beta) for ski shops and customers to manage service orders and rentals online. Skeedy helps shops and resorts keep track of equipment waiting for services, e-mail customers when it's ready for pick-up and reach new customers who have already signed up through the service. Customers can search for shops in their area and request and pay for services online.
public void CountyChair(){
CountyChair Fred Yannatuono is an old family friend, and his family's party rental business needed a website update. Enlisting the help of Jon Elliott, I came up with a nice, simple redesign for him. Simple, elegeant, and functional, the site provides a full inventory list, contact information, an interactive map with driving directons, and a funny story about Paul Newman!
public void AssetCloud(){
AC AssetCloud was an attempt at managing the content of a Unity project online. The project has since become essentially defunct now that Unity supports version control packages and text-based serialization of its own data, but still works and drives a portion of the Platformer project.
public void Defective Suite(){
The Defective Suite is basically just a way to wrap up a lot of individual needs into a single web backend for our main project, CosmoKnots. Over the course of development, there were some experiments that we were doing that involved saving data to a backend, and eventually we wanted a way to view that information. Additionally, it serves as a way of managing current builds of the game so they're always available. This project has stagnated a bit along with CosmoKnots (it was never officially a feature), but rest assured, it will be back!
class Contract{
public void Track My Maccas(){
TMM Track My Maccas was a promotional app for MacDonalds (in Australia it's called Maccas) to educate consumers about food sourcing in their local area. The app used a user's location to give them information about where various products (beef, fish, lettuce, etc.) in their food came from. The app also used Augmented Reality technology to display an animated diorama around the customer's product box to illustrate the information on screen.
public void UUA Illuminations(){
UUA We were approached by the Unitarian Universalist Association to create a devotional app for Unitarian churches. Users of the app can view inspirational words and quotations as well as a virtual animated chalice which can be lit or unlit.
class Other{
public Other(){
I also just like to do things which are worth sharing. Some of them aren't even code!
public void AboutMe(){
If I'm nothing else I am curious. I've taken to computers (and by extension videogames) because they are, in my opinion, simply the most fascinating thing on Earth. I also enjoy listening to and playing music, as well as watching and making movies. Once upon a time I did technical theater and even played lead in a show! Put a problem in front of me and I'll try and solve it.
public void Guides(){
Guides For a long while, as I've worked on visual tasks with computers, I've wanted the program I'm using to provide horizontal or vertical guides for lining things up. I finally decided to make a global Windows application to do the same thing no matter what program I'm using. It's also available on github and sourceforge.
public void NightNDay(){
ND I thought it would be cool to use a tilt-look script to drive a live wallpaper for android phones, so I whipped one up in my spare time. All the art was created by me in Vue. I hope to update this soon to allow users to load in their own photospheres.

Design and code © Matt Schoen 2016