New page arrow icon

Ancient Olympics (2025)

Party

Minigames

Online

2-4 Players

Casual

Action

Under Development

Game Trailer

Role:

| Gameplay Programmer

| Designer

Team Size:

| 1 (Solo Developer)

Time Spent:

| 4 Weeks

Engine:

| Unity

A

N

C

I

E

N

T



O

L

Y

M

P

I

C

S

Overview

Ancient Olympics is a 2-4 player online party game that allows friends to compete in a plethora of minigames. The minigames include Jousting, Assassinations, Javelin Throwing, and Sword Fighting. I wanted to design each game to be quick and engaging, minigames should feel like they happen in rapid succession.

This project is fully networked using Unity's Netcode for Gameobjects and Unity services for relay, authentication, etc.

The art assets used in this project are all from Kenney assets (kenny.nl), I wanted to ensure that the art was consistent so I only selected pieces from that artist (Also the designs are fantastic!).

This project is inspired by party games like Unspottable, Gang Beasts, Mario Party, and others! I suddenly got the urge one day to develop a party game of my own to have fun playing with friends and.. suddenly this was the product!

State-Driven Character Controller

In developing the player character, I needed a system that would be able to seemlessly manage multiple states at any given moment. From previous projects, I've grown fond of the statemachine architecture, so it was no issue deciding this approach for this problem.

Online Lobby System

Before every game, players are held in an open environment where they are able to freely move around while waiting for the host to start. There is no ready-up system, but the host is unable to start until atleast one other client has connected. Players can start as a host by simply clicking the button and others can connect to that host through a lobby join code.

Client-Hosted Interactions

The game uses a Client-Hosted Server Model, chosen for its simplicity and alignment with the project’s small-scale, friend-focused multiplayer design. In this setup, the host validates all client actions through RPCs and keeps the session consistent using RPCs or Networked Variables. This approach avoids the complexity of dedicated server management while still providing reliable and efficient multiplayer interactions.

What I've Learned

I'm not perfect at designing multiplayer systems or even gameplay systems, but its incredibly fun!

It can be hard to create a design that stays within bounds of your project goal and doesn't build complexity as the project develops. I struggled early with network designs growing too rapidly and was in a constant balance struggle to create a structure that flows well. Building structure was hard but ultimately very rewarding.

Managing gameplay across a network is especially difficult if you don't properly utilize the right tools and take many... many precautions (repositories are a must). I found it more difficult to control interactions than to implement them.

I love this project and I am very proud to show this off to you!