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

nixie-fx

v0.1.3

Published

Open-source particle and VFX runtime and CLI for PixiJS and Three.js web games

Readme

NixieFX

NixieFX is the open-source runtime for particle effects authored with the NixieFX editor. It provides one shared, deterministic simulation with renderer adapters for PixiJS and Three.js.

Website · Quick start · Documentation · Agent skills · npm

The editor project and the exported game bundle are intentionally different: games consume the generated out/vfx directory, not the editable .prj workspace.

Install

Install NixieFX with the renderer used by your game:

npm install nixie-fx pixi.js
npm install nixie-fx three

PixiJS and Three.js are optional peer dependencies. Importing the core or export APIs does not load either renderer.

Public entrypoints

import {
  ParticleEffectRunner,
  normalizeParticleEffect,
  validateVfxAuthoringEffect,
} from "nixie-fx";
import { compileMaterial, normalizeShaderGraph } from "nixie-fx/materials";
import { PixiVfxRenderer } from "nixie-fx/pixi";
import { ThreeVfxRenderer } from "nixie-fx/three";
import { loadVfxExportBundle, writeVfxExportWithIo } from "nixie-fx/export";
import { parseEditorProjectFile } from "nixie-fx/project";

nixie-fx/export is browser-safe. Node filesystem helpers are isolated at nixie-fx/export/node.

Authoring CLI

The package also installs the nixie-fx command. Run it from a folder that contains vfx-editor.prj, or pass the project folder explicitly:

npx nixie-fx effect create --project ./my-vfx --name "Fire Burst" --profile pixi-ui-2d
npx nixie-fx validate ./my-vfx
npx nixie-fx export ./my-vfx

effect create refuses to overwrite an existing effect. validate is read-only, while export writes the project's configured out/vfx bundle.

Runtime integration

Three.js is the canonical backend. Load the exported manifest.json and effect JSON files with loadVfxExportBundle, create effects with ThreeVfxRenderer, and advance the renderer exactly once per host frame, using seconds:

import { loadVfxExportBundle } from "nixie-fx/export";
import { ThreeVfxRenderer } from "nixie-fx/three";

const bundle = loadVfxExportBundle(
  { manifest, effectsByPath },
  { requiredBackend: "three3d" },
);
const effect = bundle.effectsById.get("world-impact");
if (!effect) throw new Error("Missing world-impact effect");

// Providers are the complete form and every one of them is OPTIONAL:
// effects without file assets need none of them.
const vfx = new ThreeVfxRenderer({
  scene,
  camera,
  textureProvider, // exported texture paths -> THREE.Texture (preload first)
  meshProvider, // prepared mesh refs -> BufferGeometry
  materialGraphProvider, // .material graph ids -> ShaderGraph
});
const instance = vfx.createEffect(effect, { position: [0, 0, 0], seed: 42 });

// Once per host frame:
vfx.update(deltaSeconds);

// When the owning scene is released:
vfx.destroy();

The PixiJS adapter follows the same lifecycle for UI and 2D scenes: construct PixiVfxRenderer with a parent container (plus the same optional providers), call update(deltaSeconds) once per frame, and call destroy() on teardown.

Always inspect the exported backend support report. A blocked effect must not be silently treated as supported, and a partial effect can contain deliberate backend approximations.

Other engines

The export format is engine-neutral JSON: manifest.json plus per-effect files describing emitters, modules, and asset references — no renderer types anywhere. Official runtimes exist for Three.js and PixiJS. For another engine, the deterministic simulation (src/engine/particles.ts) is shared and renderer-agnostic, and the Three adapter (src/runtime/three/) is compact enough to serve as a reference implementation for a port — including one written with the help of an AI assistant.

Agent skills

Install the repository's NixieFX skills with:

npx skills add https://github.com/azakhary/nixie-fx

The runtime skill covers game integration. The authoring skill covers project layout, effect creation, validation, export, and real-editor visual review.

Development

npm ci
npm run check
npm run pack:check
npm run test:consumers

test:consumers packs the real npm artifact and verifies four clean installs: core/export without renderer peers, PixiJS without Three.js, Three.js without PixiJS, and the Node export adapter.

License

MIT