Novantica is set in an open world environment with various interior scenes that asynchronously load in when the player is nearby. When I started developing the game, I was originally planning to use a top-down third-person perspective, like many of my favorite old adventure games. Because it was set in an urban environment, I also wanted the player to be able to look up towards the sky and get a sense of the urban architecture. I tried a few different approaches to shifting the camera based on how the player was moving, but never quite achieved what I'd hoped to. Eventually I decide to make the camera work like many third-person perspective games and allow the user to move the camera using the right stick on a controller.
This approach worked really well for the open outdoor areas, but made the interior scenes feel cramped and awkward. Many other games just leave things to the player to figure out, but I've never really liked how games did that. I can't tell you how many times I would stop in the middle of a cave in Tears of the Kingdom just to look around and try to understand where, exactly, Link was in relation to the cave. This free camera movement also made some of the puzzle mechanics in the Novantica awkward – e.g. making it difficult to see where a box needed to be pushed.
Then, I had an idea I wanted to test out...
Since Novantica is set in a futuristic city, I always wanted to make sure the game had a certain level of city life – people walking around, bots zooming by, drones buzzing, trams gliding, and bikes rolling along. I hadn't done much 3D modeling before learning Unity, and, while modeling props, buildings, and other blockish things didn't seem to difficult, I struggled with creating humanoid characters. I knew that I wanted something low-poly, simple, and a bit cartoonish for the game's characters, but I'll admit that character design is probably not my strong suit.
One of the more perplexing bugs I encountered working on Novantica so far was when all the NPC extras in the game suddenly turned a greenish-yellow color. I had just swapped out URP materials for ones using a new shader, so I suspected that change made this happen, but I didn't want to revert back to the old materials. To add icing to the cake, this issue was only happening in builds, not in the editor. I started to dig in, but didn't realize it would take so long to track down.
In March 2020, I remember the former mayor one day telling people to go out for dinner and see a show – and the next day hearing that it wasn't safe to get within six feet of another person. If you haven't been to New York before, it's not easy to walk around outside and not get within six feet of another person. In hindsight, it was relatively safe to be outdoors, but at the time, we were afraid to step outside the door for a few weeks.
I also remember a lot of people thinking that the whole thing would blow over in a month or two, but everything that I had been reading made me suspect that was far too optimistic. As someone who walks to get to 99% of the places I'm going and thoroughly enjoys it, I realized that I would have to pick up a few new hobbies to keep my sanity.
Since 2020, I've been teaching myself game development with Unity and have been working on Novantica, a sci-fi adventure game, set in a futuristic urban open world where time travel is common, god-like AI govern the world, and a mysterious event has disrupted the city. You can wishlist Novantica on Steam.
Over the years, I've worked on several open source projects that helped defined modern approaches to styling front end applications. Starting in 2013, I worked with Adam Morse and John Otander on CSS Stats, a web application to statically analyze a site's CSS. In 2015, I created Basscss, the first atomic/utility-based CSS framework that helped popularize using multiple classnames on a single element to style HTML. Basscss used a small set of theme values for font-size, color palettes, margin and padding scales, and more, which is now common practice in front end design systems. If you've seen (or cursed at) code that looks like `class="block mb2 blue"`, then you've seen my work. In 2017, I released v1 of Rebass (also my first time on Hacker News), a library of stateless functional React components with styling, which helped introduce the concept of styled UI components in React. Extracting the utility style props from Rebass, I created Styled System in 2017. In 2019, I released Theme UI, an extension of these ideas that provided utilities for dark mode, styling content in MDX, and a universal `sx` prop to style elements inline with theme-based values.
I've also worked on various other open source projects. I created MDX Deck as a simple way to make slide presentations with MDX. Helped John Otander with the conceptual design and syntax of MDX, a combination of markdown and JSX. Created several color tools, including Colorable for testing color contrast, Palx, Spectral, and Hello Color. SVG-related tools, including Loading, Geomicons, Microicon, Paths, and Reline.
As a retired DJ, I also produce electronic music, previously running a project called Microbeats, in which each track was created in one hour or less. I am one-half of MrsJxn, a collaboration with Adam Morse. I also dabble with interactive music apps like Skullcat. Checkout my SoundCloud.
I am currently working as a design engineer at Val Town. Previously, I worked at Gatsby JS, Priceline, The Grid, Etsy, Kickstarter, Stitch Fix, Living Social, and Opower. I studied sociology, Japanese language, and graphic design at Marshall University.