How to migrate SA-MP to Open.MP step by step without losing your gamemode

Technical guide to migrate an SA-MP 0.3.7 R2/R3 server to Open.MP preserving gamemode, plugins, filterscripts, and active players.

Open.MP (open multiplayer) is the open-source continuation of SA-MP, maintained by the community after the original project stagnated. The server was rewritten in modern C++ with a focus on full compatibility with existing Pawn gamemodes — you do not need to rewrite a single line of your gamemode to run on it.

This tutorial is for anyone operating an SA-MP 0.3.7 R2 or R3 server in production who wants to migrate to Open.MP without losing the compiled gamemode, loaded plugins, filterscripts, or player base. The process takes between 30 and 60 minutes depending on the project size, and effective downtime stays around 5 minutes if you follow the right order.

We will cover the migration end to end on Linux (Ubuntu 22.04 LTS or Debian 12). Windows follows equivalent logic, but with different paths and binaries.

Prerequisites

Before starting, make sure you have administrative access to the server and a recent backup of the SA-MP directory.

Prerequisites

A Linux server running Ubuntu 22.04 LTS or Debian 12, root or sudo access, a working compiled .amx gamemode on SA-MP 0.3.7 R2 or R3, and a 30-60 minute maintenance window. Have the current IP and port at hand.

Open.MP version 1.4.0.2779 or newer
UDP port 7777 (SA-MP default)
Architecture x86_64 (linux64)
Dependencies libc6, libstdc++6

The migration assumes your gamemode is already stable. If the server has recurring crashes on the original SA-MP, fix that first — Open.MP will not patch bugs in your Pawn code.

Step 1 — Full backup of the current server

Before any download, snapshot the current state. If something goes wrong during the migration, you can restore in seconds.

01

Stop the running SA-MP process:

sudo systemctl stop samp-server

If you do not use systemd, kill the process directly: pkill -f samp03svr. Confirm with ps aux | grep samp that nothing is running.

02

Create a timestamped backup file:

cd /opt
sudo tar -czf samp-backup-$(date +%Y%m%d-%H%M).tar.gz samp/

The tarball includes gamemodes, filterscripts, plugins, scriptfiles, server.cfg, log.txt, and any SQLite database. Move this file off the server (rsync, scp) before continuing.

03

Explicitly list what you have installed for future reference:

ls -lh /opt/samp/plugins/ > /tmp/plugins-list.txt
ls -lh /opt/samp/filterscripts/ > /tmp/filterscripts-list.txt
cat /opt/samp/server.cfg > /tmp/server-cfg-original.txt

These three files help you audit the migration afterwards — you can confirm everything came back.

Step 2 — Download and extract Open.MP

Open.MP is distributed as a static tarball on the project’s official GitHub.

04

Download the latest stable release:

cd /opt
sudo wget https://github.com/openmultiplayer/open.mp/releases/download/v1.4.0.2779/open.mp-linux-x86_64.tar.gz

Check the SHA256 checksum published on the release page before extracting — a legitimate release always ships with a signed hash.

05

Extract into a separate directory, without overwriting the current SA-MP install:

sudo mkdir omp
sudo tar -xzf open.mp-linux-x86_64.tar.gz -C omp/ --strip-components=1
sudo chown -R samp:samp omp/

Keep /opt/samp/ and /opt/omp/ side by side. This allows immediate rollback if anything fails.

Step 3 — Asset migration

Here you copy the gamemode, plugins, filterscripts, and scriptfiles from the SA-MP directory into Open.MP. The structure is identical.

06

Copy assets preserving permissions:

