PyCAPGE (Python Classic Adventure Point and Click Game Engine) is a versatile, open-source framework designed for creating retro-style 2D graphic adventures using Python and Pygame. Inspired by the golden age of SCUMM games, it features a customizable 9-verb interface and robust inventory management.
Key features include a Scene Manager supporting parallax scrolling, walk-behind masks, and depth-based character scaling. It implements intelligent Pathfinding to navigate complex environments automatically. The engine natively supports Multi-Character gameplay, allowing dynamic switching between protagonists.
Developers can build rich narratives using the branching Dialogue System and a Cutscene Manager for scripted events. The architecture is data-driven: texts and definitions are separated into YAML files for easy localization. Includes a JSON Save/Load system and debug console.
Features
- Classic Interface: Implements a customizable 9-verb interaction system (Look, Pick Up, Use, Talk, etc.) and a dedicated inventory management UI.
- Advanced Scene Management: Supports multi-layer parallax scrolling backgrounds, walk-behind masks, and dynamic character scaling based on depth (Y-axis).
- Smart Pathfinding: Integrated pathfinding system (Euclidean/Manhattan) using navigational masks to handle character movement and obstacle avoidance automatically.
- Multi-Character Support: Built-in capability for multiple playable characters (e.g., swapping between characters like "Gilo" and "Bart") with distinct inventories and interaction logic.
- Dialogue System: A robust, branching dialogue tree system with support for conditional options, distinct NPC responses, and scrolling selection menus.
- Cinematic Tools: A CutsceneManager for scripting non-interactive sequences, intros, and endings with timed events, camera movements, and animations.
- Dynamic Lighting & Atmosphere: Support for lightmaps, tinting characters based on environment, and ambient animations (particle effects, background sprites).
- Localization Ready: Complete separation of code and text. All game strings (items, dialogues, menus) are loaded from YAML files, enabling easy translation into multiple languages.
- Save/Load System: JSON-based serialization to save game state, inventory, and variables with a visual slot interface.
- Developer Tools: Includes an in-game debug console, collision visualization (F-keys), and hot-reloading of assets.