RE:NODE

სახელმძღვანელოები13 წუთის საკითხავი

Arma 3 server.cfg, basic.cfg, მისიები და headless client

Arma 3 server.cfg-ის ყველა პარამეტრი, რომლის შეცვლაც ღირს, რას აკეთებს basic.cfg სინამდვილეში, მისიების rotation, სირთულე, admin ბრძანებები და headless client-ის გაშვება.

0 მკითხველი

Arma 3 სერვერს აწყობს ორი ფაილი ერთმანეთის მსგავსი სახელებით და თითოეულისთვის ერთი command-line ფლაგი. server.cfg, რომელიც -config=-ით გადაეცემა, ინახავს ყველაფერს, რაც სერვერს ეხება როგორც ადგილს, სადაც ხალხი შედის: სახელს, პაროლებს, admin-ებს, მისიების rotation-სა და უსაფრთხოების პარამეტრებს. basic.cfg, რომელიც -cfg=-ით გადაეცემა, შეიცავს ქსელის რამდენიმე პარამეტრს, რომლის შეცვლაც თითქმის არავის სჭირდება. სირთულე არცერთშია - ის წლების წინ სერვერის პროფილში გადავიდა და ეს ახლაც ყველაზე ხშირი მიზეზია, რის გამოც პარამეტრი არ ინახება.

ეს გზამკვლევი ორივე ფაილს გადის გასაღები გასაღებზე, შემდეგ მისიების rotation-ს, admin ბრძანებებს და headless client-ს, რომელიც ბევრი AI-ის მქონე მისიისთვის ყველაზე დიდი წარმადობის მომატებაა და ამავე დროს ყველაზე ხშირად არასწორად დაყენებული. mod-ების ჩატვირთვის, გასაღებებისა და ხელმოწერებისთვის იხილე Arma 3 სერვერი და mod-ების სია, რომელიც არ იტვირთება.

სერვერის გაშვება: command line და პორტები#

Linux-ის სრული გაშვების ხაზი ასე გამოიყურება:

bash
$ ./arma3server_x64 -port=2302 \    -config=cfg/server.cfg \    -cfg=cfg/basic.cfg \    -profiles=profiles -name=server \    -mod="@cba_a3;@ace" -serverMod="@server_only" \    -world=empty -autoInit -filePatching

მნიშვნელოვანი ნაწილები:

  • `-config=` არის server.cfg და `-cfg=` არის basic.cfg. ისინი პირიქითაა, ვიდრე ვინმე გამოიცნობდა, და მათი აღრევა სერვერს იძლევა, რომელიც ეშვება, შენს პარამეტრებს უგულებელყოფს და არაფერს გეუბნება.
  • `-profiles=` და `-name=` განსაზღვრავს, სად იწერება სერვერის პროფილი. სირთულის ყველა პარამეტრი ამ დირექტორიის ქვეშ ფაილშია, -name-ის სახელით.
  • `-world=empty` სერვერს გაშვებისას Altis-ის ჩატვირთვას უკრძალავს. ის მეხსიერებას და გაშვების დროს ზოგავს და მისი არგამოყენების მიზეზი არ არსებობს.
  • `-mod=` არის სია, რომელიც კლიენტებსაც უნდა ჰქონდეთ. `-serverMod=` მხოლოდ სერვერს ეტვირთება, მაგალითად სერვერული anti-cheat-ისთვის ან logging mod-ისთვის. სერვერის მხარის mod-ის -mod=-ში ჩასმა ყველა მოთამაშეს ტყუილად აიძულებს მის გადმოწერას.
  • `-autoInit` მისიას მოთამაშის ლოდინის გარეშე უშვებს და სასარგებლოა მხოლოდ მაშინ, როცა server.cfg-ში persistent = 1 არის.
  • `-filePatching` ხსნის დაუარქივებელი მისიის საქაღალდეების გამოყენებას და allowedFilePatching-თან ერთად მუშაობს კონფიგურაციაში.

