BeamMP სერვერი პატარა დამოუკიდებელი პროგრამაა და არა BeamNG.drive-ის ასლი. ის კლიენტებს შორის მანქანების მდგომარეობას გადასცემს, შემოსვლისას მოდებს ურიგებს და Lua plugin-ებს უშვებს. ის ერთ ბორბალსაც არ ახდენს სიმულაციას. ამ ერთი ფაქტით აიხსნება ქვემოთ დარჩენილი ყველაფერი: სერვერი იაფია CPU-სა და მეხსიერებაზე, ძვირია გამტარუნარიანობაზე, ხოლო მოთამაშეთა რაოდენობას რეალურად ზღუდავს ის, რისი სიმულაციაც შენი მოთამაშეების კომპიუტერებს შეუძლია, და არა ის, რასაც ქირაობ.
დასაწყებად სამი რამ გჭირდება: სერვერის binary, ერთი პორტი (30814 ნაგულისხმევად, TCP-ზეც და UDP-ზეც) და auth key BeamMP Keymaster-იდან. გასაღები სავალდებულოა და მას ჰოსტი ვერ მოგცემს - ის შენს საკუთარ BeamMP ანგარიშზეა მიბმული. დანარჩენი ყველაფერი ერთი ServerConfig.toml-ია.
რა არის BeamMP და რას აკეთებს სერვერი#
BeamNG.drive-ს ოფიციალური მულტიპლეერი არ აქვს. BeamMP არის საზოგადოების პროექტი, რომელიც მას ამატებს: კლიენტის მხარის მოდი და launcher მოთამაშეებისთვის, და ეს სერვერი ყველასთვის შესახვედრად.
არქიტექტურა ღირს, რომ გაითავისო, სანამ რამეს ზომავ ან ლაგზე ჰოსტს ადანაშაულებ:
- ყოველი კლიენტი საკუთარ მანქანას ავტორიტეტულად ახდენს სიმულაციას. შენი ფიზიკა შენს მანქანაზე მუშაობს.
- სხვა ადამიანების მანქანებიც ლოკალურად სიმულირდება, სერვერიდან მოსული მდგომარეობის განახლებებით შესწორებული. ამიტომ დაკარგული პაკეტების მქონე დისტანციური მანქანა შენს ეკრანზე ცახცახებს, ხტება ან კედელში გადის, თუმცა მათთან კარგად გამოიყურება.
- სერვერს ფიზიკის მდგომარეობა არ აქვს. ის მოთამაშეებს ავთენტიფიცირებს, აკონტროლებს, ვის რომელი მანქანა ეკუთვნის, განახლებებს გადასცემს და შენს Lua-ს უშვებს.
შედეგები მყისიერია. ათმოთამაშიანი სერვერი ოთხ-ოთხი მანქანით ნიშნავს ორმოც მანქანას, რომელიც ყოველი მოთამაშის კომპიუტერზე სიმულირდება, ამიტომ MaxCars კლიენტის წარმადობის პარამეტრია, რომელიც შემთხვევით სერვერზე კონფიგურირდება. და მოთამაშე, რომელიც "სერვერის ლაგზე" ჩივის, ჩვეულებრივ აღწერს packet loss-ს ან საკუთარ CPU-ს და არა გადატვირთულ ჰოსტს. Latency, jitter და packet loss ამ საუბრისთვის სწორი ლექსიკაა.
მოთხოვნები და რესურსების მოხმარება#
გეიმ სერვერების სტანდარტებით ეს პაწაწინაა. სამუშაო, რომელსაც ის ასრულებს, არის პაკეტების კოპირება და შემოსვლისას მოდების არქივების გადაცემა.
| მოთამაშეები | RAM | vCPU | შენიშვნა |
|---|---|---|---|
| 8-მდე, მოდების გარეშე | 2 GB | 1 | კომფორტულია. ნაგულისხმევი შემთხვევა |
| 10-16, რამდენიმე მოდი | 3 GB | 1.5 | მოდების გადაცემა ერთადერთი ნახტომია |
| 20-30, მძიმე მოდების ნაკრები | 4-6 GB | 2 | გამტარუნარიანობა ხდება რეალური შეზღუდვა |
- CPU: დაბალია და ძირითადად ერთ-thread-იანი. თუ შენი სერვერი ათი მოთამაშით 100%-ზე ჩერდება, გეგმის ნაცვლად ჯერ Lua plugin-ს უყურე, რომელიც ყოველ კადრზე რაღაც სისულელეს აკეთებს.
- დისკი: თავად სერვერი რამდენიმე ათეული მეგაბაიტია. რაც იზრდება, არის
Resources/Clientსაქაღალდე - სერიოზული მოდების ნაკრები ადვილად რამდენიმე გიგაბაიტია და ამ ბაიტებიდან ყოველი ყველა შემომსვლელ მოთამაშეს ეგზავნება. - გამტარუნარიანობა: ეს ის არის, რაზეც უნდა იფიქრო. ყოველი მანქანის მდგომარეობა ყველა კლიენტს ეგზავნება, ამიტომ ტრაფიკი მოთამაშეების გამრავლებულია მანქანებზე, მოდების ჩამოტვირთვა კი ნაკადებად მოდის, როცა ვინმე შემოდის. მოსალოდნელია შესამჩნევად მეტი გამავალი ტრაფიკი, ვიდრე Minecraft-ის ან Valheim-ის სერვერზე იმავე რაოდენობის ადამიანით. უზომო არ ნიშნავს უსასრულოს; გამტარუნარიანობა და სამართლიანი გამოყენება განმარტავს განსხვავებას.
პრაქტიკული რჩევაა, საჯარო სერვერზე MaxCars 2 ან 3-ზე დააყენო და მხოლოდ იმ ჯგუფისთვის გაზარდო, რომელსაც იცი, რომ აპარატურა აქვს. სხვა არაფერი, რასაც აკონფიგურირებ, სერვერის შეგრძნებაზე იმდენად არ მოქმედებს.
Auth key-ის მიღება#
ყოველ BeamMP სერვერს სჭირდება auth key, კერძოსაც. გასაღები სერვერს BeamMP backend-ს ამოაცნობინებს, რომელიც შემომსვლელ მოთამაშეებს ავთენტიფიცირებს. მის გარეშე სერვერი გაშვებაზე უარს ამბობს.
- გადადი BeamMP Keymaster-ზე
keymaster.beammp.com-ზე და შედი Discord-ით. - შექმენი გასაღები, დაარქვი სახელი, რომელსაც მოგვიანებით ამოიცნობ, და დააკოპირე სტრიქონი.
- ჩასვი ის
ServerConfig.toml-შიAuthKey-ის ადგილას.
გასაღები შენს ანგარიშს ეკუთვნის და არა ჰოსტინგ პროვაიდერს. შენი სახელით მის გაცემას ვერავინ შეძლებს, და ის პაროლივით უნდა მოექცე: ერთი გასაღები ერთ სერვერზე, არასოდეს ჩასვა საჯარო არხში, გადააგენერირე, თუ გაჟონა. იგივე მსჯელობა ვრცელდება ნებისმიერ მონაცემზე, რასაც სერვერი ინახავს - იხილე გარემოს ცვლადები და საიდუმლოები.
RE:NODE-ზე ეს ერთ-ერთი თამაშია, რომელსაც შენი საკუთარი მონაცემები სჭირდება. სერვერი იქმნება გადახდის დადასტურებისთანავე, ხოლო დაყენება Setup ჩანართზე ელოდება, სანამ გასაღებს არ ჩასვამ, და იქვეა ადგილი, სადაც მის გამოსაცვლელად მიხვალ.
დაყენება და პირველი გაშვება#
ჩამოტვირთე სერვერის build შენი პლატფორმისთვის BeamMP პროექტიდან, ჩადე ის საკუთარ დირექტორიაში და გაუშვი ერთხელ. ის თავის გვერდით წერს ნაგულისხმევ ServerConfig.toml-ს, ბეჭდავს საჩივარს დაკარგული auth key-ის შესახებ და გამოდის. ეს მოსალოდნელია - ჩაწერე გასაღები და ისევ გაუშვი.
BeamMP-ServerServerConfig.tomlResources/ Client/ Server/პანელზე დაფუძნებულ ჰოსტზე binary და საქაღალდეების სტრუქტურა უკვე იქაა; ServerConfig.toml-ს ბრაუზერში არედაქტირებ, მოდებს კი Resources/Client-ში SFTP-ით ან ფაილების მენეჯერით ჩააგდებ. SFTP და ფაილების მენეჯერი შეიცავს დაკავშირების დეტალებს და ეს გონივრული გზაა მრავალგიგაბაიტიანი მოდების ნაკრების ასატვირთად.
სერვერის ვერსია განახლებული გქონდეს. BeamMP BeamNG-ის გამოშვებებთან ერთად ახლდება, და ძველ პროტოკოლზე მომუშავე სერვერს განახლებული კლიენტები უარყოფენ - იგივე ხაფანგი, რაც ყველა მოდირებულ თამაშს აქვს. რა უნდა გააკეთო, როცა მოდის განახლება რღვევს ზოგადი ჩვევაა, რომელიც ღირს: იცოდე შენი მომუშავე ვერსია, შეინახე კონფიგურაციის ასლი და ნუ განაახლებ ღამეს, როცა ხალხი გელოდება.
აქ დასაკარგი სამყაროს მდგომარეობა არ არის, რაც backup-ებს უჩვეულოდ მარტივს და უჩვეულოდ ადვილად უგულებელსაყოფს ხდის. შესანახად ღირს ServerConfig.toml, ყველაფერი Resources/Server-ის ქვეშ და სია იმისა, რაც Resources/Client-შია. კონფიგურაციის აღდგენა ხუთი წუთის საქმეა; წლის განმავლობაში დაზუსტებული Lua plugin-ების ნაკრები - არა, და არც მოდების ვერსიების ის ზუსტი კომბინაცია, რომელიც ამჟამად ერთად მუშაობს. გააკეთე backup ყოველ მოდის ცვლილებამდე და ყოველ სერვერის განახლებამდე და შეინახე ისეთ ადგილას, რომელიც სერვერი არ არის - backup-ები, რომლებიც მართლა აღდგება ამ საკითხს პუნქტზე უკეთ ასაბუთებს.
ServerConfig.toml სტრიქონ-სტრიქონ#
ფაილი TOML-ია, ამიტომ სტრიქონებს ბრჭყალები სჭირდება, boolean-ებს კი - არა. სინტაქსის შეცდომა სერვერს აჩერებს და არ უგულებელყოფს, რაც სიკეთეა.
[General]Port = 30814AuthKey = "paste-your-keymaster-key-here"Name = "Sunday Night Cruise"Description = "Slow driving. No ramming. Italy."Tags = "Freeroam,Cruise,Europe"Map = "/levels/italy/info.json"MaxPlayers = 10MaxCars = 2Private = falseAllowGuests = falseLogChat = trueDebug = falseIP = "::"InformationPacket = trueResourceFolder = "Resources"| გასაღები | რას აკეთებს |
|---|---|
Port | პორტი, რომელსაც მოთამაშეები უკავშირდებიან. სჭირდება TCP-ც და UDP-ც ღია |
AuthKey | შენი Keymaster გასაღები. მის გარეშე სერვერი არ ირთვება |
Name | სახელი სერვერების სიაში. ფორმატირების კოდები მხარდაჭერილია |
Description | ტექსტის ორი სტრიქონი, რომელიც სერვერის არჩევისას ჩანს |
Tags | მძიმით გამოყოფილი კატეგორიები თამაშში ფილტრებისთვის |
Map | გზა დონის info.json-მდე, იხილე ქვემოთ |
MaxPlayers | სლოტები |
MaxCars | მანქანები თითო მოთამაშეზე. წარმადობის ყველაზე მნიშვნელოვანი პარამეტრი |
Private | true სერვერს საჯარო სიიდან შორს ინახავს |
AllowGuests | შეუძლიათ თუ არა BeamMP ანგარიშის გარეშე მოთამაშეებს შემოსვლა |
LogChat | ჩატს სერვერის ლოგში წერს. გამოსადეგია მოდერაციისთვის |
Debug | დეტალური ლოგირება. გამორთული დატოვე, ლოგს სწრაფად ზრდის |
IP | რომელ მისამართზე მიება. :: ან 0.0.0.0 ნიშნავს ყველას |
InformationPacket | ავთენტიფიკაციის გარეშე კლიენტებს სერვერის დეტალების გამოკითხვის უფლებას აძლევს |
ResourceFolder | სად ცხოვრობს მოდებისა და plugin-ების საქაღალდეები |
სერვერის ბოლო ვერსიები [General]-ის გარდა სხვა სექციებსაც ამატებენ, ჩვეულებრივ [Misc] ბლოკს განახლების შეხსენების გადამრთველებით, როგორიცაა ImScaredOfUpdates და UpdateReminderTime, და HTTP ბლოკს არჩევითი ჩაშენებული ვებ endpoint-ისთვის. ფაილი, რომელსაც სერვერი ქმნის, ავტორიტეტია იმაში, რომელი მათგანი აქვს შენს build-ს; რასაც ის არ წერს, შენი build სავარაუდოდ არ კითხულობს.
რუკები და კლიენტის მოდები#
Map-ის მნიშვნელობა გზაა დონეების სტრუქტურაში და არა მეგობრული სახელი. ნაგულისხმევია /levels/gridmap_v2/info.json, ოფიციალური დონეები კი ამ საქაღალდეების სახელებს იყენებენ:
| დონე | საქაღალდე |
|---|---|
| Gridmap v2 | gridmap_v2 |
| Small grid | smallgrid |
| East Coast USA | east_coast_usa |
| West Coast USA | west_coast_usa |
| Italy | italy |
| Utah | utah |
| Johnson Valley | johnson_valley |
| Jungle Rock Island | jungle_rock_island |
| Small Island | small_island |
| Hirochi Raceway | hirochi_raceway |
| Automation Test Track | automation_test_track |
| Driver Training | driver_training |
| Industrial Site | industrial |
| Derby Arena | derby |
მოდები ატვირთვით მუშაობს და არა workshop-ით. მოდის .zip პირდაპირ Resources/Client-ში ჩააგდე და ის ყველა მოთამაშეს შემოსვლისას გაეგზავნება, შემდეგ კი ავტომატურად ჩაიტვირთება. მანქანებს სხვა არაფერი სჭირდებათ. რუკის მოდს იმავე ადგილას zip სჭირდება პლუს Map სტრიქონი, შეცვლილი ისე, რომ ამ zip-ის შიგნით დონის საქაღალდეზე მიუთითებდეს - გახსენი არქივი და ნახე საქაღალდის სახელი levels/-ის ქვეშ, რადგან ის იშვიათად ემთხვევა ჩამოტვირთვის გვერდზე მითითებულ სახელს.
აქ სამი რამ ტყდება, წინასწარ განჭვრეტადად:
- რუკის გზა არასწორია, ამიტომ სერვერი ნაგულისხმევ დონეზე ირთვება ან დონეს ვერ ტვირთავს. წაიკითხე zip და ნუ გამოიცნობ.
- მოდების ნაკრები უზარმაზარია, ამიტომ პირველად შემომსვლელები რამდენიმეწუთიან ჩამოტვირთვას ელოდებიან და ნახევარი თავს ანებებს. ნაკრები იმდენად პატარა შეინახე, რამდენადაც სერვერის კონცეფცია იძლევა, და ზომა თქვი Discord-ში.
- მოდი თამაშის მიმდინარე ვერსიასთან შეუთავსებელია. BeamNG-ის განახლებები მანქანების მოდებს რეგულარულად არღვევს. როცა პატჩი გამოდის, ყველაზე სწრაფი დიაგნოზია მოდების საქაღალდის განზე გადატანა და სუფთად გაშვება.
სერვერის მხარის Lua plugin-ები Resources/Server-ში დევს და კლიენტებს არასოდეს ეგზავნება.
Lua plugin-ები#
plugin არის საქაღალდე Resources/Server-ის ქვეშ, რომელიც main.lua-ს შეიცავს. სერვერი მას გაშვებისას ტვირთავს, შენ კი იმ მოვლენებზე ჩაება, რაც გაინტერესებს:
local function onInit() print("Welcome plugin loaded") MP.RegisterEvent("onPlayerJoin", "greet") MP.RegisterEvent("onChatMessage", "filter")endfunction greet(playerID) local name = MP.GetPlayerName(playerID) MP.SendChatMessage(-1, name .. " joined. Rules are in the Discord.")endfunction filter(playerID, name, message) if string.find(message, "badword") then MP.SendChatMessage(playerID, "That word is not welcome here.") return 1 endendonInit()მოვლენები, რომლებსაც ყველაზე ხშირად გამოიყენებ: onInit, onPlayerAuth, onPlayerConnecting, onPlayerJoining, onPlayerJoin, onPlayerDisconnect, onChatMessage, onVehicleSpawn, onVehicleEdited და onVehicleDeleted. 1-ის დაბრუნება გაუქმებადი handler-იდან, როგორიცაა onChatMessage ან onVehicleSpawn, მოქმედებას ბლოკავს. ფუნქციები, რომლებსაც მოიხმარ: MP.SendChatMessage (-1 ყველასთვის), MP.DropPlayer, MP.GetPlayerName, MP.GetPlayers, MP.GetPlayerIdentifiers და MP.CreateEventTimer ყველაფრისთვის, რაც პერიოდულია.
სიგნატურები მთავარ სერვერის ვერსიებს შორის შეიცვალა, ამიტომ ჩამოტვირთული plugin შეამოწმე იმ ვერსიის დოკუმენტაციასთან, რომელსაც უშვებ, და ნუ ივარაუდებ, რომ სამი წლის წინანდელი სკრიპტი ისევ მუშაობს. აქედან მოდის ასევე whitelist-ები, მანქანების black list-ები, anti-ram წესები და Discord-ის ხიდები - BeamMP-ს ჩაშენებული ადმინ სისტემა, რომელიც სახელს იმსახურებს, არ აქვს, და ყოველი კარგად მართული სერვერი კარგად მართულია იმიტომ, რომ ვიღაცამ Lua დაწერა ან დააყენა.
წვდომის კონტროლი onPlayerAuth-ზე ეკიდება, რომელიც მოთამაშის დაშვებამდე სრულდება და იღებს მის იდენტიფიკატორებს - ანგარიშის სახელს და რიცხვით BeamMP იდენტიფიკატორს, რომელსაც backend-მა თავი დაუდო. whitelist არის ამ იდენტიფიკატორების ცხრილი, რომელიც ამ handler-ში მოწმდება, MP.DropPlayer-ით ყველასთვის, ვინც მასში არ არის. მიზეზი, რის გამოც ჩვენებითი სახელის ნაცვლად იდენტიფიკატორზე უნდა დაეყრდნო, ცხადია: სახელები იცვლება, იდენტიფიკატორები - არა. ჩაწერე ორივე, როცა ვინმე ცუდად იქცევა, რადგან მის დაბანვამდე შენს screenshot-ში მყოფი სახელი შეიძლება არავის ეკუთვნოდეს.
ფრთხილად იყავი, რას აყენებ. სერვერის მხარის plugin სერვერის პრივილეგიებით მუშაობს და ყველა ჩატის შეტყობინებასა და ყველა კავშირს ხედავს, ამიტომ ანონიმური ფორუმის პოსტიდან აღებული plugin წაკითხვას იმსახურებს, სანამ საქაღალდეში ჩააგდებ, რომელიც გაშვებისას ავტომატურად იტვირთება. იგივე ალღო ეხება იმ კლიენტის მოდებსაც, რომლებსაც სხვა ადამიანების მანქანებზე აგზავნი; მოდირებული სერვერის სისუფთავე სწორედ ამ ჰიგიენაზეა.
plugin-ები შეინახე ვერსიების კონტროლში ან სულ მცირე შეინახე ასლები სერვერს გარეთ. ისინი ის ნაწილია, რომლის ხელახლა ჩამოტვირთვაც არ შეგიძლია.
პორტები, შემოსვლა და firewall-ები#
| პორტი | პროტოკოლი | დანიშნულება |
|---|---|---|
30814 | TCP | კავშირის დამყარება, მოდების გადაცემა |
30814 | UDP | მანქანის მდგომარეობა |
ერთი პორტის ნომერი, ორივე პროტოკოლი, ორივე მიმართულება. მხოლოდ TCP-ს გახსნა კლასიკურ სიმპტომს იძლევა: მოთამაშეები უკავშირდებიან, რუკა იტვირთება და შემდეგ არავინ მოძრაობს - რადგან მდგომარეობის ნაკადი არასოდეს აღწევს. გეიმ სერვერის პორტები განმარტებით აღწერს, რატომ ყოფენ თამაშები ტრაფიკს ასე.
მოთამაშეები სერვერს თამაშში BeamMP სიაში პოულობენ, როცა Private = false, ან უკავშირდებიან პირდაპირ მისამართითა და პორტით. პირდაპირი კავშირი სიისგან დამოუკიდებლად მუშაობს, რაც მას სწორ ტესტად აქცევს, როცა არ იცი, შენი სერვერი გაფუჭებულია თუ უბრალოდ არ არის ჩამოთვლილი. თუ გირჩევნია მისამართის ნაცვლად სახელი დაარიგო, A ჩანაწერი კარგად მუშაობს - დომენის მიბმა გეიმ სერვერზე დეტალებს შეიცავს, BeamMP-ს კი SRV ხრიკები არ სჭირდება.
პრობლემების მოგვარება#
სერვერი გაშვებისთანავე გამოდის. თითქმის ყოველთვის auth key-ია: დაკარგული, არასწორად აკრეფილი ან ისევ placeholder. ლოგის სტრიქონი ამას ამბობს, მაგრამ სწრაფად გადაინაცვლებს.
სერვერი მუშაობს და სიაში არ არის. შეამოწმე Private, შემდეგ შეამოწმე, რომ მანქანას BeamMP backend-თან გამავალი წვდომა აქვს, და დაელოდე რამდენიმე წუთს. ამასობაში დაუკავშირდი პირდაპირ.
მოთამაშეები უკავშირდებიან და "loading"-ზე timeout-ს იღებენ. ჩვეულებრივ მოდების გადაცემაა. დიდი Resources/Client ნელ არხზე კლიენტის მხარის timeout-ს გადააჭარბებს. შეამცირე ნაკრები ან შეეგუე, რომ პირველი შემოსვლები ნელია.
ყველა ერთმანეთის მახლობლად ცახცახებს. ძალიან ბევრი მანქანა. შეამცირე MaxCars, შემდეგ MaxPlayers. გახსოვდეს, რომ სიმულაცია მათ კომპიუტერებზე ხდება, ამიტომ ეს კლიენტის ხარჯია, რომელსაც სერვერიდან მართავ.
ერთი მოთამაშე ვერ თამაშობს და დანარჩენები კარგად არიან. ამ მოთამაშის კავშირია ან მისი CPU. სანამ რამეს ცენტრალურად შეცვლი, სთხოვე შეამოწმოს packet loss სერვერის მისამართამდე.
ვერსიის შეუსაბამობა შემოსვლისას. სერვერის build კლიენტის მოდზე ძველია. განაახლე სერვერი. ეს ყოველი BeamNG გამოშვების შემდეგ ხდება, ამიტომ დაგეგმე და ნუ გაგიკვირდება.
Lua plugin არაფერს აკეთებს. შეამოწმე, რომ ფუნქციების სახელები, რომლებიც MP.RegisterEvent-ს გადასცე, გლობალურია, რომ main.lua თავის საქაღალდეშია Resources/Server-ის ქვეშ, და რომ სერვერის ლოგში ჩატვირთვის დროს სინტაქსის შეცდომა არ არის.
FAQ#
მჭირდება თუ არა BeamNG.drive სერვერზე დაყენებული?
არა. BeamMP სერვერი დამოუკიდებელი პროგრამაა, რომელიც მდგომარეობას გადასცემს და მოდებს ემსახურება. თამაში მხოლოდ მოთამაშეებს სჭირდებათ, პლუს BeamMP კლიენტის მოდი.
შეუძლია თუ არა ჰოსტს auth key-ის მოცემა?
არა. გასაღები BeamMP Keymaster-იდან მოდის და შენს საკუთარ BeamMP ანგარიშზეა მიბმული. ნებისმიერი ჰოსტი გთხოვს, შენი ჩასვა, რადგან მათთვის შენი გასაღების კანონიერი გენერირების გზა არ არსებობს.
რამდენი მოთამაშე ეტევა BeamMP სერვერზე?
ათი კომფორტული ნაგულისხმევია და დატვირთული საჯარო სერვერები მეტსაც უშვებენ, მაგრამ რეალური ლიმიტი კლიენტის წარმადობაა: ყოველი მოთამაშე ყველა არსებულ მანქანას ახდენს სიმულაციას. MaxCars-ის შემცირება პრაქტიკულ მოთამაშეთა ჭერს გაცილებით მეტად ზრდის, ვიდრე უფრო დიდი გეგმა.
სად ჩავდო მანქანებისა და რუკების მოდები?
Resources/Client-ში, .zip ფაილებად. ისინი მოთამაშეებს შემოსვლისას ეგზავნებათ. რუკის მოდისთვის ასევე Map უნდა დააყენო არქივის შიგნით დონის საქაღალდეზე, რომელიც ხშირად ფაილის სახელისგან განსხვავდება.
მხარს უჭერს თუ არა BeamMP პაროლებს?
კონფიგურაციის პარამეტრად - არა. Private = true მხოლოდ სერვერს საჯარო სიიდან აშორებს. ნამდვილი წვდომის კონტროლი ნიშნავს Lua plugin-ს, რომელიც ავთენტიფიკაციისას მოთამაშეთა იდენტიფიკატორებს ამოწმებს.
რატომ ცახცახებენ ან teleport-დებიან სხვა მანქანები?
იმიტომ, რომ დისტანციური მანქანები ლოკალურად სიმულირდება და ქსელის განახლებებით სწორდება. მოთამაშესა და სერვერს შორის packet loss სწორედ ასე ჩანს, და ეს კავშირის პრობლემაა და არა ჰოსტის სიმძლავრის.




კომენტარები
სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.