Hi, welcome to Mix and Jam, a channel about game development experimentation. Today's project is inspired by the indie game Celeste. Celeste is an incredible game with amazing art and one of the tightest platforming controls out there. My goal for this project is to try and achieve a similar movement and feel using Unity. To hear the steps I needed to follow for this recreation. Implement the basic movement of the character, which includes walking, jumping, grabbing to the walls and dashing. Add some pixel art animations to the character's movement. And then polish the scene by working on the environment, some particles and extra effects. I started by creating a game object with a sprite renderer and applying gravity to it by adding a 2D rigid body component. To make the character move, I created a script that modified the velocity from the rigid body by getting the values of the horizontal and vertical axis on Unity's input. For the jump, I changed the rigid body's y velocity when the action button is pressed. But by doing that, the jump always has the same linear motion. So I followed this tutorial from Bored to Bits games on how to make better jumping by modifying the character's gravity depending on how long you pressed the button. Next thing was to detect the player's collisions. So I made a script that used the overlap circle function to see if the character was grounded or on the wall. With that detection, I was able to make the character's light when it was colliding against the wall by subtracting from its y velocity. And when the character was on the wall and holding the trigger, I activated the wall-grab boolean that allowed the player to climb the wall modifying the y velocity just like in the game. Another thing the player can do while colliding with the wall is a wall jump. The first thing I tried to do was to deactivate the character's movement for a bit after jumping, so it wouldn't allow the player to immediately get back to the wall. But that turned out not really great. Instead, I decided to learn the movement after the character jump so that the player could still have control over the character, but not that much. To work on the dash, I get the direction based on the horizontal and vertical axis and use that to add velocity to the rigid body. In order to make the dash really quick, without going very far, I increased the rigid body strike property while the character is dashing. Then I decided to add a particle system to the dash just so it could look a little bit better. For this project, I collaborated with Nate Kling for all the pixel art and animation. Nate super talented, so I was super excited to work with him. So make sure to check out his work. He designed a character based on the mix and jam colors and he also did all the animation and the art for the environment. I'll be putting a link in the description if you just want to download his art so you can play around with it. To implement the character's images on the project, I first had to slice up the sprite sheet by using the sprite editor. Then when that was done, I created all of the animations for the character using these animators. To make the transition between those animations, the one solution I found was to create parameters on the animator that were similar to the ones on the character script and use them as conditions for the transitions. After that, I started creating the level using Unity's tile map. With tile map, I could easily select the image I wanted to paint over the environment on the tile grid. Then to make everything pixel perfect, I installed the Unity's pixel camera package and applied it to my camera. The great thing about using this package is that I was able to create normal particles that rendered like pixel art. So I created particles for the character jump, slide, and even want to simulate the windies now. To replicate the ghost trail, Celeste leaves behind when dashing, I created a sequence of three images that moved on the character's position while dashing, and then I made it fade away. To add more intensity to the dash, I added a screen shake to the camera using due tween's due shake position. On the game, there's a little ripple effect that happens on the dash, so I found this shader on Kijiro's GitHub that does a similar effect and apply it to my project. After a bit of adjustments, this is how it turned out. The link for the project's repository is in the description below. Mixing Jam is only possible because of the incredible people helping out on Patreon, including these top tier supporters. I'm absolutely grateful for all this support, seriously, you guys are the best. If you're new to the channel, don't forget to subscribe to check out the future projects, and I'll see you in the next one.