Gameplay Scripter & Tools Programmer

THE GAME

Muerto Match is a calming linker game which has the player solve puzzles by linking together the belonging tiles. Its Day of the Dead and you must help decorate the town by making the flowers blossom. Its designed to be played on the go, with one hand and encourages the player to explore different possible solutions as levels grow in complexity.

Genre: Puzzle Linker

Platform: Android

Engine: Unity

Scripting Language: C#

Development Time: Three weeks

Team Size: Five people

RESPONSIBILITIES

  • Tile Linking System
  • Level Editor
  • VFX / Animation Implementation

I Scripted the core gameplay systems, such as linking and unlinking of tiles, implemented various feedback effects and animations. I also created a Level Editor to speed up the level designer’s workflow, which allowed us to quickly create, iterate on and implement a total of 35 levels.

GAMEPLAY

CONNECTING TILES

Skulls are the start and end points, The player makes a link from a skull to the other skull of the same color and needs to include all the flowers of the same color in that connection. The goal for each level is to have all tiles of the same color connected.

PODIUMS

The podiums are a wildcard tile type. They can be connected to any color and it takes multiple connections, indicated by the number of lights present on the podium.

INTERSECTING LINES

The player is not allowed to intersect any existing lines when connection tiles.

This can only happen when connecting two diagonally aligned tiles. Since they are sorted into a 2D-array, we can use an algorithm to check if the tiles’ common neighbours are connected to each other, meaning we would be crossing a line trying to make that connection.

// By subtracting the indices (x and y coordinate) of the two tiles we want to connect,
// we get the tiles' relation to each other, the delta coordinates.
// We then use the delta to see if the tiles are diagonally aligned,
// find their common neigbours and check to see if they currently have a connection to one another.

// Checks if the fromTile's and toTile's common neighbours are connected,
// meaning we are crossing an already existing connection, i.o. a line
public bool CrossingLine(Tile fromTile, Tile toTile)
{

    int x1 = fromTile.indexX;
    int y1 = fromTile.indexY;

    int x2 = toTile.indexX;
    int y2 = toTile.indexY;

    int xDelta = x2 - x1;
    int yDelta = y2 - y1;

    // If any of the deltas are 0 the from and to tiles are not diagonally aligned
    if(xDelta == 0 || yDelta == 0)
    {
        return false;
    }

    int finalX = x1 + xDelta;
    int finalY = y1 + yDelta;
        
    // Make sure the tile coordinates are actullay inside the list
    if (finalX < 0 || finalY < 0 || finalX >= tiles.GetLength(0) || finalY >= tiles.GetLength(1))
        return false;

    return IsConnected(tiles[finalX, y1], tiles[x1, finalY]);        
}

// Check to see if tile a or b is connected to the other
public bool IsConnected(Tile a, Tile b)
{
    if (a != null && b != null)
    {
        if (a.IsNextTile(b))
        {
            a.XingLine();// Initiate Feedback
            return true;
        }
        else if (b.IsNextTile(a))
        {
            a.XingLine(); // Initiate Feedback
            return true;
        }
    }

    return false;
}

LEVEL EDITOR

BOARD EDITOR

The levels are basically just objects with a 2D-array of game objects, describing the layout of the tiles. Levels can be edited either from their own inspector or from the Board Editor. The editor allows the user choose any level in the game and make a preview of it in the game view.

LEVELS

The levels themselves are Scriptable Objects, meaning an instance of the script can be created as an asset in Unity. This enables the user to configure and save an object and its variables, without creating an actual game object prefab.

Unity Editor has no built-in way of displaying 2D-arrays. I use the Custom Property Drawer to override the default Inspector GUI to display the 2D-array in a grid-like fashion.

Muerto Match

Made in 3 weeks in Unity at Futuregames.

What I did

  • Tile Linking System
  • Level Editor
  • VFX / Animation Implementation