Updated 2 years ago
9.7 K
It's dangerous to go alone.
Created by: Michael and Ryan Burns - two brothers who together form Good Fire Games
Genre: 2D Melda (Metroid and Zelda inspired)
Twitter: @GoodFireGames


Hi everyone, thanks for coming to our page! My brother and I have been recently developing a project never before seen for the Unity 2D Challenge - TESS. We have been using Unity and all of its incredibly useful 2D tools. The native tools and those found in the Unity Asset Store have both been extremely helpful to new developers like us. Ryan is the lead programmer and I(Michael) have been in charge of design and secondary programming. We have put in many hours of loving work and have even contracted all original sound and beautiful art.
We call ourselves Good Fire.

About TESS:

TESS is a hand-drawn pixel art action and adventure game. It takes place in a fantasy world parallel to our own. The namesake of the game, Tess is the inter-dimensional guardian of our world. Powerful and wise he has watched over us for millennia. Being a highly intelligent energy being, Tess has enlightened key human beings of the past by inserting himself into pivotal points of human progress. In goodwill and always secret encounters, Tess interacted with historical figures during the building of the pyramids and other space and time phenomena such as the discovery of the Earth being round, insights to the laws of physics and gravity and much more. Tess possesses great powers: perhaps even containing the keys to the mysteries of life and death. The bad guys, also not of this world, have come to the hero’s realm in search of Tess, destroying everything in their path. They want to use Tess' powers for evil. Tess is injured and narrowly escapes during an encounter with the mysterious bad guys.
This is why Tess has revealed himself to our hero, a young man named Sril. Tess needs Sril's help to rebuild and become more powerful than ever. He sees a pure heart in Sril and submits his vulnerable state and powers to him. Together they go on an adventure in search of ancient elements in mystical worlds and among dangerous foes.


  • Explore interconnected worlds across a vast game map
  • Access a wide array of powers to navigate to unexplored areas and crush crafty enemies
  • Wall jump, double jump, dash and slash your way to fun
  • Collect currency and rare energy forms to upgrade your powers and equipment

Characters So Far:

Development and Unity Guides:

Pixel Perfect Camera

Downloading From Unity:

Adding to Scene:

Calculating Size, Setting, Type & PPU:

  1. Pixel Per Unit (PPU) is the number of pixels that one unit makes in your Unity scene. We set to 48.
  2. Reference Resolution is your native resolution of your scene. Ours is set to 480*270.
  3. Upscale Render Textures renders the scene as close as possible to the reference resolution and aims to keep the aspect ratio, then upscales it to full-screen.

Camera (Object - Inspector):

  1. Projection. In our case, we change this to Orthographic; although, perspective may work for 2D games, as well.
  2. Size. This will be calculated automatically by the Pixel Perfect Camera script.
  3. Leave everything else as default.
Now, you have a working camera that calculates pixels perfectly without writing any code! Along with these steps, there is a little bit of work to do when importing sprites. Luckily, it is very minimal.

2D Animation Blend Trees - Jumping (PART 1)

Jumping is essential in a platformer, from Mario to Hollow Knight. Unity uses Blend Trees to float from one sprite to another which makes solid, fluid animations. We will be working through one of the phases of a typical jump: the rising and falling. First, we need to import our sprites. We use sprite-sheets to manage sprite animations.

Importing Sprites:

  1. Right-click into Project tab and click on "Import New Asset...". Choose spritesheets to load and press the "Import" button.
  2. Click on one of your newly imported sprite-sheets. This should show the Inspector tab or window, according to whichever layout you have chosen.There are 5 essential changes I make to every sprite I import.
  3. Sprite Mode. Set to Multiple. This allows you to use multiple sprites from one sheet.
  4. Pixels Per Unit. In our case, we’ve set it to 48.
  5. Wrap Mode. Set it to Clamp (if not already).
  6. Filter Mode. Set to Point (no filter). This helps with having no blurriness when importing 2D art.
  7. Default tab. Set the Max Size to be larger than your image you’ve imported and change Compression to “None”.
Click Apply and do this to each sprite imported for the entirety of your game.

Sprite Editor:

Click on Sprite Editor button. This will bring up a window where you can splice your sprite-sheets. Splicing allows you to tell Unity the location of each individual sprite. And it allows you to only manage the minimal number of images in your project. It should lower the load on your game, as well, allowing it to process fewer image files.


A helpful feature of Unity is auto-slicing. If you choose, Unity searches through your sprite-sheet and will find each individual sprite, size, pivot and crop each individually for you. This feature saves tons of time.
Please refer to video footage more in-depth walk-through of Slicing.

Animations and Blend Trees:

Now, that the import and splicing have been done, we can move onto making an animation with these sprites. We will dive into animations and blend trees.
  • Navigate to the Animation tab. Click on the object your animating. Click on the top left of the window, open the menu and then click on “Create New Clip…”.
This may seem unconventional for creating animation, but in this case with Blend Trees, we will create separate animations for each jump frame. Blend trees are extremely helpful in getting that seamless animation transition within Unity.
  • Create your animations for each frame of your jump cycle. I've created 13 total. Please refer to video footage more in-depth walk-through of adding Animations.
  • In the Project tab, navigate to where your sprites are located. Click the arrow at end of sprite.
It will now open to each sprite individually, thanks to our Auto-Splicing technique we used earlier in the Sprite Editor.
  • Complete this for each Jump frame to be used with the Blend Trees.

2D Animation Blend Trees - Jumping (PART 2)


  • Open the Animator tab. Right-Click -> Create State -> From New Blend Tree. Double-Click into Blend Tree.
  • In the Inspector tab, you can set the name, speed, transitions and other options. I have named this “Jump”.

Setting the Threshold:

Use Parameters and Thresholds to tell the Blend Tree when to transition back and forth between which animation.
In this case, the parameter we use is a float variable called “velocityY”, which I’ve set in my scripts to reflect the rise/fall speed of our main character.
  • Set the Threshold to -7 on the low end and 9 on the high end. This means that the animations will only cycle among themselves between these ranges.
You can set the thresholds individually or automatically. If you ask Unity to set the thresholds automatically for each frame, then it will use low and high extremes, along with average amounts spread among the animations in the middle of the blend tree. In our case, we had a lot more frames used in our jump when going up than when going down, so I set these manually.
  • Set the thresholds, manually or automatically.
  • While in Play mode, the blend tree will glow depending on which animation is cycling through.
  • After that quick and easy blend tree set-up, we now have a very fluid jump animation. Watch the image below to see it in action!
Good Fire - Designer
Ryan B
Chris Lewis Lee
Illustrator - Artist
very nice
2 years ago
Good Fire
yoshi kwanThis is the best!!! :)
Thank you!!!
yoshi kwan
2 years ago
This is the best!!! :)
Ryan B
2 years ago
Tony Cervantes@MichaelBurns looks like the video you posted is private I just wanted to give you a heads up.
Hey, thanks for the heads-up!
Ryan B
2 years ago
TJ DoneThis looks pretty awesome! Absolutely amazing art too.
Hey thanks so much, we really appreciate it! Means a lot to hear that.