Unipress
  • Installation Guide
    • Prerequisites
      • System Requirements
      • Required Software
    • Installation Methods
      • Method 1: Development Installation (Recommended)
        • 1. Clone the Repository
        • 2. Install uv Package Manager
        • 3. Install Dependencies
        • 4. Verify Installation
      • Method 2: Docker Installation
        • 1. Clone the Repository
        • 2. Build Docker Image
        • 3. Run with Docker Compose
        • 4. Run Individual Container
    • Platform-Specific Instructions
      • Linux (Ubuntu/Debian)
        • Install System Dependencies
        • Audio Support (Optional)
      • macOS
        • Install System Dependencies
        • Audio Support
      • Windows
        • Install System Dependencies
        • Audio Support
    • Configuration
      • Initial Setup
        • 1. Create Configuration File
        • 2. Customize Settings
        • 3. Set Up Logging
      • Environment Variables
    • Verification
      • Test Installation
        • 1. Run Demo Game
        • 2. Run Specific Game
        • 3. Check Audio
        • 4. Verify Dependencies
    • Troubleshooting
      • Common Issues
        • Python Version Issues
        • Audio Issues
        • Display Issues
        • Permission Issues
      • Getting Help
        • Check Logs
        • Debug Mode
        • Community Support
    • Next Steps
    • Uninstallation
      • Remove Installation
      • Remove Dependencies
  • Quick Start Guide
    • Overview
    • Prerequisites
    • Installation
    • Your First Game
    • Next Steps
    • Troubleshooting
  • Development Setup
    • Overview
    • Prerequisites
    • Development Installation
    • Development Tools
      • Code Quality
      • Commands
    • Project Structure
    • Development Planning
      • When to Create Plans
      • Plan Management Workflow
      • Claude Code Development Tools
      • Git Flow Requirements
    • Contributing
    • Next Steps
  • Creating Your First Game
    • Overview
    • Prerequisites
    • Game Concept
    • Implementation Steps
      • 1. Create Game Class
      • 2. Implement Game Logic
      • 3. Add Rendering
    • Next Steps
    • Complete Example
  • API Reference
    • Overview
    • Core Framework
      • Base Game Framework
        • GameMeta
        • BaseGame
      • Asset Management
        • AnimationFrame
        • Animation
        • AssetManager
        • get_asset_manager()
        • get_texture()
        • load_animation()
        • get_sound()
        • preload_assets()
        • clear_assets()
      • Sound System
        • SoundCategory
        • SoundEvent
        • SoundManager
      • Settings Management
        • get_default_settings()
        • load_toml_file()
        • merge_settings()
        • load_settings()
        • get_setting()
      • Logging System
        • init_logger()
        • get_logger()
        • log_game_event()
        • log_player_action()
        • log_performance()
        • log_error()
      • High Scores
        • HighScoreManager
        • get_high_score_manager()
        • get_high_score()
        • update_high_score()
        • is_new_high_score()
      • Game Server
        • run_game_in_thread()
        • health()
        • run_game()
        • stop_game()
        • game_status()
        • list_games()
        • main()
      • Messages
        • MessageLoader
        • load_messages()
    • Client Interface
      • UnipressClient
        • UnipressClient.__init__()
        • UnipressClient.health_check()
        • UnipressClient.list_games()
        • UnipressClient.run_game()
        • UnipressClient.stop_game()
        • UnipressClient.game_status()
        • UnipressClient.wait_for_game_completion()
      • main()
    • Game Implementations
      • Demo Jump Game
        • Obstacle
        • DemoJumpGame
        • main()
      • Jumper Game
        • BackgroundLayer
        • AnimatedSprite
        • Obstacle
        • JumperGame
    • UI Components
      • End Game Screen
        • EndGameAction
        • EndGameScreen
    • Package Information
    • Module Index
      • BaseGame Class
        • Overview
        • Class Definition
        • Inheritance
        • Core Features
        • Abstract Methods
        • Concrete Methods
        • Configuration
        • Usage Example
        • Best Practices
        • Related Classes
  • BaseGame Class
    • Overview
    • Class Definition
      • GameMeta
        • GameMeta.__init__()
        • GameMeta.__instancecheck__()
        • GameMeta.__subclasscheck__()
        • GameMeta._abc_caches_clear()
        • GameMeta._abc_registry_clear()
        • GameMeta._dump_registry()
        • GameMeta.mro()
        • GameMeta.register()
      • BaseGame
        • BaseGame.__init__()
        • BaseGame.get_difficulty_settings()
        • BaseGame.get_message()
        • BaseGame.play_sound_event()
        • BaseGame.play_custom_sound_event()
        • BaseGame.start_game_sound_timer()
        • BaseGame.update_sound_timer()
        • BaseGame.complete_game_start()
        • BaseGame.check_and_play_high_score_sound()
        • BaseGame._complete_life_lost_continue()
        • BaseGame.update_life_lost_effects()
        • BaseGame.should_draw_player()
        • BaseGame.is_game_paused()
        • BaseGame.on_mouse_press()
        • BaseGame.on_key_press()
        • BaseGame.handle_life_lost_continue()
        • BaseGame.on_action_press()
        • BaseGame.reset_game()
        • BaseGame.reset_animations()
        • BaseGame.start_game()
        • BaseGame.lose_life()
        • BaseGame.end_game()
        • BaseGame._restart_game()
        • BaseGame._exit_game()
        • BaseGame.draw_heart()
        • BaseGame.draw_hearts()
        • BaseGame.draw_ui()
        • BaseGame.CURSOR_CROSSHAIR
        • BaseGame.CURSOR_DEFAULT
        • BaseGame.CURSOR_HAND
        • BaseGame.CURSOR_HELP
        • BaseGame.CURSOR_NO
        • BaseGame.CURSOR_SIZE
        • BaseGame.CURSOR_SIZE_DOWN
        • BaseGame.CURSOR_SIZE_DOWN_LEFT
        • BaseGame.CURSOR_SIZE_DOWN_RIGHT
        • BaseGame.CURSOR_SIZE_LEFT
        • BaseGame.CURSOR_SIZE_LEFT_RIGHT
        • BaseGame.CURSOR_SIZE_RIGHT
        • BaseGame.CURSOR_SIZE_UP
        • BaseGame.CURSOR_SIZE_UP_DOWN
        • BaseGame.CURSOR_SIZE_UP_LEFT
        • BaseGame.CURSOR_SIZE_UP_RIGHT
        • BaseGame.CURSOR_TEXT
        • BaseGame.CURSOR_WAIT
        • BaseGame.CURSOR_WAIT_ARROW
        • BaseGame.WINDOW_STYLE_BORDERLESS
        • BaseGame.WINDOW_STYLE_DEFAULT
        • BaseGame.WINDOW_STYLE_DIALOG
        • BaseGame.WINDOW_STYLE_OVERLAY
        • BaseGame.WINDOW_STYLE_TOOL
        • BaseGame.WINDOW_STYLE_TRANSPARENT
        • BaseGame._create()
        • BaseGame._create_cursor_from_image()
        • BaseGame._dispatch_frame()
        • BaseGame._dispatch_updates()
        • BaseGame._get_handlers()
        • BaseGame._on_resize()
        • BaseGame._remove_handler()
        • BaseGame._translate_button()
        • BaseGame.activate()
        • BaseGame.aspect_ratio
        • BaseGame.background_color
        • BaseGame.caption
        • BaseGame.center
        • BaseGame.center_window()
        • BaseGame.center_x
        • BaseGame.center_y
        • BaseGame.clear()
        • BaseGame.close()
        • BaseGame.config
        • BaseGame.context
        • BaseGame.ctx
        • BaseGame.current_camera
        • BaseGame.current_view
        • BaseGame.default_camera
        • BaseGame.delta_time
        • BaseGame.dispatch_event()
        • BaseGame.dispatch_events()
        • BaseGame.dispatch_pending_events()
        • BaseGame.dispatch_platform_event()
        • BaseGame.dispatch_platform_event_view()
        • BaseGame.display
        • BaseGame.dpi
        • BaseGame.draw()
        • BaseGame.draw_mouse_cursor()
        • BaseGame.event()
        • BaseGame.event_types
        • BaseGame.fixed_delta_time
        • BaseGame.fixed_time
        • BaseGame.flip()
        • BaseGame.fullscreen
        • BaseGame.get_caption()
        • BaseGame.get_clipboard_text()
        • BaseGame.get_framebuffer_size()
        • BaseGame.get_location()
        • BaseGame.get_pixel_ratio()
        • BaseGame.get_requested_size()
        • BaseGame.get_single_property()
        • BaseGame.get_size()
        • BaseGame.get_system_mouse_cursor()
        • BaseGame.has_exit
        • BaseGame.height
        • BaseGame.hide_view()
        • BaseGame.invalid
        • BaseGame.maximize()
        • BaseGame.minimize()
        • BaseGame.on_action()
        • BaseGame.on_close()
        • BaseGame.on_draw()
        • BaseGame.on_fixed_update()
        • BaseGame.on_key_release()
        • BaseGame.on_mouse_drag()
        • BaseGame.on_mouse_enter()
        • BaseGame.on_mouse_leave()
        • BaseGame.on_mouse_motion()
        • BaseGame.on_mouse_release()
        • BaseGame.on_mouse_scroll()
        • BaseGame.on_resize()
        • BaseGame.on_scale()
        • BaseGame.on_update()
        • BaseGame.parse_filenames()
        • BaseGame.pop_handlers()
        • BaseGame.projection
        • BaseGame.push_handlers()
        • BaseGame.rect
        • BaseGame.register_event_type()
        • BaseGame.remove_handler()
        • BaseGame.remove_handlers()
        • BaseGame.resizeable
        • BaseGame.run()
        • BaseGame.scale
        • BaseGame.screen
        • BaseGame.set_caption()
        • BaseGame.set_clipboard_text()
        • BaseGame.set_draw_rate()
        • BaseGame.set_exclusive_keyboard()
        • BaseGame.set_exclusive_mouse()
        • BaseGame.set_fullscreen()
        • BaseGame.set_handler()
        • BaseGame.set_handlers()
        • BaseGame.set_icon()
        • BaseGame.set_location()
        • BaseGame.set_maximum_size()
        • BaseGame.set_minimum_size()
        • BaseGame.set_mouse_cursor()
        • BaseGame.set_mouse_platform_visible()
        • BaseGame.set_mouse_position()
        • BaseGame.set_mouse_visible()
        • BaseGame.set_size()
        • BaseGame.set_update_rate()
        • BaseGame.set_visible()
        • BaseGame.set_vsync()
        • BaseGame.set_wm_class()
        • BaseGame.show_view()
        • BaseGame.size
        • BaseGame.style
        • BaseGame.switch_to()
        • BaseGame.test()
        • BaseGame.time
        • BaseGame.use()
        • BaseGame.view
        • BaseGame.viewport
        • BaseGame.visible
        • BaseGame.vsync
        • BaseGame.width
        • BaseGame.closed
        • BaseGame.headless
        • BaseGame.keyboard
        • BaseGame.mouse
    • Inheritance
    • Core Features
      • One-Button Input Constraint
      • Asset Management
      • Sound System
      • Settings Integration
      • Logging
    • Abstract Methods
      • setup()
      • update(delta_time: float)
      • on_draw()
    • Concrete Methods
      • Input Handling
        • on_key_press(key: int, modifiers: int)
        • on_mouse_press(x: int, y: int, button: int, modifiers: int)
      • Asset Management
        • load_assets()
        • get_sprite(name: str) -> arcade.Sprite
      • Sound Management
        • play_sound(category: str, name: str)
        • set_volume(volume: float)
      • Settings Management
        • get_setting(section: str, key: str, default=None)
        • set_setting(section: str, key: str, value: Any)
      • Game State Management
        • start_game()
        • end_game()
        • reset_game()
      • UI Rendering
        • draw_ui()
        • draw_text(text: str, x: int, y: int, color: arcade.Color, size: int = 20)
      • Logging
        • log_event(event: str, data: dict = None)
    • Configuration
      • Settings Structure
      • Asset Structure
    • Usage Example
    • Best Practices
    • Related Classes
  • System Architecture Overview
    • Introduction
    • High-Level Architecture
      • Core Framework
      • Game Layer
      • Infrastructure
    • Component Relationships
      • Detailed Architecture
    • Key Design Principles
      • 1. One-Button Constraint
      • 2. Modularity
      • 3. Configuration-Driven
      • 4. Asset Management
      • 5. Container-Ready
    • Technology Stack
    • Directory Structure
    • Data Flow
    • Security Considerations
    • Performance Characteristics
    • Extensibility
  • Architecture Decision Records (ADRs)
    • Overview
    • ADR Structure
    • Decision Categories
      • Development Tools & Standards
        • ADR-001: Dependency Management with uv
        • ADR-002: Game Framework Selection (Arcade)
        • ADR-003: Development Tools (Ruff, Pytest, MyPy)
        • ADR-005: Conventional Commits with git-cz
        • ADR-006: Type Checking with MyPy
      • Game Design & Architecture
        • ADR-004: Game Design Standards
        • ADR-008: Fullscreen Display Standard
        • ADR-009: Three Lives System
        • ADR-014: Obstacle Spacing Algorithm
      • Configuration & Data Management
        • ADR-010: Settings System with TOML
        • ADR-011: Internationalization with JSON
        • ADR-012: Logging System with Loguru
      • Asset & Media Management
        • ADR-013: Asset Management System
        • ADR-016: Comprehensive Sound System
      • Infrastructure & Deployment
        • ADR-017: Containerization with Docker and uv
        • ADR-018: HTTP Server Architecture
        • ADR-019: HTTP Server Framework Selection
      • Documentation & Quality
        • ADR-020: UML Documentation with PlantUML
        • ADR-021: Developer Documentation with Sphinx
        • ADR-022: Changelog Standards and Maintenance
        • ADR-023: Documentation Hosting Platform
    • Decision Making Process
      • When to Create an ADR
      • ADR Lifecycle
      • Review Process
    • Benefits of ADRs
      • For Current Development
      • For Future Maintenance
      • For Project Management
    • Related Resources
  • UML Diagrams
    • Overview
    • Available Diagrams
      • 1. Architecture Overview
      • 2. Class Hierarchy
      • 3. Data Flow
      • 4. Deployment Diagram
      • 5. Game Lifecycle
    • Diagram Conventions
      • Naming Standards
      • Visual Standards
      • Content Guidelines
    • Generating Diagrams
      • Prerequisites
      • Build Commands
      • Makefile Targets
    • Diagram Maintenance
      • Update Process
      • Version Control
      • Quality Checks
    • Using Diagrams
      • In Documentation
      • In Presentations
      • In Development
    • Advanced Features
      • Custom Themes
      • Include Files
      • Dynamic Content
    • Best Practices
      • Design Principles
      • Maintenance
      • Collaboration
    • Related Resources
Unipress
  • Search


© Copyright 2025, jgrynczewski.

Built with Sphinx using a theme provided by Read the Docs.