Launcher desktop untuk server SA-MP yang dibangun menggunakan ElectronJS dengan HTML, CSS, dan Vanilla JavaScript (tanpa framework frontend seperti React/Vue/Angular, dan tanpa Bootstrap/Tailwind).
Launcher mendukung multi-server, di mana pengguna dapat menambah, menghapus, dan memilih server SA-MP sendiri dari daftar. Informasi setiap server didapatkan langsung dari server tujuan menggunakan UDP socket (dgram) mengikuti SA-MP Query Mechanism, tanpa bergantung pada API endpoint eksternal mana pun.
Untuk daftar lengkap fitur pada setiap versi, silakan lihat halaman Releases.
SAMP-World/
│
├── package.json
├── main.js
├── preload.js
├── installer.nsh
├── bin/
│ ├── bin/version/
│ ├── bin/shared/
│ ├── bin/client/
├── renderer/
│ ├── index.html
│ ├── style.css
│ └── app.js
├── assets/
│ ├── icon.ico
│ └── logo.png
└── README.md
Saat dijalankan, launcher akan membuat beberapa file konfigurasi/log secara otomatis di folder userData Electron (di Windows biasanya %APPDATA%\SA:MP World\):
config.json— menyimpan pengaturan launcher.servers.json— menyimpan daftar server SA-MP yang ditambahkan pengguna.SAMP-World.txt— file log aplikasi.
- Node.js versi 18 LTS atau lebih baru
- npm (sudah termasuk dalam instalasi Node.js)
- Sistem operasi untuk build target Windows: Debian Linux (menggunakan Wine untuk proses packaging NSIS)
- Aplikasi Discord Desktop berjalan di background (untuk fitur Discord Rich Presence)
- Koneksi jaringan yang mengizinkan komunikasi UDP keluar (digunakan untuk query informasi server) dan HTTPS keluar (digunakan untuk pengecekan update)
- Beberapa fitur (penulisan nickname ke Windows Registry, deteksi proses
gta_sa.exeuntuk Discord Rich Presence, DLL injection) hanya aktif di platform Windows; di platform lain fitur tersebut otomatis dilewati tanpa error
Masuk ke folder project, lalu jalankan:
npm install
Perintah ini akan mengunduh electron, electron-builder, dan @xhayper/discord-rpc sesuai yang sudah didefinisikan di package.json. Query informasi server memakai modul bawaan Node.js dgram, sehingga tidak ada dependency tambahan yang diperlukan untuk fitur ini.
npm start
Perintah ini akan membuka window Electron berukuran 900x550 dengan tampilan launcher.
npm run dist
Perintah ini akan menghasilkan installer NSIS (SA:MP-World-Setup.exe) dan versi portable (SA:MP-World-Portable.exe) sekaligus dalam satu kali build, karena target win pada electron-builder sudah dikonfigurasi dengan dua target: nsis dan portable.
Hasil build akan berada di folder:
dist/
Isi folder dist/ setelah build selesai antara lain:
dist/SA:MP-World-Setup.exe
dist/SA:MP-World-Portable.exe
Berikut adalah langkah-langkah lengkap untuk melakukan build aplikasi Windows x64 di sistem Debian Linux menggunakan Electron Builder.
sudo apt update
sudo apt upgrade -y
Debian bawaan biasanya memiliki versi Node.js yang lama, disarankan menggunakan NodeSource repository:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
Cek versi yang terinstall:
node -v
npm -v
sudo apt install -y build-essential
Aktifkan arsitektur 32-bit terlebih dahulu:
sudo dpkg --add-architecture i386
sudo apt update
Install Wine:
sudo apt install -y wine wine32 wine64
Cek instalasi Wine:
wine --version
5. Install Dependency Tambahan (mono dan libgnutls, opsional namun direkomendasikan agar proses NSIS berjalan lancar)
sudo apt install -y mono-complete
sudo apt install -y libgnutls30
cd SAMP-World
npm install
npm run dist
Electron Builder akan otomatis:
- Membundle aplikasi menggunakan Electron untuk platform Windows x64.
- Membuat installer NSIS (
SA:MP-World-Setup.exe). - Membuat versi portable (
SA:MP-World-Portable.exe). - Menggunakan Wine untuk proses signing/packaging resource
.exedi lingkungan Linux.
Setelah proses build selesai, file hasil build dapat ditemukan di:
dist/SA:MP-World-Setup.exe
dist/SA:MP-World-Portable.exe
File-file tersebut siap didistribusikan dan dijalankan di Windows x64.
- File
samp.exe/samp.dlltidak disertakan dalam project ini karena merupakan file resmi dari game client GTA: San Andreas Multiplayer (SA-MP) dan bukan bagian dari source code launcher. - Informasi server didapat langsung lewat query UDP (
dgram) ke masing-masing server, bukan lewat API endpoint eksternal. - Semua komunikasi antara proses main dan renderer menggunakan IPC (
ipcMain.handle/ipcRenderer.invoke) yang dijembatani secara aman lewatpreload.jsmenggunakancontextBridge. - Window launcher berukuran tetap 900x550, tidak resizable, dan tidak bisa fullscreen.
- Fitur Discord Rich Presence, penulisan nickname ke registry, pemantauan proses game, dan pengecekan update bersifat opsional/non-blocking dan tidak akan menghentikan jalannya launcher jika tidak tersedia (misalnya di platform non-Windows, Discord tidak aktif, atau tidak ada koneksi internet).
- Electron — framework untuk membangun aplikasi desktop lintas platform menggunakan JavaScript.
- Electron Builder — tool untuk packaging dan build installer aplikasi Electron.
- @xhayper/discord-rpc — library untuk integrasi Discord Rich Presence.
dgram(modul bawaan Node.js) — untuk query informasi server SA-MP lewat UDP.- HTML5, CSS3, dan Vanilla JavaScript (ES6+) — tanpa framework frontend tambahan.
MIT License — bebas digunakan dan dimodifikasi.
