0.1.89 • Published 1 year ago

@rzuppur/recs v0.1.89

Weekly downloads
245
License
-
Repository
-
Last release
1 year ago

RECS

Minimal entity component system for 2D game development in JS/TS

Example game based on RECS (Video link) Space

import { Engine, Entity } from "@rzuppur/recs";

const elementToMountTo = "#app"; // default: body, pointer events break if page is scrolled
const engine = new Engine(elementToMountTo);
const manager = engine.manager;

/* Register custom components (see below) */
manager.registerComponent(new Component());

/* Register custom systems (see below) */
manager.registerSystem(new System());

/* Create entities, returns id */
const entity: Entity = manager.createEntity();

/* Add entity components */
manager.setComponent(entity, new Component({ data }));

Creating a custom component

import { Component, ComponentData } from "@rzuppur/recs";

interface MyData extends ComponentData {
    value: number;
}

class MyComponent extends Component {
    static key = "My";
    public data: MyData;

    constructor(data?: MyData) {
        super(MyComponent.key, data);
    }
}

Creating a custom system

import { System, Query, PointableComponent } from "@rzuppur/recs";

const name = "My";
const componentsQuery = [PointableComponent.key];

class MySystem extends System {
    constructor() {
        super(name, componentsQuery);
    }

    public start(query: Query, manager: Manager): boolean {
        // Add custom initialization code here if needed
        return super.start(query, manager);
    }

    public tick(dt: number /* ms since last tick */): void {
        for (const [entity, components] of this.query.getMatching()) {
            const p = Query.getComponent(components, PointableComponent);
            if (p.data.clicked) {
                console.log("clicked", entity);
            }
        }
    }
}

Built in components

https://github.com/rzuppur/recs/tree/main/src/lib/components

Built in systems

https://github.com/rzuppur/recs/tree/main/src/lib/systems

0.1.88

1 year ago

0.1.89

1 year ago

0.1.85

2 years ago

0.1.86

2 years ago

0.1.87

2 years ago

0.1.84

2 years ago

0.1.80

3 years ago

0.1.81

3 years ago

0.1.82

3 years ago

0.1.74

3 years ago

0.1.75

3 years ago

0.1.76

3 years ago

0.1.77

3 years ago

0.1.78

3 years ago

0.1.70

3 years ago

0.1.71

3 years ago

0.1.72

3 years ago

0.1.73

3 years ago

0.1.68

3 years ago

0.1.69

3 years ago

0.1.65

3 years ago

0.1.66

3 years ago

0.1.67

3 years ago

0.1.57

3 years ago

0.1.58

3 years ago

0.1.59

3 years ago

0.1.63

3 years ago

0.1.64

3 years ago

0.1.60

3 years ago

0.1.61

3 years ago

0.1.62

3 years ago

0.1.52

3 years ago

0.1.53

3 years ago

0.1.54

3 years ago

0.1.55

3 years ago

0.1.56

3 years ago

0.1.50

3 years ago

0.1.51

3 years ago

0.1.49

3 years ago

0.1.44

3 years ago

0.1.45

3 years ago

0.1.46

3 years ago

0.1.47

3 years ago

0.1.48

3 years ago

0.1.41

3 years ago

0.1.42

3 years ago

0.1.43

3 years ago

0.1.40

3 years ago

0.1.32

4 years ago

0.1.33

4 years ago

0.1.34

4 years ago

0.1.35

4 years ago

0.1.36

4 years ago

0.1.37

4 years ago

0.1.38

4 years ago

0.1.39

4 years ago

0.1.30

4 years ago

0.1.31

4 years ago

0.1.29

4 years ago

0.1.28

4 years ago

0.1.27

4 years ago

0.1.25

4 years ago

0.1.26

4 years ago

0.1.22

4 years ago

0.1.23

4 years ago

0.1.24

4 years ago

0.1.21

4 years ago

0.1.20

4 years ago

0.1.18

4 years ago

0.1.19

4 years ago

0.1.17

4 years ago

0.1.10

4 years ago

0.1.11

4 years ago

0.1.12

4 years ago

0.1.13

4 years ago

0.1.14

4 years ago

0.1.15

4 years ago

0.1.16

4 years ago

0.1.9

4 years ago

0.1.8

4 years ago

0.1.7

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago