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

@robotical/robofly-game

v0.1.26

Published

RoboFly uses the same learning-game shell as Jumping Game, Skiing, Maze and Bubble Popper. `src/App.tsx` exports the new `src/learning-game/LearningGame.tsx`; the older Phaser/tutorial sources remain available but are not mounted by the app.

Readme

RoboFly

RoboFly uses the same learning-game shell as Jumping Game, Skiing, Maze and Bubble Popper. src/App.tsx exports the new src/learning-game/LearningGame.tsx; the older Phaser/tutorial sources remain available but are not mounted by the app.

Play and learning flow

The six redesigned activities introduce one thing at a time:

  1. Hold to fly up. The blocks are ready and the star is above Marty.
  2. Let go to fly down. First press, then release; the cue changes with the input. The star is below Marty.
  3. Stay still. A ready-made Do nothing block keeps Marty stationary while a visible star approaches.
  4. Choose what a press does. A fixed star is visible above Marty before choosing. Select a block and hold to try it.
  5. Choose what letting go does. A fixed star is visible below Marty before choosing, with an explicit press-before-release cue.
  6. Fly and catch stars. Ready-made up/down controls, three stars, no obstacles or penalty for a missed star.

Every collected tutorial star counts towards completion. There are no hidden event, edit, timing or hold-position requirements. Early activities show ready-made blocks without edit controls; later activities expose just the one event being explored. Free play keeps both rows editable. Changing a block preserves Marty’s position and the star. Wrong choices can be corrected without resetting the scene. All target positions and motion are authored in the mission, independent of the selected blocks.

Original Robotical artwork, animated hand (including a distinct release motion), Marty palette and short visual cues support non-readers. Speakers read instructions only when tapped. The pause menu has Keep playing, Help, Home and Grown-ups; settings and restarting live in Grown-ups.

Free play unlocks after the activities, or grown-ups can choose it directly. Ten stars offer Keep playing or Skiing. Continuing preserves the board, stars and blocks. Gentle bumps preserve stars; challenge mode offers retry.

The new tutorial uses a learning-v2 save. Existing sound/comfort settings and activity totals/best score carry over; the new activity trail starts at the first lesson. The old save is retained.

Cog and standalone controls

Embedded use defaults to Cog only. Computer controls require an explicit allowScreenControls prop, a non-production build and no Marty host. The standalone development entry supplies that prop.

Pickup appears when starting from home or explicitly setting up a controller. Button input works at any orientation, including flat on a table, and needs no accelerometer readings. Changing orientation never stops flight or reopens pickup. Disconnects pause the game and require setup on reconnect. Tilt never triggers a flight action: press holds the chosen press action, release runs the chosen release action, and Do nothing holds altitude. Pausing or opening a chooser clears held input.

Development

npm start
npm run typecheck
npm run lint
CI=true npm test -- --watch=false --runInBand
npm run build:dev
npm run build

Import @robotical/robofly-game/dist/App from Marty. Link this repository at marty-web-app/node_modules/@robotical/robofly-game; React and ReactDOM must resolve to Marty’s copies. Avoid replacing other linked games when linking this one.

When Marty is already running, rebuild in place to avoid briefly removing its imported files:

NODE_ENV=development ./node_modules/.bin/babel src --out-dir dist --extensions '.tsx' --extensions '.ts' --copy-files --no-copy-ignored --ignore 'src/**/*.test.ts,src/**/*.test.tsx'
./node_modules/.bin/tsc --project tsconfig.dev.json

The visual runner (npm run test:visual-phases) targets the new home, chooser, flight, celebration, release lesson and pause screens. It requires Puppeteer locally or in the sibling jumping-game installation.

Validation

Automated tests cover each ready-made lesson, fixed goals and recovery from wrong choices in both coding activities, actual star-contact completion, free play, storage migration, speech opt-in, focus, pause/edit behavior and the Cog connection lifecycle. UI review uses the running standalone game; physical Cog testing is performed in the linked Marty app.