თავად სერვერის ინსტალაციას Steam ანგარიში სჭირდება: Arma 3 dedicated server-ი და, რაც უფრო მნიშვნელოვანია, ნებისმიერი Workshop mod ისეთი ანგარიშიდან უნდა მოვიდეს, რომელსაც თამაში აქვს, ხოლო ანონიმური SteamCMD ამას ვერ აკეთებს. RE:NODE-ზე სერვერი იქმნება გადახდის გავლისთანავე და ინსტალაცია Setup tab-ზე ამ მონაცემებს ელოდება; ისინი ისე ინახება, როგორც შეიყვანე, ამიტომ მთავარი ანგარიშის ნაცვლად სათადარიგო გამოიყენე. SteamCMD ახსნილი გადმოწერის მხარეს ზოგადად ფარავს.

პორტები ბლოკს ქმნის, რომელიც -port-იდან იწყება:

პორტიპროტოკოლიდანიშნულება
2302UDPთამაშის ტრაფიკი და ხმა
2303UDPSteam query, პორტი, რომელსაც browser ეკითხება
2304UDPSteam master
2305UDPხმისთვის დარეზერვებული
2306UDPBattlEye

-port-ის შეცვლა მთელ ბლოკს გადააქვს, ამიტომ ერთ მანქანაზე ორ სერვერს მათ შორის მინიმუმ 100 პორტი უნდა ჰქონდეს. RE:NODE-ზე Arma 3 გეგმები სწორედ ამიტომ შეიცავს ხუთ allocation-ს, მეტის დამატება კი Network tab-ზე შეიძლება. თუ სერვერი მუშაობს, მაგრამ ვერავინ პოულობს, პირველი ეჭვმიტანილი query პორტია - იხილე გეიმ სერვერის პორტები ახსნილი.

server.cfg: პარამეტრები, რომლებიც მნიშვნელოვანია#

იდენტობა და წვდომა:

server.cfg
hostname = "Our Arma 3 server";password = "";passwordAdmin = "a-long-random-string";serverCommandPassword = "a-different-long-string";maxPlayers = 40;admins[] = {"76561198000000000"};motd[] = {"Rules in the Discord", "Teamkilling is a ban"};motdInterval = 5;logFile = "server_console.log";

password არის შესვლის პაროლი და საჯარო სერვერზე ცარიელია. passwordAdmin არის ის, რასაც #login-ის შემდეგ აკრეფ, და ის გრძელი უნდა იყოს, რადგან ვისაც აქვს, შეუძლია შენი მისიის გადატვირთვა. serverCommandPassword მესამე, ცალკე პაროლია, რომელიც კლიენტის მიერ გაცემულ სერვერულ ბრძანებებს ემსახურება, და სწორედ ის სჭირდება headless client-ს. admins[] ჩამოთვლის მოთამაშეების UID-ებს, რომლებიც admin უფლებებს შესვლის გარეშე იღებენ, რაც სტაფის მართვის უკეთესი გზაა სერვერზე, სადაც ერთზე მეტი ადამიანია.

უსაფრთხოება:

config
verifySignatures = 2;BattlEye = 1;kickDuplicate = 1;allowedFilePatching = 1;requiredBuild = 0;onUnsignedData = "kick (_this select 0)";onHackedData = "kick (_this select 0)";onDifferentData = "";

verifySignatures = 2 არის პარამეტრი, რომელიც mod-ების გასაღებებს მნიშვნელოვანს ხდის: ყოველი mod, რომელსაც კლიენტი ტვირთავს, უნდა იყოს ხელმოწერილი გასაღებით, რომელიც სერვერის keys/ საქაღალდეშია. სწორედ ამის გამო არსებობს "ვერ შევდივარ" ტიპის შეტყობინებების ნახევარი, და მისი გამორთვა, რათა შეწყდეს, ზუსტად არასწორი გამოსწორებაა. allowedFilePatching იღებს 0-ს არავისთვის, 1-ს მხოლოდ headless client-ებისთვის და 2-ს ყველასთვის; 1 სწორი პასუხია სერვერზე, რომელიც headless client-ს იყენებს და სხვას არაფერს.

კენჭისყრა:

