VulCode

Pluginy do gier: Minecraft, FiveM i SCP:SL

Piszemy pluginy do Minecrafta, skrypty FiveM i pluginy SCP: Secret Laboratory pod mechaniki, których nie ma w gotowych paczkach: własną walutę, sklep, rangi, mini gry i wszystko, co wymyślisz dla swoich graczy.

Katalog usług
Minecraft: dżungla z paskiem przedmiotów gracza
SCP: Secret Laboratory: brama Tesli w ośrodku

Trzy gry, trzy sposoby pisania

Każda gra ma inny język, inne API i inne pułapki. Piszemy w tym, na czym stoi Twój serwer, i trzymamy się konwencji danej społeczności.

Minecraft: tajga

Minecraft

Język
Java
API
Paper, Spigot
Typowe pluginy
Ekonomia, minigry, menu GUI, zapis danych graczy
GTA V: Los Santos o zachodzie słońca

FiveM

Język
Lua albo JavaScript
API
ESX, QBCore
Typowe pluginy
Prace, frakcje, interfejsy NUI
SCP: Secret Laboratory: strefa powierzchni nocą

SCP: Secret Laboratory

Język
C#
API
EXILED, LabAPI
Typowe pluginy
Nowe role, wydarzenia rundy, narzędzia dla administracji

Ekonomia i sklep na serwerze

Serwer Minecraft robi 20 ticków na sekundę, czyli jeden co 50 ms, i w tym czasie musi zmieścić całą logikę gry. Dlatego ekonomia i sklep zapisują dane w tle, a do gry wraca tylko wynik.

Przykładowy ekran: sklep serwera w oknie skrzyni, diamentowy kilof za 1 250 monet, saldo gracza, stan po zakupie i limit dwóch sztuk na dzień
  1. Saldo w bazie, nie w pliku

    Stan kont plugin trzyma w bazie z kopią zapasową, nie w pojedynczym pliku, więc postępy graczy nie giną przy awarii serwera.

  2. Ceny i limity w konfiguracji

    Cenę, dzienny limit i teksty sklepu zmieniasz w pliku konfiguracji z opisem każdej opcji, bez programisty i bez kompilowania.

Przykładowy ekran: czat gry na telefonie z odebranym zamówieniem ze sklepu, zakupem kilofa, saldem po zakupie i przelewem od innego gracza
  1. Zamówienie ze strony czeka na gracza

    Opłacone zamówienie trafia do kolejki nagród, a plugin wydaje je przy najbliższym wejściu gracza. Powtórzone powiadomienie od operatora płatności nie wydaje nagrody drugi raz.

  2. Zakup bez lagów

    Zapis zakupu do bazy idzie w tle, poza głównym wątkiem, więc nie zatrzymuje ticków serwera.

FiveM: logika na serwerze, nie u gracza

Zasób FiveM opisuje plik fxmanifest.lua: skrypty klienta, skrypty serwera i stronę NUI. O pieniądzach i przedmiotach decyduje warstwa serwera, nigdy gracz.

Na komputerze gracza
  1. NUI
    ui_page w fxmanifest.lua, HTML i JavaScript, menu prac i frakcji

    Gracz klika w interfejsie, że skończył pracę.

  2. Skrypty klienta
    client_scripts, Lua albo JavaScript, to, co gracz widzi i klika

    Skrypt klienta przekazuje prośbę na serwer i niczego sam nie rozstrzyga.

Na serwerze
  1. Skrypty serwera
    server_scripts, sprawdzenie warunków, wypłata

    Serwer sprawdza, czy praca naprawdę została wykonana, i dopiero wtedy wypłaca.

  2. Framework
    ESX, QBCore

    Framework dopisuje pieniądze do postaci gracza.

  3. Baza danych
    Postacie i ekonomia graczy, kopia zapasowa

    Nowy stan konta trafia do bazy z kopią zapasową.

Podstawione zdarzenie

Skrypt klienta działa na komputerze gracza, więc da się go obejść, a zdarzenie serwera można wywołać z podstawionymi danymi.

Odrzucone. Tego, co przysyła klient, nie bierzemy na wiarę: serwer sam sprawdza, czy praca została wykonana.

Co masz na własność

Dostajesz cały zasób z prawami po odbiorze i opłaceniu całości, a wypłaty, ceny i teksty zmieniasz w plikach konfiguracji bez programisty. Repozytorium ma historię zmian, więc zasób może dalej rozwijać także ktoś inny niż my.

SCP:SL: LabAPI czy EXILED

LabAPI to oficjalny framework modów od twórców gry, a EXILED to framework rozwijany przez społeczność. Pierwsze pytanie nie brzmi, który jest lepszy, tylko na czym stoi Twój serwer.

LabAPI

SCP:SL
Northwood Studios
LabAPI
Northwood Studios
Twój plugin
piszemy my

