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

soba-game

v1.0.3

Published

A wrapper for React-based games using Socket.io

Downloads

2

Readme

Soba

npm version

Soba is a simple React-based web game engine. By using higher-order components, Soba manages the generic socket.io messages and injecting additional functions as props. Integrating with Soba allows web games to be made more lightweight.

More Resources

  1. For a detailed description and explanation of how the games work with flowcharts and diagrams.
  2. Guidelines for designing games based on the framework, also describes the behaviour of the higher-order components.

Introduction

Soba is a npm module create to provide higher-order components for simplifying and streamlining the web-based social games using socket.io's communication.

This architecture and flow was designed with a game in mind, but was then tweaked to be more generic to allow different turn-based games to be created this way.

Example projects

  1. Articulate
    • Game Link: https://articulate-game.herokuapp.com/
    • Source Code
      • Front-end: https://github.com/chriz218/articulate
      • Back-end: https://github.com/zhenghung/articulate-be

Usage and Quickstart

  1. Install the npm modules in your React project directory.

    $ npm install --save soba-game socket.io-client
  2. Import SobaParentContainer in your highest-level component (e.g. App.js), as well as socket.io-client.

    import io from 'socket.io-client';
    import {SobaParentContainer} from 'soba-game';
  3. Initialise a socket.io-client connection and modify the export default for the component as follows.

    const socketConnect = io(BACKEND_ENDPOINT, {transports: ['websocket']});
    export default SobaParentContainer(App, socketConnect);
  4. This will also inject a few props into your component so add them to the props. The final App.js component will look something like this.

    import React from 'react';
    import io from 'socket.io-client';
    import {SobaParentContainer} from 'soba-game';
    function App(props){
        const {socket, socketId, gameState, 
            setGameState, broadcastGameState} = props;
        .
        .
        return (
            <HomePage
                setPage={setPage}
                socketId={socketId}
            />
        )
    }
    const socketConnect = io("https://mygame.game.com/", {transports: ['websocket']});
    export default SobaParentContainer(App, socketConnect);
  5. Look into the GameDesignDocument for more details regarding implementing LobbyContainer and designing the gameState.

  6. Set up the backend server. See the backend component to this project.

Feedback

This is a new project and really needs more sets of eyes. Work is being done and new releases will be made. If you're having trouble getting it to work for your project, or have ideas of how it can be improved, please create an issue or get in touch with me at:

[email protected]