Alexander Wedman
The Painter Logo
The PainterEngine: UnityLanguage: C#Duration: 7 weeksTeam Size: 11
itch.io
Description

The Painter is a short, narrative-focused casual platformer developed in Unity. The game is simple, yet fairly technical as each painting is it's own 3D-scene, which is then projected onto a 2D-plane with cleverly made assets and shaders to imitate a painting. Due to the short development time and our iterative process, the final game ended up slightly different from the initial pitch.

Process

The first two of the seven weeks were designated for pre-production. During the development we used Perforce for version control and a physical scrum-board, along with daily stand-ups and weekly reflections.

Responsibilites

Part of my initial responsibilites were prototyping some of the systems we needed, which included a cross-scene puzzling system and an interactable system. I worked on gameplay elements such as the spline movement and the teleporter, as well as tools such as the trigger box and a scene loader in order to improve the workflow.

Spline Movement
The white line represents the spline path, the orange boxes are triggers.
SplineMovement

I developed a spline-movement system which was used by the designers to move the character in depth. Manual depth-movement was not an option since the player's sense of depth is completely removed as the world is orthographically projected onto a canvas. It works by using two trigger boxes, with the spline built between them. Each trigger act as both entrances and exits, allowing the player to move in either direction.


When the player enters, the spline moves the player along the path in depth, without interfering with the vertical or horizontal axes, allowing the player to jump and walk normally. A speed variable was added to accomodate for sharp angles resulting in the character moving absurdly fast.

Mover & Motors
The dotted white line represents linear movement, while the red line is an approximate path evaluated from Motor.
MoverLinearMoverMotor

The intent behind the Mover was to allow any object to be moved in a simple manner without creating unique scripts for each object. It's settings are exposed in the inspector, and custom handles are presented in the Scene-view. It's sister-class MoverMotor, which are attached as Scriptable Objects, determine how the object moves by evaluating the position along the path.

Trigger Boxes
Trigger colliders with additional functionality and quality-of-life improvements.
TriggerBox

Trigger boxes are used as a proxy for trigger colliders, using custom foldable Unity Events to expose them to the designers in a manageable way. It contains other functionality to enhance their usability, most of which are self-explanatory.


Enabling Visualize renders an orange box in the Scene-view. It was added since colliders in Unity are tedious to see and select, which became problematic as the complexity of the scenes increased.

Teleporter
Two teleporters using the aforementioned trigger boxes, allowing movement between them.
Teleporter

The Teleporter is used to move the character between paintings. It can be used by specifying a target object or destination coordinates. Force Ground moves the player downwards until they hit the ground, ensuring that they don't spawn in the air and fall down. The script also ensures the player is never stuck in a teleporter loop, should they be moved to another teleporter.


A simple editor script was added to ensure the functionality was obvious to the user, disabling Destination if Target is set. A dotted line is also drawn in the Scene-view when the object is selected, making it clear where the player is going.