Cross platform point-and-click 2D adventure game engine

pip install pyvida==7.0.2



an easy-to-use fully-featured cross platform point-and-click adventure game engine


Currently undergoing a large refactor and main branch is unstable.


  • cross platform - windows, mac and linux
  • open source
  • clean scripting language (python) allows full control of actors and menu
  • in-game scene editor (linux only)
  • unlimited scenes and actors
  • actors have unlimited animations
  • full logging for errors, warning and debug
  • smart loading for handling art assets so you can concentrate of your plotting
  • menus and inventories built in
  • fully scriptable menus
  • easily switch between playable characters
  • supports any image and sound formats supported by SDL (we recommend PNG for images and OGG for sound)
  • supports any screen size
  • supports any colour depth
  • alpha blending on graphics
  • walkareas, hotspots, walk behinds, etc




Mac OS



python3 install --user pyvida


  • pyglet 1.5.11
  • pygame (optional - for music and sound if pyglet doesn't work)
  • python 3.3+

Older versions of pyvida before 6.2.0 need the older pyglet 1.3:

pip install --upgrade

Writing a game in pyvida

Please refer to the documentation in pyvida/docs

Empty Project

    app = Game(name="basic project", fullscreen=False)
    app.init()  # initialise sound and graphics  # start the event loop

Game with one scene

    app = Game(name="basic project", fullscreen=False)

    scene = Scene("main interface")
    app.add(scene)  # set the camera to the scene

    app.init()  # initialise sound and graphics  # start the event loop

Queue_method decorator

The game engine uses an internal event queue for game scripts.

To create an method that will be called in the correct place in the script, add the @event_method decorator and create an "immediate_" method, which will be called when the even queue is ready to call that event.


You can contribute to pyvida by cloning the github repository.

To make a scripting event, on your class add a:

def on_(self) method. self.busy += 1 # to make the event block the next event for that actor = True # to make the event block all other events in the game.

pip3 install -e . --no-binary :all:


pip3 install pytest-cov pytest-mock --user

Run the tests


Code coverage

pytest --cov=pyvida



  • added unit tests
  • replaced use_one_events metaclass with queue_event decorator
  • removed deprecated retalk and respeech
  • removed deprecated walkareas
  • replaced opacity and alpha handing with single set_alpha and get_alpha methods
  • when adding modals, they must be added to game object first.
  • removed deprecated WalkArea (deprecated since pyvida4)
  • remove pickle code, replaced with json for loading and save games and settings