• Hi, Guest!
    Some images might be missing as we move away from using embedded images, sorry for the mess!
    From now on, you'll be required to use a third party to host images. You can learn how to add images here, and if your thread is missing images you can request them here.
    Do not use Discord to host any images you post, these links expire quickly!
Voltseon's Multiplayer Solution

v21.1 Voltseon's Multiplayer Solution 1.0

This resource pertains to version 21.1 of Pokémon Essentials.
Pokémon Essentials Version
v21.1 ✅

Voltseon's Multiplayer Solution
An (almost) plug-n-play solution for making multiplayer Pokemon Essentials games.


What is this?

Voltseon's Multiplayer Solution or VMS for short is a solution for making multiplayer Pokemon Essentials games. It is a plugin that allows you to connect to a server and play with other people. It comes with a server that you can host yourself, or you can ship it with your game to let players host their own servers (not recommended). The server is also written in Ruby and uses TCP or UDP (configurable) to connect players with a dedicated server model. It is designed to be as easy to use as possible, and it is almost plug-n-play (you still have to change some configurations for yourself and host the server).

What are the requirements?

In order to run the server you will need some kind of server or cloud hosting. But for testing purposes you can also host the server locally and connect that way. You will also need to have Ruby installed on your computer. You can download it here. For the plugin all you really need is to have the correct version of Pokemon Essentials installed and a compatible version of rainefallUtils imported.

How do I use it?

All steps and other documentation about the plugin can be found in the section below. If you have any questions or issues you can ask them through the contact information on the last page.

Where can I download it?

The download link is in the top right corner of the thread at 'Go to download'.


Currently the plugin is still a work in progress and more features are to be added in the future. To see what features are coming and what the current progress is, you can check out the todo list that is referenced below.

All currently available features are:

Co-op exploration
Co-op exploration seen with VMS

Interactions seen with VMS

Trading seen with VMS

Synced real-time battles
Synced real-time battles seen with VMS

Town map visibility
Town map visibility seen with VMS

Note: The plugin is still in development and some features may not work flawlessly yet.
All footage shown in the video was recorded on a local server with my (slow) laptop.


A fully fleshed out document containing a full guide and information surrouding the plugin can be found over here.

User Functions

VMS.join(CLUSTER_ID) - Connects to a server with the given cluster id. The id should be a number between 10000 and 99999, meaning any 5-digit number.
VMS.leave(SHOW_MESSAGE) - Disconnects from the server. If SHOW_MESSAGE is true, it will show a message saying you disconnected, this is true by default and is optional.

VMS.get_variable(id) - Returns the online (shared) variable from the server with this id. If the variable doesn't exist, it will return nil.
VMS.set_variable(id, value) - Sets the online (shared) variable of the server with this id to the given value. If the variable doesn't exist yet, it will create it.

VMS.ping - This returns the ping between the player and the server in seconds.
VMS.sync_seed - This will try to sync the seed used for the psuedo-random number generator. This is useful for syncing random events like wild encounters for all players.
VMS.see_party(id) - This will open up a menu showing the party of the player with the given id. This is useful for testing purposes.
VMS.teleport_to(id) - This will teleport the player to the player with the given id. This is useful for testing purposes.

VMS.is_connected? - This returns true or false depending on if the player is connected to a server or not.
VMS.get_self - This returns the player object of the player from the server.
VMS.get_player(id) - This returns the player object of the player with the given id from the server.
VMS.get_players - This returns an array of all the player objects from the server (including the player).
VMS.get_player_count - This returns the amount of players connected to the server.
VMS.get_cluster_id - This returns the cluster id that the player is currently connected to.

VMS.interaction_possible? - This returns true or false depending on if other players can interact with the player or not.
VMS.get_interaction_time - This returns the amount of frames used in a loop to wait during an interaction before breaking out of it.
VMS.hash_pokemon(pokemon) - This returns a hash of the given pokemon. This is used to send pokemon over the network.
VMS.dehash_pokemon(hash) - This returns a pokemon from the given hash. This is used to receive pokemon over the network.
VMS.clean_up_basic_array(array) - This returns a cleaned up version of the given array. This is used to send arrays over the network.
VMS.scene_update - This method calls a simple scene update to make it seem as if the game is running normally. This is used to keep the game running while waiting for a response from the server.
VMS.event_deletion_possible?(player) - This method checks if the given player's event can be deleted or not.

Todo List

This script is no longer being maintained, the todo list below will not be updated anymore and is only here for historical purposes.
If you are curious about future additions or current progress with the plugin, you can check out the public trello board.

Plugin & Server by: @Voltseon
Testing by: @KennyCatches and @ENLS
rainefallUtils by: @rainefall
First release
Last update
5.00 star(s) 4 ratings

More resources from Voltseon

Latest updates

  1. Voltseon's Multiplayer Solution version 1.0

    This is it, the full release! This update merely acts as a larger patch for version 0.9 to Iron...