Grę i framework rozwija ten sam zespół: Northwood Studios, twórcy gry. To oficjalny framework modów SCP: Secret Laboratory.

Kiedy pasuje
  • Serwer dopiero startuje albo i tak przepisujesz pluginy od nowa, więc nic nie trzyma Cię przy innym frameworku.
  • Chcesz pisać na oficjalnym frameworku od Northwood Studios, twórców gry.
  • Pluginy, które chcesz dołożyć, są napisane pod LabAPI.
  • Grę i framework rozwija ten sam zespół, a Ty wolisz sprawdzać zgodność po aktualizacji z jednym źródłem zmian.
  • Plugin ma działać na wielu serwerach, nie tylko na Twoim, więc opierasz go na frameworku, który twórcy gry podają jako oficjalny.
Wniosek

Serwer bez pluginów albo zestaw pisany od nowa stawiamy na LabAPI. Nowy kod opiera się wtedy na tym, co udostępniają twórcy gry, a nie na dodatkowym projekcie.

EXILED

SCP:SL
Northwood Studios
EXILED
ExMod-Team, społeczność
Twoje pluginy EXILED
już działają
Nowy plugin
piszemy my

Framework rozwija społeczność, w repozytorium ExMod-Team. To framework pluginów z systemem zdarzeń gry.

Kiedy pasuje
  • Serwer już działa na EXILED i ma pluginy, których nie chcesz przepisywać.
  • Pluginy, które chcesz zachować albo dołożyć, korzystają z EXILED.
  • Twoje pluginy reagują na zdarzenia gry przez system zdarzeń EXILED, a nowy plugin ma z nimi współpracować.
  • Administracja zna już konfigurację i komendy pluginów EXILED, a zmiana frameworka oznaczałaby naukę od nowa.
  • Chcesz nowej mechaniki, a nie przebudowy całego serwera.
Wniosek

Serwer, który stoi na EXILED, zostaje na EXILED: nowy plugin działa obok tych, które już masz, bez przepisywania zestawu. Przejście na LabAPI wyceniamy osobno, jeśli zechcesz je zrobić.

Z czym łączymy plugin

Serwer gry rzadko żyje sam. Te połączenia pojawiają się najczęściej.

  • Discord

    Gracz łączy konta raz, a potem ranga w grze i rola na Discordzie zmieniają się razem.

  • Itemshop i płatności

    Opłacone zamówienie czeka w kolejce nagród, a gdy bank cofnie płatność, nagroda trafia do kolejki odebrania.

  • Panel serwerów

    Skrypt instalacyjny egga pobiera plugin razem z grą, a klient hostingu zmienia jego konfigurację w panelu albo przez SFTP.

Plugin albo zasób
Twój serwer gry

Wejście gracza, zmiana rangi, zgłoszenie gracza, statystyki i stan serwera.

Zapytania do bazy i usług w sieci idą poza głównym wątkiem, więc nie zatrzymują ticków.

  • Steam

    Po SteamID plugin łączy konto ze strony z graczem w grze, więc zakup trafia do właściwej osoby także po zmianie nicku.

  • Strona serwera

    Strona czyta ranking z tej samej bazy, do której plugin zapisuje statystyki, więc liczby na stronie i w grze się zgadzają.

  • Baza danych

    Salda, kolejka nagród i statystyki w bazie z kopią zapasową, a nie w plikach na serwerze gry.

Jak powstaje plugin

Od opisu mechaniki do pluginu zainstalowanego na serwerze.

  1. Opis mechaniki

    Opisujesz, co ma się dziać w grze, i podajesz listę pluginów, a my ustalamy wersję gry, framework, zależności i możliwe konflikty.

    Dostajesz: Wycena i termin

  2. Wersja testowa

    Plugin trafia na serwer testowy z tą samą wersją gry i zestawem pluginów, gdzie sprawdzasz go z administracją przed wdrożeniem.

    Dostajesz: Poprawki po testach

  3. Test obciążenia

    Przy wielu graczach naraz mierzymy wpływ pluginu na ticki i sprawdzamy, że zapisy danych są kompletne.

    Dostajesz: Plugin gotowy na produkcję

  4. Instalacja

    Instalujemy plugin na serwerze produkcyjnym albo przekazujemy instrukcję Twojej administracji.

    Dostajesz: Kod na własność i instrukcja

  5. Aktualizacje

    Po nowej wersji gry serwer graczy zostaje na dotychczasowej, a plugin poprawiamy na nowej, zanim serwer się przeniesie.

    Dostajesz: Zgodność z nowymi wersjami

Najczęstsze pytania o pluginy do gier

Odpowiedzi o wersjach gry, kodzie źródłowym i wycenie.

Opisz mechanikę, której brakuje na serwerze

Napisz, na jakiej grze i frameworku stoi serwer i co ma się dziać. Odpowiemy w godzinę z pytaniami i wyceną.