sudo cp -av /opt/samp/gamemodes/* /opt/omp/gamemodes/
sudo cp -av /opt/samp/filterscripts/* /opt/omp/filterscripts/
sudo cp -av /opt/samp/scriptfiles/* /opt/omp/scriptfiles/

-av preserves timestamps, permissions, and symlinks. Confirm with ls -lh /opt/omp/gamemodes/ that the main .amx is there with the same size as the original.

07

Plugins need special attention — some older versions do not run on Open.MP:

ls /opt/samp/plugins/

For each listed plugin, check its official page to see whether the current version supports Open.MP. The most common ones (sscanf, streamer, MySQL R41+, Pawn.RakNet) have Open.MP-ready builds published. Download the Open.MP-ready versions and place them in /opt/omp/components/ — note that the directory has been renamed.

Legacy plugins

If you rely on a plugin that has no Open.MP release in 2026 (abandoned project), evaluate alternatives before migrating. Forcing an old SA-MP plugin onto Open.MP causes a silent crash on startup — the server boots but locks up within minutes.

Step 4 — Converting server.cfg to config.json

Open.MP replaced the plain-text format with structured JSON. Fortunately, it handles the conversion automatically.

08

Copy server.cfg into the Open.MP directory:

sudo cp /opt/samp/server.cfg /opt/omp/

Do not copy the default config.json — it must be generated from your cfg to preserve your settings.

09

Run the server once in converter mode:

cd /opt/omp
sudo -u samp ./omp-server

On the first execution, it detects the server.cfg, reads every key, generates the equivalent config.json, and exits. Confirm with cat config.json that the file contains your settings (rcon_password, hostname, gamemodes, plugins, maxplayers).

10

Rename filterscripts and plugins inside config.json if needed:

sudo nano config.json

The pawn.legacy_plugins key accepts a list of .so plugins. The pawn.main_scripts key defines gamemodes (format "gamemodename 1" just like SA-MP). Verify that both reflect what was in the original server.cfg.

JSON validation

Run python3 -m json.tool config.json to validate the syntax before starting the server. Broken JSON causes a boot error with no clear message.

Step 5 — Boot, validation, and cutover

With everything migrated, it is time to start Open.MP and validate that it responds the same way as SA-MP.

11

Start Open.MP in the foreground first, so you can read the log directly:

cd /opt/omp
sudo -u samp ./omp-server

You should see initialization lines: version, loaded components, plugins, gamemodes, and finally Server is ready to accept connections. Plugin errors show up here immediately.

12

In another terminal, test the connection with a regular SA-MP client pointing to IP:7777. Log in, move around the map, fire off your gamemode commands. If everything responds the same as the original SA-MP, the migration is validated.

13

Create a permanent systemd unit for Open.MP:

sudo nano /etc/systemd/system/omp-server.service

Contents:

[Unit]
Description=Open.MP Server
After=network.target

[Service]
Type=simple
User=samp
WorkingDirectory=/opt/omp
ExecStart=/opt/omp/omp-server
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Enable with sudo systemctl daemon-reload && sudo systemctl enable --now omp-server. Disable the old SA-MP unit with sudo systemctl disable samp-server.

Verification

The server is officially migrated when all the points below are confirmed:

systemctl status omp-server
ss -ulnp | grep 7777
tail -f /opt/omp/logs/server.log

The first command shows the unit as active with a PID. The second confirms that UDP port 7777 is being listened to by the Open.MP process. The third follows the log in real time — connecting players appear as [connect] with IP and nickname.

Connect with the SA-MP client using the same IP and port as before. If the skin selection screen appears, the spawn works, and gamemode commands respond, the migration is complete.

Troubleshooting

Server fails to start and exits without a message

It is almost always an incompatible plugin. Move all plugins out temporarily (sudo mv /opt/omp/components/* /tmp/), boot the server empty, and reintroduce one plugin at a time until you find the culprit.

”Failed to load gamemode” error

The .amx was compiled with a very old Pawn compiler version (pre-3.2). Recompile with the community compiler (3.10.10+) using the qawno include from open.mp. Do not touch the code — just recompile with updated headers.

Players connect but get kicked immediately

Check whether rcon_password in config.json is different from the default. Open.MP refuses connections if rcon_password is empty or set to “changeme”. Set a strong password and restart.

Emergency rollback

If something critical fails in production, stop Open.MP (sudo systemctl stop omp-server), bring the SA-MP unit back up (sudo systemctl start samp-server), and players reconnect to the old server within seconds. Both binaries share port 7777, but only one can run at a time.

Next steps

With Open.MP running, some natural next steps:

  • Recompile the gamemode with the community compiler 3.10.10+ to access the new Open.MP natives (better vehicle synchronization, additional callbacks).
  • Migrate legacy plugins to the Open.MP-ready versions officially maintained on the project’s GitHub.
  • Configure uptime and tickrate monitoring to track performance against the original SA-MP.
  • If you do not have a firewall set up yet, restrict port 7777 to the expected UDP traffic and block scans.

If you are running the server in production and want infrastructure tuned for low-latency connections from Brazilian players, the Hostini game hosting plans deliver servers with denial-of-service protection and stable tickrate in Brazil locations.

Frequently asked questions

Is Open.MP compatible with Pawn gamemodes from SA-MP 0.3.7?

Yes. Open.MP was designed to run the .amx gamemode compiled for SA-MP 0.3.7 R2/R3 without modification. Compatibility covers natives, callbacks, and the synchronization model. Gamemodes that rely on exploits of the original binary may need a small adjustment.

Do I need to recompile the gamemode with a new compiler?

Not necessarily. The existing .amx continues to work. Recompiling with the community compiler (3.10.10+) is recommended to access new Open.MP natives and optimizations, but you can migrate first and recompile later at your own pace.

Do SA-MP plugins work on Open.MP?

Most popular plugins (sscanf, MySQL R41+, streamer, YSF/FCNPC in their open.mp versions) work without changes. Very old plugins or those tied specifically to the SA-MP binary may need an updated version — check the plugin repository first.

Can I keep the same IP and port for players to connect?

Yes. Open.MP uses the same network protocol as SA-MP 0.3.7, so players connect with the regular SA-MP client at the usual IP:port. No reconfiguration is needed on the client side.

What changes in the configuration file?

The plain-text server.cfg is replaced by a structured config.json. Open.MP ships an automatic converter that runs on first launch, reading the old server.cfg and generating the equivalent config.json. Some keys have been renamed.

Does Open.MP support clients other than the original SA-MP?

Today the official client is still SA-MP 0.3.7. The open.mp project has its own client in development but it is not yet the recommended path for production. The server migration requires nothing on the player's side.

Topics:
Next steps VPS, dedicated or managed panel for FiveM, SAMP, MTA, Tibia and more.Host your game server with Hostini →
Was this tutorial helpful?
Chat on WhatsApp