config
voteMissionPlayers = 3;voteThreshold = 0.33;allowedVoteCmds[] = {};

voteThreshold, რომელიც 1-ზე მეტია, კენჭისყრას მთლიანად თიშავს, რაც ორგანიზებული ჯგუფების უმეტესობას სურს. საჯარო სერვერზე ნაგულისხმევის დატოვება ნიშნავს, რომ სამ ადამიანს შეუძლია შენი მისიის კენჭისყრით გაქრობა.

ქსელის ქცევა:

config
disconnectTimeout = 90;maxdesync = 150;maxping = 500;maxpacketloss = 50;kickClientsOnSlowNetwork[] = {0,0,0,0};

kickClientsOnSlowNetwork-ის ოთხი რიცხვი შეესაბამება desync-ს, ping-ს, packet loss-სა და "არ პასუხობს" შემოწმებას: 0 აფრთხილებს, 1 გამორიცხავს. ping-ით გამორიცხვა მაცდურია და ჩვეულებრივ შეცდომაა, რადგან Arma-ს ping-ის მაჩვენებელი იტვირთება ჩატვირთვისას და დატვირთულ frame-ზე. ჯერ გააფრთხილე, ერთი კვირა უყურე log-ს და მერე გადაწყვიტე. Latency, jitter და packet loss ხსნის, როგორ გაარჩიო ნამდვილად ცუდი კავშირი დატვირთულისგან.

Persistence და ხმა:

config
persistent = 1;autoInit = 1;timeStampFormat = "short";disableVoN = 0;vonCodecQuality = 30;vonCodec = 1;

persistent = 1 მისიას მუშაობაში ტოვებს, როცა ბოლო მოთამაშე გადის, რაც campaign სერვერს სჭირდება და scrim სერვერს არა. autoInit = 1 პირველ მისიას გაშვებისას იწყებს, ვიდრე ვინმეს დაკავშირებას დაელოდებოდეს, და persistent-ის გარეშე საერთოდ არაფერს აკეთებს.

სირთულე server.cfg-იდან გადავიდა#

Arma 3 1.58-დან სირთულე server.cfg-ში აღარ ყენდება. კონფიგურაცია მხოლოდ თითო მისიაზე ასახელებს preset-ს: Recruit, Regular, Veteran ან Custom. ნამდვილი პარამეტრები სერვერის პროფილშია, .Arma3Profile ფაილში, რომელიც იწერება -profiles დირექტორიის ქვეშ -name-ის სახელობის საქაღალდეში.

server.Arma3Profile
class DifficultyPresets{    class CustomDifficulty    {        class Options        {            reducedDamage = 0;            groupIndicators = 0;            friendlyTags = 0;            enemyTags = 0;            detectedMines = 0;            commands = 1;            waypoints = 1;            weaponInfo = 2;            stanceIndicator = 1;            staminaBar = 1;            weaponCrosshair = 0;            visionAid = 0;            thirdPersonView = 0;            cameraShake = 1;            scoreTable = 1;            deathMessages = 0;            vonID = 1;            mapContent = 0;            autoReport = 0;            multipleSaves = 0;        };        aiLevelPreset = 3;    };    class CustomAILevel    {        skillAI = 0.5;        precisionAI = 0.3;    };};

ორი ხაფანგი. ფაილი არ არსებობს, სანამ სერვერი -name=-ით ერთხელ მაინც არ გაეშვება, ამიტომ ახალ ინსტალაციაზე პირველ გაშვებამდე რედაქტირებას არაფერი აქვს. და სერვერი პროფილს სუფთა გამორთვისას თავიდან წერს, ამიტომ მომუშავე სერვერზე შეტანილი ცვლილება იკარგება, როგორც კი მას სწორად გააჩერებ. ჯერ გააჩერე, შემდეგ დაარედაქტირე, მერე გაუშვი.

