Skip to content
HELIX is in Closed Alpha. Some features and documentation may be non-functional or out of date.

Helix

Description#

Core runtime for client and server-side scripting. Use Helix.client and Helix.server to run code in the correct context; use Helix.on and Helix.emit for custom events and Helix.endpoint / Helix.call for RPC. Other APIs are exposed as members: Helix.Player, Helix.Database, Helix.WebUI, Helix.Input, Helix.State.

Methods#

client (callback)#

Execute code only on client.

Helix.client(() => {
  const ui = new Helix.WebUI('myUI', 'js/my-module/web/index.html')
  console.log('Client-side code running')
})

server (callback)#

Execute code only on server.

Helix.server(async () => {
  await Helix.Database.connect({ host: 'localhost', database: 'gamedb', username: 'root', password: 'pass', dialect: 'mysql' })
  console.log('Server initialized')
})

on (eventName, callback)#

Listen for custom events.

Helix.on('CharacterSelected', (character) => {
  console.log('Character selected:', character.firstName)
  Helix.Player.setCharacter(character)
})

emit (eventName, data)#

Emit custom events.

Helix.emit('CharacterSelected', {
  id: 1,
  firstName: 'John',
  lastName: 'Doe'
})

endpoint (name, handler)#

Register RPC endpoint.

Helix.endpoint('getCharacters', async (helixId) => {
  const characters = await db.Player.findAll({
    where: { helixId: helixId.toString() }
  })
  return characters.map(c => c.dataValues)
})

call (name, ...args)#

Call RPC endpoint. Async.

const characters = await Helix.call('getCharacters', helixId)
console.log('Retrieved characters:', characters)

playerJoined (callback)#

Handle player join events.

Helix.server(() => {
  Helix.playerJoined(async (playerId) => {
    const character = await Helix.Player.fetchData()
    console.log('Player joined:', character.name)
  })
})