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

rptd-core

v1.2.10

Published

An api for generating ruptured levels using code

Downloads

7

Readme

rptd-core v1.2.10

rptd-core is a package that allows for generating ruptured levels using code

you can see he source code on github here: rptd-core

Installation

The only pre-requisite is that you have a version of node.js installed.

Then you can create a new project:

npm init

and install the package:

npm install rptd-core

Usage

// import the components
const { jsonUtility, Level, Path } = require('rptd-core')
// create a new level
const level = new Level({ LevelName: 'Example Level' })
// add a new section
level.createSection({ LevelBounds:{ x:-100, y:100, z:100, w:-100 }})

Now you can add tiles and prefabs using level.addTile(...), level.addBGTile(...) etc. (more documentation on all these function below)

Finally you can write the level to a file:

jsonUtility.writeLevelToFile(level, './example_level.json')

Note: it is possible to write directly to a level in your Ruptured levels folder however this is not reccomended if you have the level editor open as it can cause the level loading to break untill you restart the game

Documentation

This is a temporary location for the documentation but it will remain here untill I have time to make an actuall website

jsonUtility

This object contains some helper functions for reading and writing json files and levels

functions

| name | params | returns | description | |---|---|---|---| |createLevelFromFile|absoluteFilePath|Level object|Reads a pre-existing ruptured level from a json file converts it to a Level object.| |writeLevelToFile|LevelObject, filePath|void|Writes the given level data to a json file that can be imported into Ruptured. Prints the number of tiles and entities in the level. |

Level

A class that contains all of the data for a Ruptured level, as well as many functions for adding tiles and prefabs. Can be constructed directly using new or generated using jsonUtility.createLevelFromFile(path).

properties

|name|description| |---|---| |nextFreeChannel|Contains the lowest value channel that is not being used|

constructor

Takes an object with the following properties (see rptd-core/examples to see how this works):

| param | default | description | |---|---|---| |LevelName|""|Name of the level| |Creator|""|Name of level creator| |Description|""|Level description| |Music|1|Level music| |Slot0Gun|-1|Default gun in the first slot| |Slot1Gun|-1|Default gun in the second slot| |Slot2Gun|-1|Default gun in the third slot| |InitialHealth|5|Default max health of the player| |InitialEnergy|30|Default max energy

methods

All of the following methods take an object with the listed properties as a parameter, see rptd-core/examples to see examples

Level meta data methods

setLevelData({ })

Takes the same params as the constructor, and defaults to the current value of those properties

createSection({ })

Creates a new section in the level

Sections are given ids based on the order they are added, starting at 0

| param | default | description | |---|---|---| |Name|""|Section name| |Music|1|Section music| |LevelBounds|{x: 0, y: 0, z: 0, w: 0}|An object containing the x = left wall, y = right wall, z = top wall, w = bottom wall| |spawnPointX|0|X coord of the players default spawn point| |spawnPointY|0|Y coord of the players default spawn point|

addPath({ })

Adds a path object to the specified section

| param | default | description | |---|---|---| |sectionId|0|Section to add the path to| |path||Instance of the Path class|

Tile utils

addTile({ })

Adds a tile on the specified section and layer

| param | default | description | |---|---|---| |sectionId|0|Section to add the tile on| |ID|0|Id of the tile to be added| |layer|"T0"|Layer to add the tile on can be one of ["T0", "D", "BG0", "SS", "H", "M"], see Apendices for what each of these mean| |x||x position of the tile| |y||y position of the tile|

general methods

addPrefab({ })

note: this function is used under the hood by all prefab utility methods, and it is not reccomended to use this directly, unless there is not yet an implemented method for the desired prefab

Creates a prefab with the specified parameters

| param | default | description | |---|---|---| |sectionId|0|Section to add prefab in| |ID||Id of desired prefab| |x||x position of prefab| |y||y position of prefab| |Properties|{}|Entity specific properties|

addMovingPlatform({ })

General function for adding prefabs that can move along a path

| param | default | description | |---|---|---| |sectionId|0|Section to add the prefab to| |ID|4|Id of the platform type, the default (4) is what the game calls 'moving platform'| |x||x position of the prefab| |y||y position of the prefab| |Size|{x: 1, y: 1}|An object containing the size of the moving platform| |Channel|-2|Channel of the platform (see Appendices for more info), does not support contolling if a platform moves or not| |PathEnabled|false|Weather or not the platform follows a path| |PathID|0|Id of the path to follow| |InitialPointID|0|Point along the path to start at| |Speed|3|Speed of the plaform in tiles per second| |Reversed|false|Weather or not the platform follows the path in reverse| |PauseDuration|0|Amount of time that the platform pauses at each point|

addLogicGate({ })

General function for adding logic gates, not reccommended to use directly (see Logic gate methods)

returns the channels that were used as an object

see rptd-core/examples/gateExample.js for an example