aiLevelPreset = 3 ირჩევს მის ქვემოთ განსაზღვრულ საკუთარ AI დონეს. precisionAI არის ის, რომლის შემცირებაც ღირს: მაღალ მნიშვნელობებზე AI ისეთი თანმიმდევრულობით ესვრის, რომელსაც ადამიანთა მატჩი ვერ უძლებს, და Arma-ს უსამართლობაზე ჩივილების უმეტესობა ისეთი precision-ის მნიშვნელობაა, რომელიც არავის დაუწია.

მისიები, rotation და persistence#

მისიები .pbo ფაილებია mpmissions/-ში, სახელით missionName.worldName. Rotation server.cfg-ის ბოლოს ცხადდება:

server.cfg
class Missions{    class Mission_01    {        template = "co40_liberation.Altis";        difficulty = "Custom";        class Params {};    };    class Mission_02    {        template = "tvt30_assault.Malden";        difficulty = "Veteran";    };};missionWhitelist[] = {"co40_liberation.Altis", "tvt30_assault.Malden"};

template არის pbo ფაილის სახელი გაფართოების გარეშე, სამყაროს ჩათვლით - co40_liberation.Altis და არა co40_liberation. ამის არასწორად დაწერა არის მიზეზი, რის გამოც მისია სიაში არ ჩანს. სერვერი კლასებს თანმიმდევრობით თამაშობს და ბოლოს დასრულებისას პირველზე ბრუნდება.

class Params აყენებს მისიის პარამეტრებს, რომლებსაც თვით მისია განსაზღვრავს - დღის დრო, respawn-ის წესები, AI-ის რაოდენობა. სახელები მისიის საკუთარი description.ext-იდან მოდის, ამიტომ ყოველი მისიისთვის განსხვავებულია და არასწორი უგულებელყოფილია და არ იტყობინება. მისიების whitelist ზღუდავს, რისი არჩევა ან კენჭისყრაა შესაძლებელი, რაც მნიშვნელოვანია სერვერზე, სადაც ნებისმიერი შეიძლება admin-ად აირჩიონ.

persistent campaign-ისთვის ერთი მისია პლუს persistent = 1 და autoInit = 1 მთელი rotation-ია: სერვერი მისიას გაშვებისას იწყებს, ვიდრე არავინაა, ინახავს და აგრძელებს. სესიებზე დაფუძნებული ჯგუფისთვის persistent გამორთე, რომ მისია სუფთად დასრულდეს, როცა ყველა გავა, და შემდეგის ასარჩევად #missions გამოიყენე.

basic.cfg და ქსელის დაზუსტების მითი#

basic.cfg არის ადგილი, სადაც ინტერნეტის Arma რჩევები კვდება. ტიპური ფაილი:

basic.cfg
MaxMsgSend = 128;MaxSizeGuaranteed = 512;MaxSizeNonguaranteed = 256;MinBandwidth = 131072;MaxBandwidth = 2097152000;MinErrorToSend = 0.001;MinErrorToSendNear = 0.01;MaxCustomFileSize = 0;class sockets{    maxPacketSize = 1400;};

აი არასასიამოვნო ვერსია. ნაგულისხმევი მნიშვნელობები თითქმის ყველა სერვერისთვის სწორია, ფორუმის პოსტებში მოძრავი მნიშვნელობები დაახლოებით 2014 წელს კონკრეტულ მანქანაზე კონკრეტული კავშირისთვის იყო დაზუსტებული, სხვისი ფაილის ჩასმა კი ისევე შეიძლება ავნოს, როგორც დაგეხმაროს.

ორი, რომლის შეხებაც ღირს:

  • `MaxCustomFileSize = 0` კრძალავს მოთამაშეების საკუთარ სახეებსა და ხმოვან ფაილებს. საჯარო სერვერზე ეს პირდაპირი მოგებაა: ის აშორებს შემაწუხებელი კონტენტის კატეგორიას და შეტევის პატარა ზედაპირს.
  • `MaxMsgSend` განსაზღვრავს, სიმულაციის ერთ ციკლში სერვერი რამდენ შეტყობინებას აგზავნის. მისი გაზრდა desync-ს ამცირებს, როცა სერვერს CPU რესურსი აქვს, და ამწვავებს, როცა არა, რადგან შეტყობინებები რიგში დგება. შეცვალე ერთი საფეხურით, გაუშვი #monitor ერთი სესიის განმავლობაში და ჩაიწერე, რა მოხდა.

