Point-and-Click Game Mode
(Work in Progress)
An Exercise in Visual Scripting

The Gameplay Gym
Introduction
My goal with this is not to simply make a hard-coded Myst experience, but to create an actual toolset that could be used to create a complete game experience. My ambition is for this to eventually be used as a platform for puzzle design and storytelling.
Drawing from knowledge gained during both my internships at The Bearded Ladies and Coffee Stain, as well as my time teaching visual scripting at The Game Assembly, this is a way of putting this new knowledge to use.
I also made a point to create this game mode from scratch without using any of Unreal's pre-made templates in order to deepen my understanding of how things like Game Modes, Player Controllers, and Player Characters work in tandem within Unreal Engine.
Details
Software used:
-
Unreal Engine 5.5.4
Skills to showcase:
-
Technical Game Design
-
Visual Scripting
The Art of Pointing and Clicking
Clicking to Move
Like in adventure games of old (such as Myst III: Exile), my player is only able to stand at specific pre-determined positions in the world.
I've created a simple blueprint called BP_PlayerPosition which I am placing in the world at each position I want my player to be able to move to. In the editor they are indicated by blue spheres. In these spots the player is able to freely rotate and look around 360 degrees.


Move Boxes and Player Position Spheres as seen in editor
To move the player clicks on invisible blueprint actors that I'm calling BP_MoveBox. Each MoveBox is contains two variables pertaining to the player's position.
The variable InteractPosition
decides from what instance of BP_PlayerPosition the MoveBox can be clicked. MoveDestination decides which player position the player will move to once the MoveBox has been clicked.

BP_MoveBox fires up a custom event where it checks the player's current position. If the current player position is the same as one of the MoveBox's interact positions, the player moves to its move destiantion.
Variables contained within BP_MoveBox

Free Camera & Free Cursor
By right-clicking the player can toggle between Free Camera Mode
and Free Cursor Mode.
The game starts in Free Cam Mode by default. In this mode the player can move the camera freely with the cursor locked to the center of the screen where it acts like a crosshair.
In Free Cursor Mode the game turns into a more traditional point-and-click experience where the player is able to click and examine things in the environment in more detail.
This is also how the player gets to access their inventory.

The Pointing
Whether the player is in Free Cam Mode or Free Cursor Mode, a continous line trace for objects checks what the cursor is currently hovering over.
If the line trace overlaps with any of my interactable blueprint actors the cursor icon changes depending on the blueprint actor. For instance, anything the player can grab is indicated by an open hand.
As more features are added I plan to add more cursor icons.



Attribution for cursor icons used from Flaticon:
<a href="https://www.flaticon.com/free-icons/cursor" title="cursor icons">Cursor icons created by berkahicon - Flaticon</a>
<a href="https://www.flaticon.com/free-icons/eye" title="eye icons">Eye icons created by Freepik - Flaticon</a>

I love spaghetti
Interaction
Interactions affecting the world
To test out interactions I created the lever blueprint BP_SwitchLever, a simple animated lever, the speed of which can be modified in the editor.
I'm utilizing level sequences to create animations in the game world. By adding a public variable with the type Level Sequence to the lever blueprint, it is possible for any lever switch to activate any animation I create in the game world.
I want to make its functionality as modular and reusable as possible, but I already see lots of potential for this to be used in puzzles.


Variables contained within BP_SwitchLever
Close-Up Mode

Certain items will make the cursor display an eye icon to indicate that the player can examine the item up close.
When clicked the player's view switches from the player camera to a separate Close-Up camera placed in the world.
An event dispatcher is called when the player enters Close-Up Mode. A custom event bound to the event dispatcher makes the player automatically enter Free Cursor Mode. It is not possible to switch back free cam until the event dispatcher signals that close up mode has ended.
A UI element in the form of a close button appear in the upper right corner of the screen. Clicking it ends close-up mode.






Variables contained within BP_CloseUp

Please excuse the mess while we are under construction