Skip to main content

renpy-rigging

A 2D skeletal rigging, posing, and animation system for Ren'Py — including a full visual editor and a cue-based film production pipeline.

Why renpy-rigging?

Ren'Py games typically display characters as static sprites — a handful of pre-drawn poses swapped in and out. If you want a character to breathe, gesture, walk across a room, or dance with a partner, you're either drawing every frame by hand or leaving it out.

renpy-rigging gives Ren'Py characters a skeleton. Separate PNG body parts connect at joints that rotate, scale, and blend between poses — the same technique 2D game engines use, but designed specifically for Ren'Py's visual novel workflow. You build characters in a visual editor, and the same rendering code runs in your game. No export step, no format conversion, no drift between what you author and what players see.

What you see in the editor is exactly what ships in your game.

What You Can Do

Animate characters from reusable parts

Draw body parts as individual PNGs, connect them at joints, and create a library of named poses. Blend between poses, loop idle animations, layer breathing over walking — all from the same set of art assets. Poses are composable deltas, so a "wave" pose only stores the arm rotation, not the whole body.

Dress and equip characters at runtime

Swap clothing with overlays (a shirt replaces the torso art) or attach independent objects with attachments (a gun docks to a hand joint with its own skeleton and animations). Both use named slots for clean mutual exclusion — equipping a tommy-gun automatically holsters the pistol.

Build complete environments

Compose backgrounds, layered props, placed characters, and ambient sound into scenes. Define named locations and scripted actions (curtain draws, day-to-night transitions) that trigger from your game script.

Direct multi-character sequences

The Film Studio uses a cue-based model inspired by theatrical lighting cues: cues run in sequence, tracks within a cue run in parallel, steps within a track run in sequence. Choreograph synchronized movement, camera pans, title cards, scrolling credits, and soundtracks — then play them in real time in Ren'Py or export to GIF/MP4.

Author everything visually

The Ren'Py Rigging Studio is a Ren'Py app with four screens — rig/pose editing, animation timeline, scene composition, and clip sequencing. Mouse-driven manipulation with keyboard nudging, undo/redo, and live preview. Because the editor uses the same renderer as your game, there's no WYSIWYG gap.

Quick Start

Install the runtime

pip install renpy-rigging

Load and display a character

init python:
    from renpy_rigging import RigRenderer

    vince = RigRenderer.from_directory("characters/vince")
# Static pose
show expression vince.show_pose("neutral") as vince:
    xalign 0.5 yalign 0.7

# Looping animation
show expression vince.play_animation("idle", loop=True) as vince:
    xalign 0.5 yalign 0.7

Use overlays and attachments

vince.add_overlay("broadway-brawlers-shirt")
vince.add_attachment("tommy-gun")
vince.set_attachment_pose("tommy-gun", "firing")

Load a scene

init python:
    from renpy_rigging import SceneManager, register_channels

    register_channels()
    scene_mgr = SceneManager(os.path.join(renpy.config.gamedir, "scenes"))
    scene_mgr.register_images()
$ scene_mgr.show("speakeasy")

See the Ren'Py Integration Guide for full setup and usage.

Asset Directory Layout

game/
  characters/
    vince/
      rig.json           # Skeleton and parts
      poses.json         # Named poses (deltas from neutral)
      animations.json    # Pose sequences with timing
      overlays.json      # Layered clothing/accessories
      attachments.json   # Bound props/weapons
      parts/             # PNG body part images
      overlays/          # Overlay images per set
      sounds/            # Sound effects
  attachments/
    tommy-gun/
      rig.json           # Attachment's own skeleton
      poses.json
      animations.json
      parts/
  scenes/
    speakeasy/
      scene.json         # Background, layers, placed entities
      parts/             # Scene prop images
  clips/
    stage-show/
      clip.json          # Cue-based multi-character sequence

All data is stored as human-readable, hand-editable JSON. See Data Formats for the specification of each file type.

Documentation

For Users

For Editor Users (Studio)

For Developers

  • Architecture — system components, rendering pipeline, and design principles
  • Data Formats — JSON specification for every asset type
  • Demo Overview — sample game and bundled assets

License

MIT License — see LICENSE for details.

Metadata

Release files for renpy-rigging 0.5.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for renpy-rigging 0.5.9
File Size Uploaded
renpy_rigging-0.5.9.tar.gz 112.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for renpy-rigging 0.5.9
File Interpreter ABI Platform
renpy_rigging-0.5.9-py3-none-any.whl Python 3 none any Details

Total release size: 234.4 kB

Release files / renpy_rigging-0.5.9.tar.gz

Download URL renpy_rigging-0.5.9.tar.gz
Size 112.8 kB
Tags Source
SHA-256 checksum
How to use checksums
01f1fb1d401f90c9db881721afc6f607ad02cee0e18c5011768f93a05010a5c9
BLAKE2b-256 checksum
How to use checksums
64a8732a22120a110dbe3a70775c0f816690a52cfcb9eca562c68d156597e7a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 31, 2026.

Transparency log

Release files / renpy_rigging-0.5.9-py3-none-any.whl

Download URL renpy_rigging-0.5.9-py3-none-any.whl
Size 121.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
982775d90d49508d9caef638b9b78801085cc95a438f260a1a7088ae827ec3e1
BLAKE2b-256 checksum
How to use checksums
a58b8a34dc4b242302f4fc26856a07747782c8c514cc3e3f127ad2b710703c0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 31, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.9 This release

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page