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

raylib

v0.14.0

Published

Node.js bindings for raylib.

Downloads

236

Readme

node-raylib Logo

node-raylib npm version Tests

Node.js bindings for raylib, a simple and easy-to-use library to enjoy videogames programming (www.raylib.com).

Examples

| Name | Description | Author | |:-----|:------------|:-------| | Offical Examples | Ports of raylib's examples to node-raylib | @RobLoach, @twunky, @konsumer | | Flappy | A Flappy Bird clone | @arthurmassanes | | Retro RPG Template | Small prototype to build a retro-inspired RPG game | @konsumer | | Chip8 | A CHIP-8 emulator whose native client using node-raylib | @taniarascia |

Dependencies

Usage

  1. Create a new Node.js project:

    mkdir myexample
    cd myexample
  2. Create a package.json file with:

    {
      "dependencies": {
        "raylib": "*"
      },
      "scripts": {
          "start": "node index.js"
      }
    }
  3. Create a index.js JavaScript file, like core_basic_window.js:

    const r = require('raylib')
    
    const screenWidth = 800
    const screenHeight = 450
    r.InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window")
    r.SetTargetFPS(60)
    
    while (!r.WindowShouldClose()) {
        r.BeginDrawing();
        r.ClearBackground(r.RAYWHITE)
        r.DrawText("Congrats! You created your first node-raylib window!", 120, 200, 20, r.LIGHTGRAY)
        r.EndDrawing()
    }
    r.CloseWindow()
  4. Have npm install the dependencies for you:

    npm install
  5. Run index.js through Node.js:

    npm start

    Screenshot

Check for more examples organized by raylib modules.

Installation

Raylib is implemented as bindings with node-addon-api. Bindings are prebuilt for many platforms in Releases. If your platform is not supported by a prebuilt binary, you will need CMake to build the native addon. Windows users building manually will also require MSVC Build Tools 2019, or Visual Studio 2019 with build tools for C/C++.

In general, to install node-raylib locally, use npm:

npm install raylib

DRM

On some ARM devices like Raspberry PI, raylib can be used in a DRM mode instead of rendering to an x11 window. This version requires a seperate native addon, and on installation on ARM devices node-raylib will include both. To use the DRM mode, import raylib/drm instead.

import * as rl from 'raylib/drm/index.js'
const rl = require('raylib/drm')

CLI

The project comes with a node-raylib command-line tool to run node-raylib files directly:

# Unix
./bin/node-raylib core_basic_window.js

# Windows
node bin/node-raylib core_basic_window.js

The CLI can be installed globally through npm or npx for no-install:

npm install raylib --global
node-raylib --version
npx -y raylib --version

Development

node-addon-api is used to construct the bindings. Raylib provides a header parser that generates a JSON file containing information on the API. The code binding raylib to NodeJS is automatically generated based on this file. For information on how bindings are written for raylib read the documentation. Code generators for the C++ bindings, TypeScript definitions, and JavaScript wrapper functions are found in the tools/generate_templates folder.

Testing

Run the following to run tests...

git clone https://github.com/RobLoach/node-raylib.git
cd node-raylib
npm i
npm t

TypeScript Definitions

Typescript definitions are provided by a generator based on raylib's header parser. See node-raylib-definitions.js for information on how to generate them.

Package

To build the packaged releases, use the following command:

npm run pkg

License

node-raylib is licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software. Check LICENSE for further details.

Copyright (c) 2022 Rob Loach (@RobLoach)