Game Jams
Jam’s Home
You're Jam, a dog who's protecting its home for Master. Squirrels, burglars, cars, anything that comes your way, you bark at. Unless it's your master. That requires a nice bark.
If I ever get a chance to work on a game as perfectly scoped as Jam’s Home again, I will consider myself fortunate. This game, created as part of the 2019 Global Game Jam, allows you to play as a dog (Jam) who is protecting their home against squirrels, cars, other dogs, and mailmen, all from the comfort of a couch in front of a large window.
I was responsible for the exterior environments in this game. My goal was to create a backdrop that had a lot of character without being distracting. As we were working with a low-poly art style, this was rather easy. The blocky, pastel houses have fun, cartoonish angles that make them more pleasant and interesting to look at than a simple cube with windows, while the color scheme allows the important assets (the aforementioned dogs, cars, squirrels, and mailmen) to stick out.
Due to the difficulty of modelling, rigging, and animating a dog in 48 hours, I also took some of the weight off of the character modeler’s shoulders by creating the mailman and owner assets, which I modeled, rigged, and animated.
All told, we finished this game with two hours to spare on Sunday, which I have never experienced before in a game jam. The game may be small, but it is polished, adorable, and complete, which is everything that we wanted from it.
More information about this game can be found on the Global Game Jam page for the game. The page also includes a download link to the executable and a link to the github repository.
Skygarden Express
The theme for the 2020 Global Game Jam was “Repair,” and the team that I joined chose to take that opportunity to make a game about repairing the environment. However, the task of repairing the planet in 48 hours, even if the planet is only digital, is a bit much to ask.
Instead, we chose to make the game about a space train that is trying to be environmentally sustainable.
Skygarden Express is a game where the player tends a garden on a train in attempt to make the vehicle 100% sustainable. It features procedurally generated levels in the form of several train cars that each require the player to balance their water supply, air purity, and supply of plant matter in order to reach 100% sustainability.
I wore several hats as part of this project. I was primarily a technical artist, creating shaders for both environment and UI art. I also did a small amount of environment art and writing to assist other team members (remember, we had to finish this in a weekend!). Overall, I was very happy with the breadth of skills that I got to use in this project and could not be happier with my part in it.
Technical Art and Mentorship
One artistic challenge that we faced as part of this game was in making the plant sprites (created by Devin Yang ) stand out against the dark background. While the sprites are beautiful, they tended to get lost on the screen.
To combat this, I created a simple shader that inverted the alpha channel of the sprite and then used applied that to the emission of the PBR (Physically Based Rendering) node in Unity’s ShaderGraph. This created a thin, glowing outline around the sprite that could be tinted and manipulated in the inspector.
This was actually the second iteration of this shader. I was much more used to working with 3D assets when making shaders, and so I initially used a Fresnel node to give the outline. I didn’t take into account that the alpha channel of the texture would override the Fresnel effect. When I found that this wouldn’t work, I went out on a limb and tried inverting the alpha channel. It wasn’t until a few days later that I found that this is the standard way to achieve this effect!
The other notable shader that I created was used in conjunction with the 3D UI assets (created by Kat Minor ) that we used to indicate water supply and air purity. This shader was also very simple, and was made to replace Unity’s built in Fill Image component, which does not play nicely with 3D assets.
This shader uses a simple black to white gradient that is fed into a Step node. The threshold of the step node can be controlled in the inspector or through code, meaning that it could be easily used by the programmers to reflect what was happening behind the scenes. The output of the Step node was then fed into the Alpha channel of the PBR Master node.
While this shader is fairly simple, working on it was my favorite part of this project. While one could be forgiven for thinking that the artist who created the UI assets is a seasoned veteran, it was actually her first time using Blender (or any 3D package) for UI art. Because of this, we spent a lot of time working together as she learned about curves, material assignments, and UV unwrapping. The chance to act as a mentor was incredibly satisfying, not only because I got to save someone from the frustrations that stumbling through 3D modelling could bring but also because I got to learn about a whole new way of approaching 3D assets because of her background in UI design and vector art.
Though it is barely visible during gameplay, I also contributed a 4k, hand painted skybox to the game. This skybox was made in photoshop using a variety of brushes, then warped in Blender by projecting it onto a subdivided cube and rendering each face. This way, we got a unique and colorful skybox that had no visible seams or corners.
The final piece of art that I contributed to this project is the model for the water machine. This machine is an amorphous tank with a spigot that the player can use to increase their water supply. The part of this model that I was most proud of was the spigot, as it has a particularly readable silhouette that still fits nicely with the rest of the model.
Writing
Of course, I couldn’t let a project go by without putting a bit of writing into it. I worked with a few other team members to create a tutorial, and then spent a bit of time putting some narrative flare into it. The goal with this text was to introduce the player to the mechanics of the game succinctly without overwhelming them with information. The bits of personality in the text serve to break up the instruction and give the player time to process the information that they’ve been given.