What sets Super Tile Land Apart?


As you may be aware, this project was originally made to a tutorial template. In fact, this was one of the first full games I made in my game-dev journey, back in early 2023. Revisiting this game now in September 2024, I realised there was a lot more that I could do with it.

Advanced Player Movement: I significantly improved the movement system, adding coyote time, jump buffering and variable jump height for more precise control. I also felt it was important to add gamepad support, both for accessibility reasons, and it just feels nice to play a retro platformer on a gamepad.

Satisfying Water and Ladder Mechanics: Inspired by classic Nintendo titles such as DonkeyKong and Warrio, I've paid particular attention to the feel and quality of life when swimming, climbing ladders, mounting and dismounting from ladders, and also when submerging and emerging into and out from water. Water counteracts the in-game gravity with buoyancy (using a Surface Effector). Water also resists your movement using custom-coded quadratic drag so that the distance at which is breaks your fall is more consistent across different speeds. Ladders, on the other hand, will nullify your vertical velocity and turn gravity to 0, giving you tight control to move in all directions as you normally would have to move left and right.

Refined Audio: There's honestly a tonne more I could do with sounds. The original template only had a coin-collecting sound, so for the time being, I've added a few extra sounds for things like jumping, getting hurt ETC. because it felt out of place to only have one sound for one thing. The original audio worked by using AudioSource.PlayClipAtPoint() at the camera's Location. This was causing some weird panning issues which were especially apparent when wearing headphones. I believe this is because this method is intended for 3D sounds (a sound that is affected by its position in the scene relative to the AudioListener), but it was being played at the exact position of the audio listener. I solved this by playing all sounds through AudioSource instances, and setting the specialisation of the Audio Source to 2D (not affected by its location in the scene), and using PlayOneShot()to specify the audio clip for sounds clips that use a shared Audio Source. There is a case for certain sounds being positional, like bullet ricochet or monster grunting, but currently all the existing sounds are main-character-centric and can reasonably stay as 2D sounds.

Level Design and Progression: I created three unique levels, including a tutorial stage, testing and reworking each to ensure an engaging experience. I also implemented game-over and continue systems that allow players to keep their progress, avoiding the frustration of starting from scratch.

Improved collisions and triggers: In the original project, enemies could kill you with their wall detectors. After starting to make improvements, I also encountered other issues with using multiple trigger boxes on the player character. In Unreal Editor, overlap events can be assigned to specific trigger boxes. Currently, Unity doesn't have this functionality, and is also made more complicated by the fact that a RigidBody2D will take possession of all of the 2D colliders on any child of the game object. I've worked around this by using 2D physics casts in place of trigger boxes, and also by altering the 2D collision matrix.

Visual Enhancements: I have attached the sky backdrop to the camera, for a cheap but effective parallax effect. I also implemented a HSV-altering material in shader-graph, allowing greater control over the game's colour pallet and visual aesthetic inside the Unity editor, without having to go through the long process of exporting, editing and reimporting the image through an external image editor.

Visual Effects: Bubbles appear from your head while you are underwater. This uses a particle system. The bubbles will collide and bounce both with solid wall, and with the water surface. This is achieved by using both an outline collider (for the bubble particles to collide with), and a full-bodied polygon trigger collider for determining if the player or the bubble spawner is inside the water area.

Leave a comment

Log in with itch.io to leave a comment.