Latest Versions

The latest version of Example.activity is v0.3. The latest version of spyral is v0.9.6


To update spyral to a newer version than the one included with your launcher, remove libraries/spyral and replace with the downloaded version.

Git Repositories

The repositories are hosted on github:




  • [sprites] Fixed killing a sprite clobbering other events
  • [animations] Fixed animations not firing the right events
  • [core] Fixed error message being triggered when game ends (“spyral.quit cannot be found”)


  • [collision] Fixed collision detection for forms (e.g., buttons, text input) and sprites when the dev-launcher is scaled
  • [forms] Fixed using tabs to navigate forms crashing the game
  • [mouse] Fixed mouse motion reporting the accurately scaled position
  • [forms] Enhanced error message for declaring forms.


  • [mouse] Fix mouse coordinates in mouse events being incorrect with dev-launcher’s scaling
  • [scene] Fix background image not updating on the screen even after it’s been initially set
  • [events] Fix Minimizing your window and then maximizing no longer crashes with an event error


  • Massive, massive changes to the Spyral API
  • New classes like Views, Actors, etc.
  • Basicallly, it’s a whole new system


  • [animation] Fix a logic bug in animations that would cause them to not catch an exception they should
  • [camera] Fix a broken return value on camera.get_rect()
  • [docs] Fix a documentation bug which used the wrong terminology
  • [image] Fix image.get_size() to return a Vec2D instead of a 2-tuple
  • [image] Fix image.draw_lines() not respecting the width parameter
  • [image] Fix an issue where changes to images would not be rendered to the screen
  • [image] Fix color channels being swapped on certain systems, in particular under scaling
  • [rect] Fix a bug which didn’t allow rects properly in the constructor to rects
  • [rect] Fix a bug with rect.inflate and rect.inflate_ip which would cause a crash
  • [sprite] Fix sprite.width and sprite.height
  • [sprite] Fix sprite.visible not hiding sprites which were marked as static
  • [sprite] Fix AggregateSprites only rendering some children
  • [sprite] Fix AggregateSprites requiring a group be passed on their creation
  • [sprite] Fix AggregateSprites not being able to have AggregateSprites as children
  • [vector] Fix Vec2D’s support for being tested inside containers based on hashes (i.e. sets)
  • [vector] Fix Vec2D’s support for being divided by a constant or another 2-tuple/Vec2D

New Features

  • Add spyral.Image.draw_arc()
  • spyral is now compatible with pypi and available in the cheeseshop
  • Add support for object-attribute access for built-in event types
  • A new rendering backend which is easier to maintain
  • :above and :below modifiers for layers
  • Add a more complete spyral.event.keys object
  • Add official support for LiveEventHandler and ReplayEventHandler, with documentation

v0.2 - 10/02/2012

Backwards Incompatible Changes

  • spyral.Sprite and spyral.Group now must have dt passed in as their first argument. (This was in the examples anyways)
  • Remove sprite.blend_flags, was broken anyways. May be back in future release

New Features

  • Add spyral.Vec2D, sprite.pos and sprite.scale are now Vec2D automatically
  • Add spyral.Signal to spyral, as well as a number of useful signals in the docs
  • Add draw_image, rotate, copy, scale, crop, flip to spyral.Image
  • Add support for anchor-based positioning in spyral.Image methods
  • Add sprite.scale, sprite.scale_x, sprite.scale_y, and sprite.angle, with animation support
  • Add sprite.flip_x and sprite.flip_y
  • Animations no longer require AnimationSprite or AnimationGroup objects, they work on standard sprites and groups
  • Add spyral.Font
  • Add AggregateSprite

Bug Fixes

  • Fix VIDEORESIZE events crashing spyral
  • Fix a bug with parallel animations not evaluating their ending condition
  • Fix a bug with group.empty calling remove on sprites
  • Fix a bug where sprites were being set static even when they weren’t
  • Fix a bug where static sprites were redrawn without clearing behind them
  • Fix a frame count bug in the Iteration animator, making it more smooth
  • Fix the import system, allowing the import of spyral’s submodules again
  • Fix a bug in rect.move_ip, previously the offsets would become the new coordinates
  • Fix a limitation on the number of layers which a game could have


  • Remove the legacy spyral.util module
  • Remove spyral/docs in favor of documentation in platipy
  • Remove sprite.blend_flags, was broken anyways. May be back in future release
  • Remove the antiquated and broken examples/
  • Major revisions to built-in documentation.

v0.1.1 - 09/19/2012

  • Fix group.remove() to ensure sprites are no longer drawn upon removal
  • Fix rect.collide_rect(), results were previously inverted.

v0.1 - 09/18/2012

  • First release


v0.2 - 10/02/2012

  • Fix generation of PNGs for profiling paths with spaces in them
  • Fix launcher loading games before the directory was initialized
  • Bump spyral to v0.2

v0.1 - 09/18/2012

  • First release

Contact Developers / Submit Changes

If there is a bug in spyral or Example.activity, please do one of the following: