npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pie-studio

v0.3.5

Published

PIE record, replay, observe, and input injection for ue-mcp

Readme

pie-studio

PIE record, replay, observe, and input injection for ue-mcp.

Install

ue-mcp plugin install pie-studio

This installs the npm package, deploys the native C++ module to your project's Plugins/ directory, and adds the plugin to your ue-mcp.yml. Rebuild the UE project before launching the editor.

Editor UI

PIE Studio adds a toolbar button group to the UE5 editor (next to the Play controls) and a dockable panel accessible from the three-dot dropdown or Tools > PIE Studio.

Toolbar

| Button | Action | |--------|--------| | Record (arm) | Arms the input recorder — waits for PIE to start, then captures all input | | Record + Play | Arms the recorder and immediately starts PIE | | Three-dot menu | Contextual options: arm, disarm, stop, open panel |

Panel Sections

Recorder — status display showing current state, recording ID, frame count, and elapsed time.

Time Scale — slider and quick-set buttons (1%, 10%, 25%, 50%, 100%, 200%) to control PIE playback speed. Persists across PIE restarts.

Recordings — lists all saved recordings with:

  • Play button to replay (arms replayer + active observation profiles, starts PIE, captures viewport frames, generates GIF)
  • Delete button
  • Collapsible GIF list per recording with Open (launches in default viewer) and Delete

Observation Profiles — manages UMCPObservationProfile data assets:

  • Checkbox toggles to mark profiles as active
  • Active profiles automatically observe during replay
  • Create, Edit (opens UE asset editor), Delete, Refresh
  • Multiple profiles run simultaneously, each producing independent output

Observation Profiles

Observation profiles are UDataAssets that control what gets sampled during replay. Create them from the panel or the Content Browser.

| Field | Description | |-------|-------------| | Tracked Values | Gameplay properties to observe (e.g. CharacterMovement.Velocity.X). Each can override the drift threshold. | | Tracked Actors | Actors to track by ID — position, rotation, velocity sampled each frame. | | Capture Pawn State | Sample pawn transform, velocity, movement state each frame. | | Capture Montage | Sample active anim montage name and position. | | Drift Thresholds | Minimum change to count as divergence. Filters physics/animation jitter. Position (cm), Rotation (deg), Velocity (cm/s), and a default for tracked values. |

GIF Capture

Every replay automatically captures viewport frames and encodes an animated GIF (no external dependencies — built-in LZW encoder). GIFs are saved to <recording>/captures/replay_<timestamp>.gif, scaled to max 720px wide.

MCP Actions

33 actions in the pie category (provisioned by the plugin; call as pie(action="...")):

  • Recordingrecord_arm, record_disarm, record_stop, record_status, record_list, record_read, record_delete, mark
  • Replayreplay_arm, replay_disarm, replay_stop, replay_status with drift tracking and viewport capture
  • Observationobserve_arm, observe_disarm, observe_stop, observe_status, observe_list, observe_read with profile-based sampling
  • Input injectioninject_input, inject_input_start, inject_input_update, inject_input_stop, inject_input_tape
  • Profilesprofile_create, profile_read, profile_update, profile_delete, profile_list
  • Diff / Snapshotrecord_diff, snapshot
  • PIE inspectionanim_state, anim_properties, subsystem_state

Data Layout

<Project>/Saved/MCPRecordings/
  <recording-id>/
    manifest.json        # recording metadata
    sequence.json        # input sequence
    recording.csv        # frame-by-frame state
    drift.json           # replay drift report
    captures/
      replay_20260527_171430.gif
      replay_20260527_183200.gif

<Project>/Saved/MCPObservations/
  obs_<profile>_<timestamp>/
    manifest.json
    observation.csv
    tracked.jsonl

Develop

npm install
npm run build

See ue-mcp plugin docs for the full author contract.