JumPHP extension: shorts (read-only split of jumphp/jumPhp extensions/shorts)
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-05 10:05:22 +01:00
doc JumPHP 0.5.13, IDE 0.1.52: the extensions' samples in doc/samples (three new ones, a physics demo game, a SamplesTest in every demo), a ▶ on a scene's class line runs that scene only 2026-11-05 10:05:22 +01:00
src Video maker: captions over any game (engine-drawn, JUMPHP_CAPTIONS), the input recorder sees taps shorter than a frame; Captions moved to the engine (JumPHP 0.5.9) 2026-11-05 03:09:26 +01:00
composer.json Video maker: captions over any game (engine-drawn, JUMPHP_CAPTIONS), the input recorder sees taps shorter than a frame; Captions moved to the engine (JumPHP 0.5.9) 2026-11-05 03:09:26 +01:00
LICENSE Extensions on Packagist: each split to its own repository on every tag (extensions-split workflow, tools/extensions-publish.sh, dry run by default), composer.json valid without jumphp/engine, docs 2026-11-04 10:41:59 +01:00
README.md Shorts video maker: extensions physics (balls in rotating / opening rings, seeded) and shorts (notes on collisions, MIDI, offline mix), bin/jumphp video:make -> vertical 1080x1920 60 FPS MP4 + cover, shorts-demo with three templates 2026-11-04 05:31:35 +01:00

jumphp/shorts

Vertical videos (TikTok, YouTube Shorts, Reels) made from a JumPHP scene: each collision plays the next note of a melody, the scene is rendered headless frame by frame at 60 FPS, the sound mixed offline from the notes it played, and bin/jumphp video:make <game> writes the MP4 (H.264 + AAC, 1080x1920) and a cover. docs/video-maker.md.

  • Recorder (a service): reset() in enter(), note($time, $freq): heard at once, kept for the video's sound.
  • Melody: Melody::fromString('C4 E4 G4 C5'), Melody::fromMidi('assets/music/tune.mid'), next().
  • Mixer: the offline mix (bin/jumphp video:make calls it).
  • Draw: ring() (with a gap), arc(), trail().

project.yaml video: {scene: App\Scene\ShortScene, params: {template: rings}, seconds: 30, scale: 4, title: '...'}. Physics: jumphp/physics. Example: games/shorts-demo.