
Ubisoft University Contest 2024
DREAM
Online co-op game built in 10 weeks for the Ubisoft university contest. Playtested at Ubisoft Montreal.



About
You play as two new members of the DREAM organization, a group dedicated to making every child's dream come true. Your job is to set up a child's dream on stage without getting spotted. Built in 10 weeks for the Ubisoft 2024 university contest with a team of 8.

The Ubisoft University Contest
The Ubisoft University Contest is a yearly competition where student teams from different universities across Canada develop a playable game prototype in 10 weeks. The theme and constraints are set by a jury of Ubisoft professionals, and at the end, every team demos their game at Ubisoft Montreal alongside the other participating schools.

For the 2024 edition, the imposed theme was "dream." On top of that, the jury set six constraints that every game had to meet:
- An online multiplayer experience with coordinated interaction mechanics
- At least one element that varies from session to session based on the previous one
- At least one AI-driven gameplay mechanic
- A resource exhaustion design concept
- An E rating
- An accessibility feature
These constraints shaped every design and technical decision we made. The online co-op requirement is what pushed me to build the networked grab system, the custom physics, and the client-side prediction, all of which I cover below.
Networked Two-Player Grab System
The core mechanic is grabbing and carrying objects together online. Both players can grab the same cardboard box at the same time and move it around the map. Since the game is online multiplayer, the big challenge was hiding latency so the interaction feels smooth.

Each Player Simulates Their Own Version of the Object
To keep the interaction fluid, each player has their own local version of the grabbed object, oriented relative to both players on their side of the game. This way, latency is imperceptible when a player grabs an object. The tricky part is making sure the grabbed object doesn't desynchronize between clients.
Custom Physics Simulation
After quick testing, we found that Unreal's built-in physics replication didn't work well at all. The engine's physics aren't deterministic, so two clients simulating the same scene would diverge over time. For a co-op game where both players interact with the same objects, that's a dealbreaker.
I replaced UE5's physics for gameplay-critical objects with a simple custom simulation. It's not a full physics engine, but it's predictable. Both clients run the same math and get the same results. We reimplemented:
- Object gravity and falling
- Object-to-scenery collisions
- The interaction system on top of it
Less realistic, but perfectly synchronized.
Interaction System
Players can interact with all sorts of objects to progress through the game. The main use is grabbing cardboard boxes, but we also designed the system to support levers, lamps, and curtains, though not all of these made it into the final prototype.
Interaction Zone
Each player has an interaction zone, a capsule around them. Any object that enters this zone becomes interactable.
Visual Feedback
Each interactable object has functions to show or hide visual feedback when a player enters its interaction field, so you always know what you can interact with.
Client-Side Prediction
Interaction requests are predicted locally. The game applies the result immediately without waiting for server confirmation. If the server disagrees, the action gets rolled back.
Task & Scoring System
Players must complete tasks throughout the game. In the final version, these are cardboard boxes that need to be carried to specific spots on stage. We also planned other task types like aiming and orienting spotlights or changing the stage backdrop, but they didn't make it into the prototype.

All task types and cardboard variants are stored in data tables, making it easy for designers to modify or add new ones without touching code.

Task Timing & Score Bonus
Each task has a lifetime. When a task is completed, the remaining time is converted into a score bonus. Finish faster, score higher.
Cardboard Placement
Tasks that require cardboard boxes add markers to the stage showing exactly where to place them.
And a Few More Things
Voice Chat
I integrated voice chat through Epic Online Services so players can communicate directly in-game. No need for Discord or external tools, you just talk.
End Game Sequence
At the end of the game, players need to have reached a quota to avoid getting fired. The sequence includes a speech from the boss based on performance.
Player Synchronization
Both players are held at a loading screen until everyone is ready, then the game starts simultaneously. The clock is server-authoritative.