maxPacketSize ის არის, რომელსაც თავი უნდა დაანებო, თუ არ იცი path MTU, რომელსაც ჰოსტირებულ სერვერზე ვერ აკონტროლებ.

Admin ბრძანებები#

შედი თამაშის ჩატიდან #login <passwordAdmin>-ით, ან admins[]-ში ჩაიწერე და გამოტოვე.

ბრძანებარას აკეთებს
#login <password>ხდები admin, #logout გასასვლელად
#missionsხსნის მისიის არჩევის ეკრანს
#restartმიმდინარე მისიას თავიდან იწყებს
#reassignთავიდან იწყებს და ყველას slot-ის არჩევაზე აბრუნებს
#shutdownსერვერის პროცესს აჩერებს
#kick <name>მოთამაშეს ათიშავს
#exec ban <name>ბანავს და ban სიაში წერს
#lock, #unlockახალ კავშირებს აჩერებს და უშვებს
#userlistბეჭდავს დაკავშირებულ მოთამაშეებს და მათ UID-ებს
#monitor <seconds>ბეჭდავს სერვერის FPS-სა და ობიექტების რაოდენობას, 0 გასაჩერებლად
#vote admin <name>მოთამაშეები ვინმეს admin-ად ირჩევენ, თუ ნებადართულია

#monitor 5 ამ სიაში ყველაზე სასარგებლოა. ის ჩატში ყოველ ხუთ წამში სერვერის frame rate-ს ბეჭდავს, სერვერის FPS კი ის რიცხვია, რომელიც წყვეტს, კარგად თამაშდება თუ არა მისია. ჯანსაღი სერვერი თავის ზღვართან ახლოს დგას. დაახლოებით 20-ზე დაბლა AI თვალსაჩინოდ ცუდად იწყებს ქცევას - ნელი რეაქციები, გვიანი pathing, ჯგუფები, რომლებიც გაშეშებულან. 10-ზე დაბლა არაფერი მუშაობს და ვერცერთი ქსელის პარამეტრი ვერ იხსნის. ეს რიცხვი AI-ის რაოდენობის ზრდასთან ერთად ეცემა, headless client კი სწორედ ამისთვისაა. ამ არგუმენტის ზოგადი ვერსია არის პოსტში რას ნიშნავს tick rate სინამდვილეში.

არსებობს ასევე BattlEye-ს საკუთარი RCon, რომელიც BattlEye-ს საქაღალდეში BEServer_x64.cfg-შია გაწერილი RConPassword-ით და RConPort-ით. ის არის ის, რასაც გარე admin ინსტრუმენტები უკავშირდება, მისი პროტოკოლი დაშიფრული არ არის, ამიტომ პორტი მხოლოდ ლოკალურად ჩათვალე, პაროლი კი საიდუმლოდ, რომელიც არასოდეს უნდა გამოიყენო ხელახლა. RCON უსაფრთხოდ ზოგად შემთხვევას ფარავს.

Headless client-ები#

Arma-ს სიმულაცია ძირითადად ერთნაკადიანია და გრძელ მისიაზე სწორედ AI ავსებს ამ ნაკადს. Headless client არის მეორე Arma პროცესი, რომელიც სერვერს უკავშირდება როგორც კლიენტი გრაფიკის გარეშე, იღებს მისიის მიერ გადაცემული AI ჯგუფების მფლობელობას და მათ საკუთარ ნაკადზე ასიმულირებს. მისიაზე, რომელიც ამისთვის არის აგებული, ორმოცდაათი AI ჯგუფის სერვერიდან გადატანა შეიძლება იყოს სხვაობა მესამე საათის ბრძოლას შორის, რომელიც თამაშდება, და იმას შორის, რომელიც ჩაიკვრება.

სერვერის მხარეს სამი რამ არის:

server.cfg
headlessClients[] = {"127.0.0.1"};localClient[] = {"127.0.0.1"};serverCommandPassword = "a-different-long-string";

headlessClients[] სერვერს ეუბნება, რომელი მისამართებიდან შეიძლება headless-ად დაკავშირება. localClient[] მათ ლოკალურად ნიშნავს, რაც სახლის კავშირებზე მყოფი მოთამაშეებისთვის განკუთვნილი გამტარუნარიანობის ლიმიტებისგან ათავისუფლებს - მის გარეშე headless client მოთამაშესავით იზღუდება და არაფერში ეხმარება. ორივე იღებს loopback მისამართს, როცა headless client იმავე მანქანაზე მუშაობს, როგორც უნდა.

კლიენტის მხარე იგივე binary-ია -client-ით:

bash
$ ./arma3server_x64 -client -connect=127.0.0.1 -port=2302 \    -password="" -mod="@cba_a3;@ace" \    -profiles=profiles -name=HC -world=empty

mod-ების სია ზუსტად სერვერისას უნდა ემთხვეოდეს. პაროლი სერვერის შესვლის პაროლია და არა admin-ისა.

და შემდეგ ნაწილი, რომელსაც უმეტესი გზამკვლევი აგდებს: მისიას მისი მხარდაჭერა უნდა ჰქონდეს. headless client არაფერს აკეთებს, თუ მისია არ შეიცავს headless client-ის slot-ს და კოდს, რომელიც დაკავშირების შემდეგ AI ჯგუფებს მას გადასცემს. გრძელი მისიებისთვის განკუთვნილი framework-ები ჩვეულებრივ ამას აკეთებს; workshop-იდან მისია, რომლის აღწერაში ამის შესახებ არაფერია, ჩვეულებრივ არა, და მასთან headless client-ის გაშვება მეხსიერებას გიჯდება და არაფერს გიგებს.

ორი გულახდილი დათქმა ჰოსტირებული სერვერებისთვის. headless client მეორე Arma პროცესია, ამიტომ მას საკუთარი core და რამდენიმე გიგაბაიტი მეხსიერება უნდა. გეგმაზე მყარი CPU ლიმიტით - ერთი container თითო სერვერზე, შეზღუდული იმ წილით, რაც იყიდე - headless client იმავე კვოტიდან იღებს, ამიტომ ის ეხმარება მხოლოდ მაშინ, თუ შენს ლიმიტში მართლა არის გამოუყენებელი CPU და არა მანქანაზე გამოუყენებელი core-ები. და თუ headless client-ს კავშირისას უარს ეუბნებიან, ჯერ headlessClients[] შეამოწმე, მერე mod-ების სია; ეს ორი თითქმის ყველა შემთხვევას ხსნის. CPU vs RAM გეიმ სერვერებისთვის ღირს წასაკითხად, სანამ გადაწყვეტ, რომელ ლიმიტს ეჯახები სინამდვილეში.

პრობლემების მოგვარება#

სერვერი browser-ში არ ჩანს. Steam query პორტი, -port პლუს ერთი, დახურულია ან დაკავებულია. IP-ით შესვლა მუშაობს, browser-ში კი არა, რაც დადასტურების სწრაფი გზაა.

ჩემი server.cfg ცვლილებები არაფერს იძლევა. -config= და -cfg= აღრეულია, ან გზა არასწორია და სერვერი ნაგულისხმევზე მუშაობს. გაშვების log ასახელებს ფაილს, რომელიც ჩატვირთა.

სირთულის პარამეტრები უკან ბრუნდება. პროფილი სერვერის მუშაობისას დაარედაქტირე და გამორთვისას თავიდან დაიწერა. გააჩერე სერვერი, დაარედაქტირე, გაუშვი.

მისია სიაში არ არის. template მნიშვნელობას სამყაროს სახელი აკლია, pbo mpmissions/-ში არ არის, ან missionWhitelist[] მას გამორიცხავს.

