Rift Between Skies

This game heavily relied on tilemaps, requiring a rewrite of Unity’s RuleTile to support highly custom tiling rules; normal rule tiles only support checking whether any tile exists as a neighbor or not.

3 minutes read

Platform

PC

Engine

Unity 2020

Release Date

Abandoned

Technologies Used

C# Unity

This game heavily relied on tilemaps, requiring a rewrite of Unity’s RuleTile to support highly custom tiling rules; normal rule tiles only support checking whether any tile exists as a neighbor or not. Instead, we needed to check for specific tiles and tile subclasses. We also implemented a system to generate “tile transitions” between different tile types, for example, to smooth out the transition between dirt and stone. A bit like Terraria does!

Here’s a demo of the editor tools I wrote for properly specifying rule tiles. You can see all the custom tiles support dead zones, those are sides that will never create a tile transition, for where it visually wouldn’t make sense to have one; that is why they only cannot be configured on corners. Typed Sprite Rules prompt for exactly which tile to check for, and if you’re quite attentive you might have noticed the “strict” checkbox, that’s for setting the rule to not be valid on tiles that are children of the specified ones. Additionally, simple sprite rules similar to the officially provided ones are supported.

Another one of the key features was the fact that tilemaps could be split into individual islands, should contiguity be broken at any point, whether by the player using tools/weapons, or by enemies using their attacks. Once split, they had to be completely independent of one another, their weight would be calculated based on the island’s current tile composition and size. They also needed to be able to be remerged by the player or any other methods.

The question mark tile is a tile which is internally referred as “MergeTile”, it only ever stayed in the debug stage. When two of them are adjacent and on two separate islands, they can merge. You can also see the custom rules working as intended and not tiling with them, as the terrain tiles do not have any rules that match the merge tile. It might look like they do if you check the previous video, but actually that’s the base terrain tile, internally it has the same sprite. Now, have a demo of the tiling system as I play around with islands a bit. It is oddly satisfying to watch in my opinion, which signals the system is properly designed, at least in theory. I believe players would have had a lot of fun with this.

Why did we abandon this project? Obviously, life always gets in the way of personal projects, and not always one has the time to dedicate time to it. However… this was caused by a big technical reason. The default Unity tilemap is not very optimized or easy to work with for dynamically updating it in-game so heavily, and not for such dynamic manipulation either. In other words, I would have needed to rewrite the tilemap entirely, but I didn’t want to do that for a project that we initially decided should have had a MVP ready in 6 months. Even better, this would have probably warranted a custom engine. I’ve kinda never done that, I am pretty sure I can, but that’s even longer than rewriting a custom tilemap system.