A Joke of an Island

 

Made in January 2024 using Unreal Engine

Game page

https://avnishbansal9.itch.io/a-joke-of-an-island

GitHub

https://github.com/avnish32/Avnish_GGJ_2024


Highlights

  • Submission to the Global Game Jam 2024; based on the theme 'Make Me Laugh'.

  • Won the 'Most Creative Game' award at the University of Lincoln jam site.

 
  • Focused on the look and feel of this game and tried to impart a more psychedelic vibe to the level using Material Blueprints in Unreal Engine.
  • Programmed NPC interaction in the form of text boxes and a button. I initially wanted to use a Metahuman as an NPC, but given my lack of knowledge on this technology and the lack of time to learn about it, I had to settle for a 2D sprite.

 

Description

A Joke of an Island is part-walking simulator, part-foraging for clues, and part-figuring out what goes where. It has 'making someone laugh' as its central goal which the player ultimately strives for. It's a short game and can be completed easily in around 10 minutes.

The game involves escaping an island by making the NPC laugh. The island is a mysterious one, with strange questions inscribed on rocks. The answers to these questions are hidden around the island in the form of basic, everyday objects. The player has to find these objects, figure out how they can be used to answer the questions in a manner that makes the NPC laugh. 

The player has 5 minutes to do this. If they win, they get off the island. If not, they still get rewarded with a joke from the NPC before the two of them wait together for someone else to rescue them.


Technical Walkthrough

Psychedelic Feel

  • A single, constanly moving material was all it took to imbue a surreal, psychedelic look to the game (blueprint below).
  • This material was parent to 4 material instances, each using a different texture (below).
  • These different textures, albeit using the same material blueprint, resulted in different effects when constantly moving.

Interaction

  • Each interactable object implements the interface 'BPI_Interactable' having two functions - 'Interact' and 'DisplayInteractMsg.' 'Interact' defines the logic when the player interacts with the object while 'DisplayInteractMsg' describes the message to be displayed when raycast falls on the interactable object (below).
  • Pickable objects, which represent player's responses to the questions in the game, are added to the inventory when interacted with (below).
  • Inventory items are represented as a structure with two variables:
    • 'itemSprite' (Texture 2D): image of the item as it appears in the inventory.
    • 'punchlineDataTable' (Data Table): the data table that stores the mapping between the item and the questions in the game.
  • The idea is for the player to collect items and use them to answer the questions scattered around the island, thus completing the joke's punchline. Player answers these questions by dropping items in the respective containers of the questions (below).

  • Each container object has a field called 'jokeIndex' that represents which joke it corresponds to. When the player clicks an item in the inventory to drop into a container, the game fetches the row at the 'jokeIndex' position of the item's 'punchlineDataTable'.
    For example, below is the data table configured for the Frisbee:

  • This row contains information about how to react to the item submitted by the player, including how to respond and the amount by which the NPC's laugh meter will increase (below).
  • Storing this information in data tables allowed for efficient accession at runtime, as well as ensured that the game had a response configured for every combination of questions and items.
  • Each question has only one correct answer which increases the laugh meter the most. This, too, is configured in the data tables using a boolean variable 'isBestPunchline'. Once the laugh meter is filled up, the player wins.