მოთამაშეებს ჩატვირთვის ეკრანზე "session lost" უჩნდებათ. mod-ის ან ხელმოწერის შეუსაბამობაა. verifySignatures = 2-ის დროს გასაღები keys/-ში უნდა იყოს, კლიენტს კი იგივე mod-ის ვერსია უნდა ჰქონდეს და არა უბრალოდ იგივე mod.

mod-ები Windows-ზე იტვირთება და Linux-ზე არა. Linux რეგისტრზე მგრძნობიარეა, Arma-ს mod-ის საქაღალდეებისა და pbo-ების სახელები კი ხშირად შერეული რეგისტრისაა. mod-ის საქაღალდე და მისი შიგთავსი პატარა ასოებზე გადაიყვანე, ან გამოიყენე downloader, რომელიც ამას თვითონ აკეთებს.

ორი საათი ყველაფერი კარგადაა და მერე იჭედება. AI-ის რაოდენობაა. გაუშვი #monitor 5, უყურე სერვერის FPS-ის ვარდნას და ან შეამცირე AI, რომელსაც მისია ქმნის, ან headless client დააყენე.

`autoInit` მისიას არ იწყებს. მას persistent = 1 სჭირდება. persistent სერვერზე ყოველკვირეული დაგეგმილი restart მაინც ღირს - იხილე restart-ის განრიგები, რომლებიც ეხმარება.

FAQ#

რა განსხვავებაა -config-სა და -cfg-ს შორის Arma 3-ში?

-config= ტვირთავს server.cfg-ს, რომელიც შეიცავს სერვერის სახელს, პაროლებს, admin-ებს, უსაფრთხოების პარამეტრებს და მისიების rotation-ს. -cfg= ტვირთავს basic.cfg-ს, რომელშიც ქსელის დაზუსტებაა. სახელები ინტუიციის საპირისპიროა და მათი აღრევა ჩუმად გაძლევს ნაგულისხმევ სერვერს.

სად ვაყენებ Arma 3 სერვერის სირთულეს?

სერვერის პროფილში და არა server.cfg-ში. კონფიგურაცია მხოლოდ თითო მისიაზე ასახელებს preset-ს; Custom-ის უკან მდგომი მნიშვნელობები .Arma3Profile ფაილშია -profiles დირექტორიის ქვეშ. დაარედაქტირე გაჩერებული სერვერით, თორემ გადაიწერება.

რამდენი მოთამაშე ეტევა Arma 3 სერვერზე?

maxPlayers ზღვარს აყენებს, მაგრამ რეალური ლიმიტი მისიის slot-ების რაოდენობა და CPU-ა. სამოცი მოთამაშე კარგად აგებულ მისიაზე ჩვეულებრივია; იგივე სერვერი ოცდაათზე კვდება, თუ მისია რამდენიმე ასეულ AI-ს ქმნის, რადგან frame-ის დროს სწორედ AI ხარჯავს.

მჭირდება თუ არა headless client?

მხოლოდ მაშინ, თუ შენი მისია მას უჭერს მხარს და AI შენი შეფერხებაა. ცუდ მომენტში გაუშვი #monitor 5: თუ სერვერის FPS ეცემა, CPU კი ჩაკეტილია და მისიას ბევრი AI აქვს, headless client ეხმარება. თუ მისიას headless slot არ აქვს, ის არაფერს აკეთებს.

რომელი პორტები სჭირდება Arma 3 სერვერს?

UDP 2302 თამაშისთვის, 2303 Steam query-სთვის, 2304 Steam master-ისთვის, 2305 დარეზერვებულია ხმისთვის და 2306 BattlEye-სთვის. -port-ის შეცვლისას ისინი ბლოკად გადაინაცვლებს.

შეიძლება basic.cfg-ის შეცვლით desync-ის გამოსწორება?

იშვიათად. Arma-ში desync თითქმის ყოველთვის ისაა, რომ სერვერს frame-ის დრო ეწურება და არა ქსელს გამტარუნარიანობა. ჯერ AI-ის რაოდენობა გაასწორე, გაზომე #monitor-ით და მხოლოდ შემდეგ შეცვალე MaxMsgSend ერთი საფეხურით.


კომენტარები

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

0/2000