Whispers at Victor's Manor

Branching Narrative Mystery Game · FP016 Computer Science · Group Project · Python

PythontkinterOOPData StructuresGraph AlgorithmsAgileTeam Lead

Overview

A desktop mystery game built in Python where the player investigates a suspicious death at Victor's Manor. Choices branch the narrative across 40+ scenes and lead to four distinct endings. Built as a group project for FP016 Computer Science, where I served as team lead and core systems developer.

The game features a full tkinter GUI with a dark theme, per-scene background images, a live evidence panel, and an algorithm analysis dashboard that exposes the underlying data structures to the player.


What We Implemented

Object-Oriented Programming

typed classes & inheritance

Custom Data Structures

Stack · Priority Heap

Graph Algorithms

DFS · BFS · Topological Sort

Branching Narrative Engine

40+ story nodes · 4 endings

tkinter GUI

dark theme · tab views · popups

Agile Development

Scrum-based · 4-person team


Team & Responsibilities

Hlib (me)Team Lead · Core Systems

Implemented core game systems using OOP, custom data structures, state management, clue tracking, evidence analysis, and team coordination.


What I Built

Story System

Designed the object-oriented architecture used to represent and manage 40+ branching story scenes — each scene a typed class guaranteeing consistent structure across the codebase.

Data Structures

Implemented a custom Stack powering the rewind mechanic (LIFO, O(1) undo) and a Priority Heap for clue management, ensuring the most important evidence always surfaces first.

Analysis Dashboard

Built an interactive four-tab dashboard visualising DFS reachability, BFS shortest paths to each ending, evidence timelines, and topological clue ordering.


What I Learned


Downloads

PDF

Technical Report

Design decisions, implementation details, and testing evidence for the components I built.

DOC

User Guide

Step-by-step guide covering installation, controls, and gameplay mechanics.

.PY

Source Code

Full Python source (~1800 lines). My contributions are Sections 1 and 5, clearly marked in comments. Requires Python 3.12+ and Pillow.