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

gotti.js

v0.0.3

Published

Full stack scalable javascript and html5 game engine.

Downloads

5

Readme

Full-stack and optimal game engine. It will provide a few frameworks that every game will use which allows you to create modular and powerful systems that can live on both server and client side. I am basing this on my current private engine, the problem is I don't have tests and it's not as modular as I'd like it to be, it's primary focus was a top down shooter I'm in the progress of creating.

The focus of this project is to completely refactor it in order to be easier to understand for other developers, more stable, and much more modular/universal.

I want systems to be very modular and easy to implement. I'm still working out the logistics of the full engine and what it will consist other than modular Systems. But for now systems and system communication between a network will be my main focus.

Currently I've just started recoding the core componenets, I hope to approach this with a more TDD workflow than I usually have, because without tests I become a ball of anxiety when running code.

Systems will have an API that makes communicating with other local systems easy and makes sending remote messages from client to server or server to client just as easily. Although the low level implementations will be a bit more complex, the public API will be near identical and work almost the exact same way for both.

Each system you create will inherit from the base System class, and with it you get access to functions like

system.dispatchLocal(message) // sends messages locally ( server to other server systems or client to other client systems )

and also

system.dispatchRemote(message) // sends messages remotely ( server to client systems or client to server systems )

then all these messages will be handled the same by implementing the abstract onMessage method inherited from the base system class.

onMessage(message) {
     switch(message.type) {
        case 'foo':
            this.handleFoo(message.data);
            break;
     }
}

the way a message MUST Be formatted is

{
    type: 'MESSAGE_TYPE',
    data: {
        'foo': 'bar',
         'anyJSON', 'isValid'
     },
     to: ['COLLISION_SYSTEM', 'OTHER_SYSTEM'],
     from: 'OTHER_OTHER_SYSTEM'
}

it will throw an error if the message is not formatted correctly. The best bet would be to have messageFactories for your system so you can just call a function with params and pass it into the dispatch method.