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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@ashnazg/chaos

v0.0.1

Published

a websocket-centric node.js game engine or state sync protocol

Downloads

4

Readme


title: @ashnazg/chaos sidebar_label: chaos

Terminology: everything on your server is in a world; arenas are spaces/rooms/planets that people can interact in; actors are things that change and interact with each other.

A server is an authoritative owner of a world; a client will simulate a world's events progressing but must recalibrate as server events come in.

Scaling horizontally: while a single server can run all the arenas of your game, an underloaded server can take over an arena from an overloaded one; the new server acts like a client long enough to get all the state and actors over, and get clients of that arena reconnected repointed to the mirror. Once the old server sees that everything's ready it sends a promote{arena:42} message to the mirror to let it know that it can disconnect and be the authority.

Stopgap mode:

  1. for now, build it in single-server mode.
  2. then for 2.0, make it so that the two servers pause while the transfer is handled.

actor

An actor is often an arena as well -- a ship on the space map is an actor, but is an arena to the gear and people inside.

  • An actor has an ID. (for the server's root, that's zero) (there's no IDs on disk; these are runtime only ephemera.)
  • an actor has two lists of children active and passive (active ones get tick events)

arena

Maybe I don't need "world" as arenas can

client

server

world

clock

Is API compatible with my client one so that a chaos client can reuse their graphics-driving clock here.

(But serves side there's no need for animation frames, so the innards of chaos:clock are much simpler.)