| param | default | description | |---|---|---| |sectionID|0|Section to add the logic gate in| |ID||id of the gate type| |x||x position of the gate| |y||y position of the gate| |Channels|{ }|Object containing the channels of the gate| |Properties|{ }|Any other properties of the gate|

prefab utils

addBooster({ })

| param | default | description | |---|---|---| |sectionId|0|Section to add the prefab to| |x||x position of the booster| |y||y position of the booster| |Strength|30|Strength of the booster in tiles per second| |Channel|-2|Channel of the prefab (see Appendices for more info)| |StartActive|true|Weather or not the booster is on when the level loads| |Direction|0|0 is up, 1 is left, 2 is down, 3 is right|

addButton({ })

| param | default | description | |---|---|---| |sectionId|0|Section to add the button to| |x||x position of the button| |y||y position of the button| |Channel|-2|Channel of the booster (see Appendices for more info)|

addCheckPoint({ })

| param | default | description | |---|---|---| |sectionId|0|Section to add the check point to| |x||x position of the check point| |y||y position of the check point| |isLevelEnd|false|Weather or not this checkpoint is a level end trigger|

addCrate({ })

| param | default | description | |---|---|---| |sectionId|0|Section to add the crate to| |x||x position of the crate| |y||y position of the crate|

moving platform prefabs

addToggleWall({ })

General function for adding prefabs that can move along a path

| param | default | description | |---|---|---| |sectionId|0|Section to add the prefab to| |x||x position of the prefab| |y||y position of the prefab| |Size|{x: 1, y: 1}|An object containing the size of the moving platform| |Channel|-2|Channel of the platform (see Appendices for more info), does not support contolling if a platform moves or not| |PathEnabled|false|Weather or not the platform follows a path| |PathID|0|Id of the path to follow| |InitialPointID|0|Point along the path to start at| |Speed|3|Speed of the plaform in tiles per second| |Reversed|false|Weather or not the platform follows the path in reverse| |PauseDuration|0|Amount of time that the platform pauses at each point|

Logic gate methods

addAndGate({ }),addOrGate({ }),addXorGate({ })

Functions for adding and, or, and xor, they all have the same parameters returns the channels that were used as an object (eg: { InChannel1: 3, InChannel2: 4, OutChannel1: 5 })

| param | default | description | |---|---|---| |sectionID|0|Section to add the logic gate in| |x||x position of the gate| |y||y position of the gate| |InChannel1|-2|First input channel| |InChannel2|-2|Second input channel| |OutChannel1|-2|Output channel|

addNotGate({ })

Function for adding not gates returns the channels that were used as an object (eg: { InChannel1: 3, OutChannel1: 4 })

| param | default | description | |---|---|---| |sectionID|0|Section to add the logic gate in| |x||x position of the gate| |y||y position of the gate| |InChannel1|-2|First input channel| |OutChannel1|-2|Output channel|

addLatchGate({ })

Function for adding latches and t-flip-flops (TFF) returns the channels that were used as an object (eg: { OnChannel: 11, OffChannel: 12, OutChannel1: 13})

| param | default | description | |---|---|---| |sectionID|0|Section to add the logic gate in| |x||x position of the gate| |y||y position of the gate| |OnChannel|-2|On input channel| |OffChannel|-2|Off input channel| |OutChannel1|-2|Output channel| |StartActive|false|Wether the latch starts active or not| |TFF|false|Wether the latch is a TFF or not|

addClock({ })

Function for adding clocks returns the channel that was used as an object (eg: { OutChannel1: 16 })

| param | default | description | |---|---|---| |sectionID|0|Section to add the logic gate in| |x||x position of the gate| |y||y position of the gate| |Channel|-2|Output channel| |StartActive|false|Wether the latch starts active or not| |OnTime|0.1|Amount of time the clock is on for| |OffTime|0.1|Amount of time the clock is off for|

Path

Represents a path that a moving platform can follow, to create a ne Path use new Path(id) and then use path.addPosition({ x, y }) to add positions.

constructor

| param | default | description | |---|---|---| |ID|0|The path id to be referenced by moving platforms|

methods

addPosition({ })

takes an object containing the x and y position of the new point, points of a path are followed in order

| param | description | |---|---| |x|x position of the point| |y|y position of the point|

Appendices

terminology

  • Tile: any static tile with no properties, has an id which tells the game what flavor of tile it is, and a position
  • Prefab: any entity with setable properties, (eg: buttons, enemies, triggers), these also have an id and position at bare minimum, as well as a "properties" attribute which contains all other entity specific information

channels

  • for any prefab utility function, setting the channel to -1 will have the effect of giving it no channel
  • setting the channel to -2 (default most of the time) will use the next free channel
  • all of these functions return the channels used

layers

|name|description| |---|---| |"T0"|default layer for standard tiles| |"D"|default layer for dark tiles (eg: 'map dark'| |"BG0"|default layer for background tiles| |"SS"|default layer for semi-solid tiles| |"H"|default layer for hazard tiles| |"M"|default layer for map tiles (eg: 'map transparent')|