Skip to content

First gamemode ​

VIMP loads <scripts_path>/server/main.js during startup. With the default configuration, that is scripting/server/main.js.

ts
vimp.on('playerConnected', (player) => {
  console.log(`${player.name} (#${player.id}) connected`)
  player.teleport(90.79, -1951.33, 20.74, 307.23)
})

vimp.on('playerDisconnected', (player) => {
  console.log(`${player.name} (#${player.id}) disconnected`)
})

vimp.markReady()

The server does not accept player connections until the script calls vimp.markReady(). Register startup event handlers first, then call it once.

JavaScript quick start ​

TypeScript is recommended but not required. The same runtime accepts plain JavaScript without imports or an npm installation:

js
vimp.on('playerConnected', (player) => {
  player.teleport(90.79, -1951.33, 20.74, 307.23)
})

vimp.markReady()

Restart the process after editing server code; VIMP 2.x does not hot-reload the server entry script.

Next step ​

Move source code out of the runtime directory and compile it into dist/scripts/server/main.js. This keeps build-time dependencies separate from the files deployed to the game server.

VIMP developer documentation