Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@colyseus/ecs

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@colyseus/ecs

Entity Component System integration for Colyseus

  • 0.4.0-alpha.4
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
2
decreased by-92.59%
Maintainers
1
Weekly downloads
 
Created
Source

ATTENTION: THIS IS JUST AN EXPERIMENT

NOT READY TO USE

The current state of this repository is very messy - basically a bunch of glue code trying to make @colyseus/schema work along with ECSY.

If you're feeling brave enough, you're encouraged to continue performing some experiments with this repository and help it reach a not that bad state.

Build status

Goal

There are quite a few Entity Component Systems written in JavaScript available out there. I'm currently experimenting integrating @colyseus/schema with ECSY.

The goal of this project is to have a good way to use ECS along with Colyseus - being able to synchronize entities and components defined in the Entity Component System.

Progress so far

  • This module defines a Component that extends from Schema.
  • ECSY and @colyseus/schema require the end user to to define the "schema" of the data structure
    • I'm overriding the ECSY's registerComponent() to replicate the definitions from @colyseus/schema (through the @type() annotation) into ECSY's schema.
  • ECSY has a component called TagComponent that does not have any data on it. This conflicts with @colyseus/schema, as every Schema instance is required to hold at least one property. - @colyseus/schema@^1.0.0-alpha.29 now allows to have intermediary "abstract" structures with no fields.
  • The test scenario is able to encode the World into ~1236 bytes.
    • The test scenario has 50 entities with 3 components on each of them - two vectors and a component holding a string.

Troubleshooting

Make sure you create or join the room on the client by passing in a concrete type, not just the generic. For instance instead of:

await client.joinById<MyGameState>(roomId)

you should use

await client.joinById(roomId, {}, MyGameState)

Keywords

FAQs

Package last updated on 14 Aug 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc