miniplex

Use Miniplex for minimalistic Entity Component System with TypeScript support.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "miniplex" with this command: npx skills add verekia/r3f-gamedev/verekia-r3f-gamedev-miniplex

Miniplex ECS

Use Miniplex for minimalistic Entity Component System with TypeScript support.

When setting up or undertaking important changes with Miniplex, fetch the documentations:

Core: https://raw.githubusercontent.com/hmans/miniplex/refs/heads/main/packages/core/README.md React bindings: https://raw.githubusercontent.com/hmans/miniplex/refs/heads/main/packages/react/README.md

Technique

Define an entity type with optional properties, create a world, and query entities based on their properties. Use miniplex-react for React bindings with the Entities component.

Key Concepts

  • Entity type defines all possible components as optional properties
  • world.with('prop1', 'prop2') creates typed queries
  • world.add() and world.remove() for entity lifecycle
  • world.addComponent() and world.removeComponent() for component lifecycle
  • <Entities in={query}>{Component}</Entities> renders entities reactively
  • Entity props are passed directly to child components

What NOT to Use

  • onEntityAdded / onEntityRemoved - Prefer using data and systems to trigger things (e.g., timers, flags)
  • .where() - Don't use predicate-based filtering

Preferred Methods

Only use these world methods:

  • world.add(entity) - Add a new entity
  • world.remove(entity) - Remove an entity
  • world.addComponent(entity, 'component', value) - Add component to existing entity
  • world.removeComponent(entity, 'component') - Remove component from entity
  • world.with('prop1', 'prop2') - Create queries

Queries

Declare queries at module level and import them where needed:

// ecs/queries.ts
export const characterQuery = world.with('position', 'isCharacter')
export const enemyQuery = world.with('position', 'isEnemy')
export const movingEntities = world.with('position', 'velocity')

// In a system file
import { movingEntities } from './ecs/queries'

Usage

type Entity = {
  position?: { x: number; y: number }
  isCharacter?: true
}

const world = new World<Entity>()
const characters = world.with('position', 'isCharacter')

// Add entity
world.add({ position: { x: 0, y: 0 }, isCharacter: true })

// Render
<Entities in={characters}>{Character}</Entities>

Note: Miniplex is feature-complete but no longer maintained.


This skill is part of verekia's r3f-gamedev.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

smooth-interpolation

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

ui-useframe

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

reactive-polling

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

health-bars

No summary provided by upstream source.

Repository SourceNeeds Review