PyCAPGE: A Python-Based Adventure Game Engine for Preserving SCUMM Mechanics and Teaching Object-Oriented Programming
Abstract
The teaching of Object-Oriented Programming (OOP) presents a pedagogical paradox: bridging the gap between abstract theoretical concepts and tangible, engaging implementations remains a significant challenge. Historically, the Point-and-Click adventure game genre has offered an ideal model of discrete state-based systems; however, its educational potential remains largely untapped. The primary obstacle lies in the available tooling: industry-standard engines, such as Unity or Godot, employ a "black box" architecture that is prohibitively complex for introductory courses, effectively obscuring the fundamental logic of the software lifecycle. Conversely, original historical engines are often technologically obsolete or inaccessible for modern academic inquiry. This paper introduces PyCAPGE (Python Classic Adventure Point and Click Game Engine), a lightweight, open-source engine built upon the Pygame library. Unlike visual scripting tools, PyCAPGE adopts a "Glass Box" philosophy, deliberately exposing its internal architecture to the user. The engine faithfully recreates classic SCUMM-style mechanics—including finite state machines, resource management, and navigation via bitmasks—reimplemented according to modern software architecture standards. This work offers a twofold contribution: PyCAPGE functions as a digital preservation artifact documenting historical development techniques, while simultaneously serving as an educational scaffold with low cognitive load, where advanced concepts such as inheritance, polymorphism, and serialization are demonstrated in a visual, practical manner.
Fields of Study & Subjects
Teaching and Learning Programming
Computational Physics and Python Applications
Software Engineering Research
Publication details
- Journal / source
- Zenodo (CERN European Organization for Nuclear Research)
- Publication date
- 8 January 2026
- Language
- EN
- Document type
- Preprint