3.1.0 • Published 1 year ago

starblast-pinger v3.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

starblast-pinger

Utility tool to ping and get the info of a running Starblast game lobby.

Installation

npm install starblast-pinger
yarn add starblast-pinger
pnpm add starblast-pinger

Usage

const pinger = require("starblast-pinger");

// Get system info
pinger.getSystemInfo("https://starblast.io/#1234", { options }).then(console.log).catch(console.error);

Options to pass into the options object:

OptionTypeDescriptionDefault value(if null/undefined or omitted)
playersbooleanWhether or not to fetch player namesPlease note that fetching player names is typically a way more expensive action.false
timeoutpositive integerTimeout for fetching system info in general5000
playersTimeoutpositive integerTimeout for fetching player names, counting after system info is successfully fetched3000
preferredRegionstringPreferred region in case there are multiple games in different regions with the same IDnone
maxGetIDpositive integerTo declare the highest player ID to get3x the fetching game's capacity (if found)

Note that if options is null, undefined or omitted, everything will go by their default values

For example:

pinger.getSystemInfo('https://starblast.io/#5349', {
    players: true,
    playersTimeout: 3000,
    timeout: 5000,
    preferredRegion: "America",
    maxGetID: null
}).then(console.log).catch(console.error);

If fetching names from multiple game systems, it is recommended to do so asynchronously.

If the ping fails by any reason, the promise rejects with a specific error.

If successful, it should return something akin to this (players object is only present if the players parameter is set to true):

{
  version: 84,
  seed: 6373,
  servertime: 285110,
  name: 'Tuchiraph 314',
  systemid: 6373,
  size: 800,
  mode: {
    max_players: 70,
    crystal_value: 2,
    crystal_drop: 1,
    map_size: 80,
    map_density: null,
    lives: 4,
    max_level: 7,
    friendly_colors: 3,
    close_time: 30,
    close_number: 0,
    map_name: null,
    unlisted: false,
    survival_time: 0,
    survival_level: 8,
    starting_ship: 101,
    starting_ship_maxed: false,
    asteroids_strength: 1,
    friction_ratio: 1,
    speed_mod: 1.2,
    rcs_toggle: true,
    weapon_drop: 0,
    mines_self_destroy: true,
    mines_destroy_delay: 18000,
    healing_enabled: true,
    healing_ratio: 1,
    shield_regen_factor: 1,
    power_regen_factor: 1,
    auto_refill: false,
    projectile_speed: 1,
    strafe: 0,
    release_crystal: true,
    large_grid: false,
    max_tier_lives: 0,
    auto_assign_teams: false,
    station_size: 2,
    crystal_capacity: [ 800, 1600, 3200, 6400 ],
    deposit_shield: [ 5000, 6000, 7000, 8000 ],
    spawning_shield: [ 4000, 4500, 5000, 5500 ],
    structure_shield: [ 2000, 2500, 3000, 3500 ],
    deposit_regen: [ 16, 19, 22, 25 ],
    spawning_regen: [ 13, 14, 16, 18 ],
    structure_regen: [ 8, 10, 11, 12 ],
    repair_threshold: 0.25,
    id: 'team',
    restore_ship: null,
    teams: [ [Object], [Object], [Object] ]
  },
  region: 'America',
  players: [
    { id: 1, hue: 96, player_name: 'NYOTA UHURA', custom: null },
    { id: 3, hue: 324, player_name: 'ARKADY DARELL', custom: null },
    { id: 4, hue: 48, player_name: 'EXAMPLE PLAYER', custom: null },
    { id: 5, hue: 252, player_name: 'ANOTHER PLAYER', custom: [Object] },
    { id: 6, hue: 12, player_name: 'EBLING MIS', custom: [Object] }
  ]
}

If you're not interested in any detailed info, a method .canPing takes in a system URL and returns a Promise<Boolean> which resolves to true if it can join a system, and false if it fails (game is full or doesn't exist, connection unexpectedly closed, etc.)

3.1.0

1 year ago

3.0.1

1 year ago

3.0.0

2 years ago

2.1.2

2 years ago

2.1.1

2 years ago

2.1.0

2 years ago

2.0.0

2 years ago

1.1.2

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago