Project Duality

Project Duality

Project Duality is a cooperative 3D adventure puzzle game, developed in Unreal Engine 5. It is currently in development as my bachelor thesis project at the University of Applied Sciences Vorarlberg. This project was originally inspired by titles like It Takes Two and Split Fiction. The projects purpose is to test whether my mechanics and design choices make an interdependency among players perceptlible.

Multiplayer

The game is designed to be played cooperatively among two players. Connection is done by making use of the Steam integration and the Advanced Sessions plugin.

Multiplayer

Screenshot of the multiplayer gameplay of Project Duality.

Achieving smooth and failsafe Multiplayer functionality has been a challenging but was also a very rewarding experience. The main issue therein has been to understand the Advanced Session plugins intended command sequence and to internalize when and how Server RPCs need to be called, where to take advantage of RepNotifier Variables and how to prevent jittering on the client. There are many things to be considered, however, once a feeling has been developed and an understanding accomplished, it turns comparatively manageable in hindsight.

Moving Objects

How to move objects in a multiplayer environment, without causing desynchronizations, jittering or similar problems while physics are involved?

Moving Objects

Screenshot of an object being moved in Project Duality.

By letting the player hold a target-Vector where the carried object should be moved to. The server will consider all conditions and tell the object to move itself towards the target location with a calculated velocity. Using the physics system for this purpose, allows us to circumvent jittering, because we can let the physics run predictive on the client and let them be corrected by the server if necessary.

Shrink / Enlarge

This is the respective players primary ability - Player 1 has the ability to shrink objects, while Player 2 can enlarge them.

Shrink / Enlarge

GIF showing the shrink and enlarge mechanic.

Most interactable objects can be shrunk or enlarged. Doing so lets them change their size between three states: small, medium and large. Whenever the state changes, a OnRep function starts an linear interpolation to its new scale. This is further incorporated in puzzles, by making certain sizes required to trigger specific pressure plates.

Portals

This is the respective players secondary ability - The players can activate a portal attached to them, similar in concept and functionality to a movable black hole and its counterpart, a white hole.

Portals

GIF showing the portal teleportation mechanic.

Player 1 can activate a black hole, that pulls interactable objects and teleports them to the white hole. The white hole, commanded by Player 2 ejects the teleported object with the same velocity in the view direction of the player. This white hole can furthermore push interactable objects away. This mechanic is used for multiple puzzles, either as a means of transportation between split players or to move objects from potentially elsewise unreachable places. In one of the challenges, it is further used to let players shoot targets by accelerating objects through the wormhole.

GIF showing the Black and White hole push / pull dynamic

GIF showing the Black and White hole push / pull dynamic.