After School
All Projects

Ubisoft University Contest 2023

After School

Splitscreen third-person shooter made in 10 weeks for the Ubisoft contest. Released on Steam.

Unreal Engine 5
Gameplay & Online Programmer
8 people
10 weeks
2023-04-01
UE5TPSSplitscreenArcadeUbisoft Contest
Best Art Direction & Production5 nominations
After School screenshot 1
🔍 Zoom
After School screenshot 2
🔍 Zoom
After School screenshot 3
🔍 Zoom

About

A splitscreen third-person shooter where you play as a kid with a water gun in a schoolyard. Built in 10 weeks for the 2023 Ubisoft university contest with a team of 8 and shipped on Steam.

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. Students and staff from the studio got to play our game directly.

Ubisoft contest award

For the 2023 edition, the imposed theme was "Arcade." The constraints were:

  • An online leaderboard
  • A creation/destruction mechanic
  • A gravity-change mechanic
  • Two concept arts

The leaderboard constraint is what led me to build the Flask REST API and the reusable HTTP/Leaderboard plugins. The arcade theme pushed us toward a fast, score-driven loop with the water gun and spider egg systems.

Character Customization System

Players can fully customize their character (gender, outfit, and gear) to become the most respected kid on the playground. In a splitscreen game where everyone shares the same screen, being able to tell your character apart matters. The system swaps meshes and materials at runtime based on the player's selections.

Character customization screen Cosmetic variation Cosmetic variation

When a player kills a boss, they earn a coin. That coin goes into a claw machine to win new gear, a fun loop that ties progression to the arcade theme.

Data-Driven Cosmetics

All cosmetic items are defined in data tables with name, mesh, material, category, rarity, and drop rate. Designers can add new items or tweak drop rates without opening the codebase. The system reads from these tables at runtime to populate the shop and handle unlocks.

Cosmetic data asset

Each item has a drop rate that feeds into the unlock system. When a player earns a reward, the game rolls against the drop table to determine what they get. Rarer items have lower drop rates, giving players something to chase. The customization UI supports two players so each can pick their cosmetics independently.

Online Leaderboard & REST API

The online leaderboard is backed by a Python Flask REST API that I built and deployed. Players submit their scores at the end of a run, and the API stores them in a database. The leaderboard screen in-game fetches the top scores and displays them with player names and ranks.

Leaderboard screen

Reusable HTTP Plugin

Making HTTP requests from inside Unreal isn't straightforward out of the box. I built a dedicated HTTP plugin that wraps UE5's HTTP module into a clean, reusable API. It handles request construction, response parsing, error handling, and retry logic.

The plugin became a building block. The leaderboard system is built on top of it, but it's generic enough to handle any REST API. I packaged it as a standalone plugin so it can be dropped into future projects.

Reusable Leaderboard Plugin

On top of the HTTP plugin, I built a dedicated leaderboard plugin that handles the full flow: score submission, leaderboard fetching, caching, and UI binding. It's designed to work with any backend that follows a simple REST contract. Swap the URL and you're good.

Unreal Leaderboard plugin

This layered approach (HTTP plugin into Leaderboard plugin) means each piece is independently reusable. The HTTP plugin works for any online feature, and the leaderboard plugin works with any HTTP backend.

And a Few More Things

Water system

Water Management

The water gun is the core weapon, similar to Mario Sunshine. Players refill at fountains and lakes. Different weapons consume water at different rates, adding strategy to weapon choice.

Spider eggs

Spider Egg Spawning

At night, spider eggs spawn around the map. Ignore them and they hatch. The spawn rate escalates the longer they're left alone. Do you focus on the objective or deal with the eggs?

Playtesting session

Playtesting Pipeline

Every two weeks, we ran playtesting sessions with students from another school. Having a structured cadence meant we always had fresh feedback to act on.