← Back to projects

Terra Carta

Relaxing Atmospheric Puzzle Game

Role Gameplay & Sound Design
Team 3 Developers & 6 Concept Artists
Duration 4.5 Days (Jam)
Stack Unity / C#

The Context

Terra Carta was created during a ‘Creative Week’ at Bellecour Ecole. We had less than five days to independently create a creative experience within the constraints of the cards and with a theme of our choice. We chose “Echo” and ‘Fragment’ as a bonus. We worked with a third-year student as our lead, who taught us a lot.

Our goal was to create a relaxing and polished experience. My focus was on the "Juice" and UX: ensuring players understood interactions instantly.

My Contributions

  • 01 UI Integration Implemented the tooltip logic & the menu
  • 02 Sound Design Integrated all audio assets

Learning & Implementation

Handling UI in World Space

One of my tasks was to create tooltips for the cards to explain their effects on other cards. I used a Singleton Pattern so that the behavior could be accessed from anywhere without complex links, especially in the context of a jam.

My biggest challenge was to position the interface correctly so that it would display above my card and automatically stretch to fit the size of the text.

TooltipBehaviour.cs REF ACTORED FOR PORTFOLIO

// Original logic created during the Creative Week Jam.
// Refactored for this portfolio to improve readability and performance.

public class TooltipBehaviour : MonoBehaviour
{
    public static TooltipBehaviour Instance;

    [SerializeField] private TooltipManager _tooltip;
    [SerializeField] private Vector3 _offsetTooltip;
    
    public void ShowTooltip(SSO_CardData cardData, Vector3 triggerPosition)
    {
        _tooltip.SetText(cardData.cardDescription, cardData.cardName);
        _tooltip.gameObject.SetActive(true);

        // Optimization note: In the original jam code, I didn't cache the RectTransform.
        // Today, I would cache it in Awake() to avoid GetComponent calls here.
        RectTransform tooltipRect = _tooltip.GetComponent();
        
        float heightOffset = tooltipRect.rect.height / 2;
        Vector3 finalPosition = triggerPosition + new Vector3(0, heightOffset, 0) + _offsetTooltip;
        
        _tooltip.transform.position = finalPosition;
    }

    public void HideToolTip()
    {
        _tooltip.gameObject.SetActive(false);
    }
}

Sound Design & Atmosphere

For a relaxing game, audio plays a major part in the experience. My experience in animation helps me understand the importance of feedback.