DayZ-ს ორი სისტემა აქვს, რომლებსაც ახალბედა ადმინისტრატორები არასწორი თანმიმდევრობით ხვდებიან: მოდები, რომლითაც ყველა იწყებს, და central economy, რომელიც წყვეტს, არის თუ არა რუკაზე რამე ვარგისი საპოვნელი. კარგად მოდირებული სერვერი შეუხებელი economy-ით ცარიელი სერვერია. ორივეს სწორად მოსაწყობად გჭირდება დაახლოებით 6 GB მეხსიერება 40 ადგილიანი სერვერისთვის, სამი UDP პორტი, Steam ანგარიში, რომელსაც თამაში აქვს, და მზაობა, რომ XML ჩაასწორო და გადატვირთო. ეს გზამკვლევი მთელ გზას მოიცავს: ინსტალაცია, serverDZ.cfg, პორტები, მოდები და მათი გასაღებები, economy-ის ფაილები, ადმინისტრირება და შეცდომები, რომლებიც support-ის მოთხოვნებს ავსებს.
რას უშვებ სინამდვილეში#
DayZ-ის სერვერი ცალკე Steam აპლიკაციაა - DayZ Server, app id 223350 - და უმეტეს თამაშებისგან განსხვავებით, ანონიმური SteamCMD შესვლით არ ჩამოიტვირთება. გჭირდება Steam ანგარიში, რომელსაც DayZ აქვს, და SteamCMD პირველად Steam Guard-ის დადასტურებას მოგთხოვს. ჰოსტები, რომლებიც DayZ-ს შენთვის აყენებენ, ზუსტად ამიტომ იყენებენ შენს მონაცემებს. გამოიყენე სათადარიგო ანგარიში, რომელსაც მხოლოდ თამაში აქვს და სხვა ფასეული არაფერი; სერვერის ინსტალაციას იმ ანგარიშთან საქმე არ აქვს, რომლითაც ყიდულობ.
ის, რასაც სერვერი ყუთიდან გაძლევს, იმაზე მწირია, ვიდრე ხალხი ელოდება:
- ერთი mission საქაღალდე
mpmissions-ში, რომელიც ერთდროულად რუკაცაა და economy-ც. Chernarus არისdayzOffline.chernarusplus, Livonia -dayzOffline.enoch, ახალ რუკებს კი საკუთარი საქაღალდეები აქვთ - სახელს ნუ გამოიცნობ, დირექტორია წაიკითხე. - კონფიგურაციის ფაილი,
serverDZ.cfg, დაახლოებით ორმოცი პარამეტრით. - BattlEye, რომელიც ანტიჩიტს, ბანებს და დისტანციურ ადმინისტრირებას უზრუნველყოფს.
- თამაშში ადმინის მენიუ საერთოდ არ არის. არც spectate, არც teleport, არც ნივთების გამოძახება, არც მოთამაშეების სია. ყველა ადმინისტრაციული ინსტრუმენტი, რომელიც DayZ სერვერზე გინახავს, მოდია ან გარე RCon კლიენტი.
- მუდმივი სამყარო, რომელიც mission-ის ფაილებისგან ცალკე ინახება, ამიტომ economy-ს შეგიძლია ჩაასწორო ბაზების წაშლის გარეშე - უმეტეს შემთხვევაში.
Mission საქაღალდე მთავარი იდეაა. როცა loot-ს ასწორებ, ასწორებ ფაილებს mpmissions/dayzOffline.chernarusplus/-ში, და ეს ფაილები სტარტზე იკითხება. იქ შეტანილი არაფერი ამოქმედდება სერვერის გადატვირთვამდე, ამიტომაა DayZ-ის ადმინისტრირებას ასეთი რიტმი: ჩასწორე, გადატვირთე, შეხედე, ისევ ჩასწორე.
მოთხოვნები და რესურსების მოხმარება#
DayZ თავისი მოთამაშეების რაოდენობისთვის მძიმე სერვერია. ის 225 კვადრატულ კილომეტრიან რუკაზე ახდენს ინფიცირებულების, ცხოველების, ტრანსპორტისა და ნივთების economy-ის სიმულაციას და ძლიერ ეყრდნობა ერთ thread-ს.
| მოთამაშეები | RAM | CPU | შენიშვნები |
|---|---|---|---|
| 10-20, vanilla | 4-6 GB | 2 ბირთვი | კომფორტული; კარგია კერძო ჯგუფისთვის |
| 30-40, vanilla | 6-8 GB | 2-3 ბირთვი | ჩვეულებრივი საჯარო სერვერი |
| 40-60, vanilla | 8-10 GB | 3+ ბირთვი | ზღვარი server FPS-ია და არა მეხსიერება |
| 30-50, ძლიერ მოდირებული | 10-12 GB | 3+ ბირთვი | Expansion-ის მასშტაბის მოდების სიები, ვაჭრები, AI |
- CPU წყვეტს, როგორ ჩანს სავსე სერვერი. სადევნო მეტრიკა server FPS-ია, რომელიც იწერება, თუ
logAverageFpsგაქვს დაყენებული. ჯანსაღია 30-ზე მეტი; დაახლოებით 15-ზე დაბლა მოთამაშეები rubber-banding-ს, დესინქრონიზებულ loot-ს და ორჯერ გაღებულ კარებს იტყობინებიან. - მეხსიერება მოდების სიასთან ერთად იზრდება გაცილებით სწრაფად, ვიდრე მოთამაშეების რაოდენობასთან ერთად. vanilla 60 ადგილიანი სერვერი ნაკლებს მოიხმარს, ვიდრე 30 ადგილიანი, რომელსაც დიდი Expansion build უჭირავს.
- დისკი: სერვერის ინსტალაცია დაახლოებით 3 GB-ია და თითოეული მოდი საკუთარს ამატებს. ოცი მოდის სია ადვილად კიდევ 10-15 GB-ია, ამიტომ იწყება DayZ-ის გეგმები იმაზე დიდი დისკით, ვიდრე ასეთი ხნის თამაშისგან ელოდები.
- ქსელი მოკრძალებულია, ერთ მოთამაშეზე რამდენიმე ასეული კილობაიტი წამში, მაგრამ ის UDP-ია და დაყოვნებისადმი მგრძნობიარე. ზოგადი წესი, რომელიც CPU თუ RAM გეიმ სერვერებისთვის პოსტშია, აქ უფრო მეტად მოქმედებს, ვიდრე უმეტეს თამაშში: ხალხი მეხსიერებას ყიდულობს მაშინ, როცა რეალურად ერთი ბირთვია გადატვირთული.
RE:NODE-ზე DayZ-ის გეგმები 6 GB-დან იწყება სამი პორტის განაწილებით, რაც 40 ადგილიანი vanilla ან მსუბუქად მოდირებული სერვერისთვის სწორი ზომაა. დიდ Expansion სერვერს კიბის ზედა საფეხური სჭირდება.
სერვერის ინსტალაცია და გაშვების ხაზი#
შენს მანქანაზე, SteamCMD ნამდვილი შესვლით:
$ steamcmd +force_install_dir /home/dayz/server +login <steam_account> \ +app_update 223350 validate +quitშემდეგ სერვერი გრძელი პარამეტრების ხაზით ეშვება. აი, ის პარამეტრები, რომლებიც მნიშვნელოვანია; პანელში ისინი Startup ჩანართზე ველებად ჩანს და არა ტექსტად, რომელსაც თავად კრეფ:
| პარამეტრი | დანიშნულება |
|---|---|
-config=serverDZ.cfg | წასაკითხი კონფიგურაციის ფაილი |
-port=2302 | თამაშის პორტი |
-profiles=profiles | სად იწერება ლოგები, BattlEye და crash dump-ები |
-mod=@CF;@Mod2 | კლიენტისა და სერვერის მოდები, წერტილ-მძიმით გამოყოფილი, თანმიმდევრობას მნიშვნელობა აქვს |
-servermod=@AdminTool | მხოლოდ სერვერის მოდები, რომლებიც კლიენტებს არ უნდა ჰქონდეთ |
-doLogs | ჩაწერს script და error ლოგებს |
-adminLog | ჩაწერს .ADM ლოგს მოთამაშეთა აქტივობის შესახებ |
-netLog | ქსელური ტრაფიკის ლოგირება, ერთხელ გამოსადეგია, მუდმივად ხმაურიანია |
-freezeCheck | ჩაწერს ლოგს, თუ სერვერი გაიჭედა |
-cpuCount=2 | რამდენი ბირთვის გამოყენება შეუძლია ძრავას |
-profiles დააყენე იქ, სადაც SFTP-ით ან file manager-ით მიგწვდება, რადგან იმ საქაღალდეში ცხოვრობს ყველა პასუხი კითხვაზე "რატომ ქნა ეს". თუ SteamCMD-ს, app id-ებს და validate-სა და ჩვეულებრივ განახლებას შორის განსხვავებას ახალი ხარ, SteamCMD ახსნილი ყველაფერს მოიცავს.
serverDZ.cfg, გასაღები-გასაღებით#
ფაილი key = value; ხაზების სიაა, წერტილ-მძიმეებითურთ, ბოლოში კი mission ბლოკია. ქვემოთ მოცემული მნიშვნელობები Bohemia-ს მაგალითის ფაილშია და გონივრული საწყისი წერტილია და არა რეკომენდაცია.
hostname = "Chernarus - vanilla, no KOS in trader";password = "";passwordAdmin = "a-long-random-string";maxPlayers = 60;verifySignatures = 2;forceSameBuild = 1;disableVoN = 0;vonCodecQuality = 20;disable3rdPerson = 0;disableCrosshair = 0;serverTime = "SystemTime";serverTimeAcceleration = 12;serverNightTimeAcceleration = 1;serverTimePersistent = 0;loginQueueConcurrentPlayers = 5;loginQueueMaxPlayers = 500;instanceId = 1;storageAutoFix = 1;steamQueryPort = 2305;respawnTime = 5;timeStampFormat = "Short";logAverageFps = 300;logMemory = 300;logPlayers = 300;logFile = "server_console.log";adminLogPlayerHitsOnly = 0;enableDebugMonitor = 0;allowFilePatching = 0;multithreadedReplication = 1;speedhackDetection = 1;class Missions{ class DayZ { template = "dayzOffline.chernarusplus"; };};ისინი, რომლებზეც ფიქრი ღირს და არა გადაწერა:
verifySignatures = 2უარყოფს ნებისმიერ მოდს, რომლის.bikeyსერვერისkeysსაქაღალდეში არ არის. დატოვე 2-ზე. 0-მდე დაწევა ის გზაა, რომლითაც სერვერები სხვის შეცვლილ PBO-ებს უშვებენ.forceSameBuild = 1უარყოფს კლიენტებს სხვა build-ით. მისი გამორთვა მოძველებულ კლიენტს არ აამუშავებს; უბრალოდ უფრო გვიან და უფრო გაუგებრად ჩავარდება.allowFilePatching = 0ბლოკავს კლიენტებს, რომლებიც-filePatching-ით არის გაშვებული, და სწორედ ასე მოდის ბევრი შემთხვევითი თაღლითობა. ჩართვა მხოლოდ მოდების დეველოპერებს სჭირდებათ.serverTimeAccelerationთამაშის საათს ამრავლებს.12ორსაათიან დღეს იძლევა.serverNightTimeAccelerationღამით კიდევ ამრავლებს, ამიტომserverTimeAcceleration = 12დაserverNightTimeAcceleration = 4გრძელ დღეს და მოკლე ღამეს იძლევა - ეს ნებისმიერ საჯარო სერვერზე ყველაზე ხშირად მოთხოვნილი ცვლილებაა.serverTimePersistent = 1აკეთებს იმას, რომ სამყაროს საათი გადატვირთვას გადაურჩეს დაserverTime-ზე არ განულდეს. დღეში ოთხი გადატვირთვისას და 0-ზე დაყენებისას შენს სერვერს ერთი და იგივე დილა ოთხჯერ აქვს.instanceIdარჩევს persistence საქაღალდეს, პირველი instance-ისთვისstorage_1-ს. ერთ მანქანაზე მყოფმა ორმა სერვერმა instance id ერთად არ უნდა გამოიყენოს.disableVoN = 0ინარჩუნებს თამაშისშიდა ხმას. მისი გამორთვა თამაშის ხასიათს უფრო მეტად ცვლის, ვიდრე ფაილის უმეტესი პარამეტრი.
პორტები და დაკავშირება#
| პორტი | პროტოკოლი | დანიშნულება |
|---|---|---|
2302 | UDP | თამაშის ტრაფიკი, მიეთითება -port=-ით |
2303-2304 | UDP | დაცულია თამაშის პორტის გვერდით; ჰოსტები მთელ ბლოკს გამოყოფენ |
2305 | UDP | Steam query, მიეთითება steamQueryPort-ით |
| RCon port | UDP | BattlEye RCon, მიეთითება BEServer_x64.cfg-ში |
Query პორტი ისაა, რომელიც ხალხს ხვდება. თამაში მუშაობს, IP-ით უკავშირდები, და სერვერი DayZ Launcher-ის სიაში არასოდეს ჩნდება - ეს steamQueryPort-ის დაბლოკვა ან არასწორი მნიშვნელობაა. ორივე UDP-ია; firewall-ის წესი, რომელიც მხოლოდ TCP-ს ხსნის, აქ არაფერს აკეთებს. გეიმ სერვერის პორტები ახსნილი განმარტავს, რატომ არსებობს query პორტი თამაშის პორტისგან ცალკე და როგორ გამოიყურება თითოეული მარცხი.
მოდირებულ DayZ სერვერზე თითქმის არავინ შედის თამაშისშიდა ბრაუზერიდან. ისინი იყენებენ DayZ Launcher-ს, რომელიც კითხულობს სერვერის მიერ გამოცხადებულ მოდების სიას, ამ Workshop ნივთებს იწერს და თამაშს შესაბამისი -mod= ხაზით უშვებს. სწორედ ამიტომ უნდა იყოს მოდების თანმიმდევრობა და გასაღებები სწორი: launcher კლიენტის მხარეს ავტომატიზებს და ხმამაღლა ჩავარდება, როცა ორი მხარე ერთმანეთს არ ემთხვევა.
მოდები: გასაღებები, თანმიმდევრობა და ორი flag#
Workshop-ის მოდები SteamCMD-ით იტვირთება კლიენტის app id-ზე, 221100-ზე, და არა სერვერისაზე:
$ steamcmd +force_install_dir /home/dayz/server +login <steam_account> \ +workshop_download_item 221100 1559212036 +quitშემდეგ სამი რამ უნდა მოხდეს, და რომელიმეს გამოტოვება სხვადასხვა დამაბნეველ სიმპტომს იძლევა:
- მოდის საქაღალდე, სახელად
@SomeMod, სერვერის ძირშია. - მისი
keys/*.bikeyფაილი გადაწერილია სერვერისkeysსაქაღალდეში. თუ ეს გამოტოვე, BattlEye კლიენტებს ჩატვირთვის ეკრანზე ხელმოწერის შეცდომით გააგდებს, თუნდაც დანარჩენი ყველაფერი სწორი იყოს. - საქაღალდე ჩამოთვლილია
-mod=-ში, დამოკიდებულებების მიხედვით. ჯერ framework-ები:-mod=@CF;@DayZ-Expansion-Core;@DayZ-Expansion-Bundle. Community Framework (@CF) უამრავი მოდის დამოკიდებულებაა და მათზე ადრე უნდა ჩაიტვირთოს.
-servermod= გამოიყენე ყველაფრისთვის, რაც კლიენტს არ უნდა ჰქონდეს: ადმინის ინსტრუმენტები, loot spawner-ები, სერვერული შესწორებები. -servermod=-ის მოდები launcher-ს არ ეცხადება, ამიტომ მოთამაშეებს მათი ჩამოტვირთვა არ მოეთხოვებათ. სერვერული მოდის შეცდომით -mod=-ში ჩაწერა ყველა შემომსვლელს აიძულებს ჩამოტვირთოს ის, რაც არაფერში სჭირდება.
ორი ჩვევა მთელ სერვერებს გადაარჩენს. პირველი, მოდების სია დააფიქსირე და განაახლე შეგნებულად და არა ავტომატურად - DayZ-ის პატჩი ყველა მოდს აბათილებს, სანამ ავტორი თავიდან არ ააწყობს, და სერვერს, რომელიც პატჩის დღეს თავად ახლდება, პატჩის დღეს ვერავინ შედის. რა ვქნა, როცა მოდის განახლება ტეხავს ღირს წასაკითხად, სანამ დაგჭირდება. მეორე, ყოველი განახლების წინ შეინახე მუშა მოდის საქაღალდის და შენი XML-ის ასლი. Steam Workshop-ის მოდები dedicated სერვერებზე განმარტავს, როგორ იქცევა Workshop-ის ჩამოტვირთვები სერვერის მხარეს სხვადასხვა თამაშში.
types.xml და central economy#
სწორედ ეს ნაწილი წყვეტს, ღირს თუ არა შენს სერვერზე თამაში. Loot შემთხვევითად არ არის მიმოფანტული. Central economy რუკაზე თითოეული ნივთის სამიზნე რაოდენობას ინახავს და მისკენ ავსებს, წესები კი XML-ში ცხოვრობს შენს mission საქაღალდეში.
| ფაილი | რას აკონტროლებს |
|---|---|
db/types.xml | ყველა ნივთი: რამდენია, რამდენ ხანს ძლებს, რა სიჩქარით ბრუნდება |
db/events.xml | ტრანსპორტი, ვერტმფრენების ჩამოვარდნა, ინფიცირებულებისა და ცხოველების გაჩენა |
db/globals.xml | მსოფლიო ლიმიტები, მაგალითად ZombieMaxCount, და გასუფთავების ტაიმერები |
db/messages.xml | დაგეგმილი შეტყობინებები, მათ შორის ის, რომელიც სერვერს ითიშავს |
db/economy.xml | economy-ის რომელი ქვესისტემები იტვირთება საერთოდ |
cfgeconomycore.xml | რომელი XML ფაილები იკითხება, შენი საკუთარი ფაილების ჩათვლით |
cfgspawnabletypes.xml | რა დანამატებითა და ტვირთით ჩნდება ნივთი |
cfgeventspawns.xml | კოორდინატები, რომლებიც ივენთებს შეუძლიათ გამოიყენონ |
cfgplayerspawnpoints.xml | სად ჩნდებიან ახალი და ხელახლა დაბადებული მოთამაშეები |
types.xml-ის ჩანაწერი ასე გამოიყურება. რიცხვები საილუსტრაციოა - რეალურისთვის წაიკითხე მოყოლილი ფაილი:
<type name="M4A1"> <nominal>8</nominal> <lifetime>7200</lifetime> <restock>1800</restock> <min>4</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> <category name="weapons"/> <usage name="Military"/> <value name="Tier4"/></type>თითოეულ ელემენტს კონკრეტული საქმე აქვს, და ხუთი მათგანი თითქმის ყველაფერს წყვეტს:
nominalარის სამიზნე რაოდენობა რუკაზე.minქვედა ზღვარია: როცა მიმდინარე რაოდენობა მასზე დაეცემა, economy კიდევ ამატებს რიგში.lifetimeარის წამები, რამდენსაც შეუხებელი ნივთი გასუფთავებამდე ძლებს. აღება და დადება საათს ნულიდან იწყებს.restockარის დაყოვნება, სანამ economy-ს ნებადართული ექნება წაღებულის ჩანაცვლება.0ნიშნავს, რომ როგორც კი შეძლებს.costარის გაჩენის პრიორიტეტი 0-დან 100-მდე - რომელ ვარგის ნივთს ერგება ადგილი.usageდაvalueწყვეტს, სად შეიძლება ნივთი გაჩნდეს:usageარის შენობის ტიპი (Military, Police, Medic, Farm, Industrial, Town, Village, Hunting),value- loot-ის დონე, სადაც უფრო მაღალი დონეები სანაპიროდან უფრო შორსაა. ნივთი usage-ისა და value-ის გარეშე არსად ჩნდება, და ეს DayZ-ის ადმინისტრირებაში ყველაზე გავრცელებული საკუთარი თავის დაზიანებაა.flagsატრიბუტები წყვეტს, რა ითვლებაnominal-ში.count_in_cargo="1"ნიშნავს, რომ კონტეინერებში მყოფი ნივთებიც ითვლება, ამიტომ ნივთების დამგროვებელ კლანს შეუძლია რუკა ამ ნივთისგან დაცალოს ისე, რომ არაფერი გაფუჭებულა.
ამ მექანიზმიდან სამი დასკვნა გამომდინარეობს. ქალაქი, რომელიც ცარიელი ჩანს, ჩვეულებრივ nominal-ის პრობლემაა და არა გაჩენის სიჩქარის პარამეტრი, რომლის პოვნაც ვერ შეძელი. nominal-ის ყველგან გაზრდა loot-ს უსასრულოდ არ ამრავლებს, რადგან ჯამი რუკაზე არსებული loot წერტილებითაც შეზღუდულია. და ნივთი მოკლე lifetime-ით ქრება ბაზიდან, რომელიც ერთი კვირით დატოვე - გამოიყენე კონტეინერი, რომელსაც საკუთარი lifetime აქვს.
მოდებს, რომლებიც ნივთებს ამატებენ, საკუთარი ჩანაწერებიც სჭირდებათ. იარაღის მოდი, რომელიც თითქოს არაფერს აკეთებს, თითქმის ყოველთვის ისაა, რომლის ნივთებიც economy-ში არასოდეს დარეგისტრირებულა: მოდი ჩატვირთულია, იარაღები თამაშის ფაილებშია და არავინ ჩააჩენს. სწორი გამოსავალი მოდის ჩანაწერების vanilla types.xml-ში ჩაკოპირება არ არის, რადგან თამაშის განახლება მას გადააწერს. ამის ნაცვლად cfgeconomycore.xml-ში დაარეგისტრირე საკუთარი საქაღალდე:
<ce folder="custom"> <file name="mod_types.xml" type="types"/></ce>ახლა შენი დამატებები ცხოვრობს mpmissions/dayzOffline.chernarusplus/custom/mod_types.xml-ში და პატჩებს გადაურჩება. types.xml და loot economy მთელ სისტემას დეტალურად შლის.
Persistence ამ ყველაფრისგან ცალკეა. მოთამაშეების ბაზები, stash-ები, ტრანსპორტი და პერსონაჟების მონაცემები storage_<instanceId>-ში ცხოვრობს, mission საქაღალდის გვერდით. Economy-ის ჩასწორება მათ არ წაშლის. ამ საქაღალდის წაშლა კი წაშლის - ეს wipe-ია და ერთადერთი საიმედო. ჯერ ასლი შეინახე, და შეინახე სერვერისგან სხვა ადგილას: backup-ები, რომლებიც მართლა აღდგება სწორედ იმიტომ არსებობს, რომ backup, რომელიც არავის აუღდგენია, ჰიპოთეზაა.
ადმინისტრირება: RCon, ლოგები და გადატვირთვები#
ადმინისტრირება არის BattlEye RCon პლუს ადმინის მოდი, რომელიც აირჩიე. passwordAdmin serverDZ.cfg-ში გრძელი და შემთხვევითი უნდა იყოს, თუმცა vanilla მას თითქმის არაფერს აკეთებინებს; RCon-ის პაროლი ცალკეა და ცხოვრობს BEServer_x64.cfg-ში, BattlEye-ის საქაღალდეში შენს profiles დირექტორიაში.
BattlEye-ის საკუთარი ბრძანებების ნაკრები, RCon კლიენტში ან პანელის კონსოლში აკრეფილი, მცირეა:
| ბრძანება | ეფექტი |
|---|---|
players | დაკავშირებული მოთამაშეები მათი ID-ებითა და ping-ით |
kick <id> <reason> | გაგდება სესიის id-ით |
ban <id> <minutes> <reason> | დაკავშირებული მოთამაშის დაბანვა, 0 - სამუდამოდ |
addBan <GUID> <minutes> <reason> | იმის დაბანვა, ვინც დაკავშირებული არ არის |
bans / removeBan <n> | ბანების სია და მოხსნა |
say -1 <message> | შეტყობინება ყველასთვის |
loadBans / loadEvents | BattlEye-ის ფაილების ხელახლა წაკითხვა გადატვირთვის გარეშე |
#shutdown | სერვერის გაჩერება |
ბანები bans.txt-ში BattlEye GUID-ებად ინახება, რომლებიც SteamID-იდან გამოითვლება და SteamID არ არის. ლოგებიდან გადმოწერე და ხელით ნუ გადაიყვან. თუ RCon-ს საერთოდ ხსნი გარეთ, ჯერ წაიკითხე RCON უსაფრთხოდ - პროტოკოლი UDP-ია, პაროლი მთელი ავთენტიფიკაციაა, და DayZ სერვერებს განუწყვეტლივ სკანირებენ.
ლოგები შენს profiles საქაღალდეში სამუშაოს მეორე ნახევარია:
server_console.log- ყველაფერი, რაც კონსოლმა დაბეჭდა, და სწორედ აქ ჩნდება შენი XML-ის სტარტის შეცდომები.*.ADM- ადმინის ლოგი: შესვლები, გასვლები, პოზიციები, სიკვდილები, დარტყმები, ვინ ვის და რითი მოკლა. ეს ფაილი იკითხება ბაზაზე თავდასხმის შესახებ ყოველი კამათის შემდეგ.script*.log- script-ის შეცდომები, მოდებისაც.crash_*და*.mdmp- ის, რაც მოდის ავტორს უნდა გაუგზავნო.
DayZ სერვერები გრაფიკით გადაიტვირთება, ჩვეულებრივ ყოველ სამ-ოთხ საათში, რადგან server FPS სესიის განმავლობაში უარესდება და რადგან დაგეგმილი გადატვირთვა კონტროლირებადი შენახვაა. ამის გაკეთება მხოლოდ db/messages.xml-ითაც შეგიძლია, სადაც შეტყობინების ჩანაწერს შეუძლია გამორთვა ატაროს, ხოლო პანელის Schedules ჩანართს cron გამოსახულებით შეუძლია გადატვირთვა და backup ერთად გაუშვას - გადატვირთვის გრაფიკები, რომლებიც გვეხმარება გეტყვის, რომელი ინტერვალი ღირს. RE:NODE-ზე Restart ღილაკი სუფთა გაჩერებაა, watcher-ი შეამჩნევს სერვერს, რომელიც თავისით განუწყვეტლივ იტვირთება, და ციკლში დატოვების ნაცვლად ticket-ს ხსნის, სერვერი კი, რომელიც მეხსიერების ლიმიტს მიაღწევს, swap-ში მიტოვების ნაცვლად ჩერდება და სუფთად გადაიტვირთება.
პრობლემების მოგვარება#
სერვერი მუშაობს, მაგრამ DayZ Launcher-ის სიაში არ არის. Query პორტი. შეამოწმე, რომ steamQueryPort გამოყოფილ UDP პორტს ემთხვევა და მანქანაზე სხვა არავინ იკავებს.
მოთამაშეები BattlEye-ის ხელმოწერის შეცდომით გაიგდებიან. .bikey არ არის keys საქაღალდეში, ან მოდი განახლდა და ახალი გასაღები მოიტანა. ყოველი მოდის განახლების შემდეგ ყველა მოდის გასაღები თავიდან გადაწერე.
"You cannot play/edit this mission; it is dependent on downloadable content that has been deleted." კლიენტის მოდების სია სერვერისას არ ემთხვევა - ჩვეულებრივ მოდი, რომელიც launcher-მა არ ჩამოტვირთა, ან ვერსიების შეუსაბამობა. მოთამაშემ ფაილები launcher-ით შეამოწმოს და არა Steam-ით.
Loot არ შეცვლილა `types.xml`-ის ჩასწორების შემდეგ. ან არ გადაგიტვირთავს, ან ფაილმა ვერ გაიარა parse და economy უკან დაბრუნდა. წაიკითხე server_console.log თავიდან: დაზიანებული XML ფაილი იქ სახელდება იმ ელემენტთან ერთად, რომელმაც გატეხა.
დამატებული მოდის ნივთები არასოდეს ჩნდება. მათ economy-ის ჩანაწერები არ აქვთ, ან აქვთ ჩანაწერები usage-ისა და value-ის გარეშე. იხილე ზემოთ.
ყველაფერი ნელია, როცა სერვერი ივსება. მეხსიერების ყიდვამდე შეამოწმე დალოგილი server FPS. ინფიცირებულების დიდი რაოდენობა, მოდების დიდი სიები და ათობით მუდმივი ტრანსპორტი CPU-ს ხარჯავს და არა RAM-ს.
ბაზები განახლების შემდეგ გაქრა. storage_<instanceId>-ში persistence განულდა ან instance id შეიცვალა. ამ საქაღალდის backup-ის გარეშე აღდგენა არ არსებობს.
სამყაროს საათი ყოველ გადატვირთვაზე განულდება. serverTimePersistent = 0.
FAQ#
შემიძლია DayZ სერვერის გაშვება, თუ თამაში არ მაქვს?
არა. სერვერის აპლიკაცია ანონიმური SteamCMD შესვლით არ იტვირთება, ამიტომ ინსტალაციისთვის უნდა გამოიყენო Steam ანგარიში, რომელსაც თამაში აქვს. გამოიყენე სათადარიგო ანგარიში და არა მთავარი.
რამდენი მოთამაშის დატევა შეუძლია DayZ სერვერს?
maxPlayers 60-ს ბევრად სცდება, მაგრამ პრაქტიკული ზღვარი CPU-ა. უმეტესი საჯარო სერვერი 40-60-ზე მუშაობს და ამაზე მეტზე server FPS-ს კარგავს, განსაკუთრებით მოდების დიდი სიით. DayZ სერვერს იშვიათად ტეხავს მოთამაშეების რაოდენობა; ტეხავს მოდების სია.
ყოველ რამდენიმე საათში უნდა გადავტვირთო?
აუცილებლად არა. სერვერი გააგრძელებს მუშაობას. მაგრამ server FPS გრძელი სესიის განმავლობაში ეცემა, გადატვირთვა სუფთა შენახვაა და მოდებით დახუნძლული სერვერების უმეტესობა მის შემდეგ თვალსაჩინოდ უკეთესია. სამ-ოთხი საათი community-ის ნორმაა; გამოაცხადე db/messages.xml-ით, რომ გადატვირთვამ არავის დააკარგვინოს რეიდი.
loot economy-ის ჩასწორება რუკას წაშლის?
არა. Loot და persistence ცალკეა. types.xml-ისა და economy-ის სხვა ფაილების ჩასწორება ცვლის იმას, რაც შემდეგი გადატვირთვიდან ჩნდება; ბაზები, stash-ები და პერსონაჟები storage_<instanceId>-ში ხელუხლებელია. Wipe ნიშნავს ამ storage საქაღალდის განზრახ წაშლას.
რატომ მუშაობს მოდი ჩემთან და სხვას არა?
მოდი შენ ლოკალურად გაქვს, სერვერი კი მას არ აცხადებს, ან ის -servermod=-შია იქ, სადაც -mod=-ში უნდა იყოს. კლიენტისა და სერვერის მოდები -mod=-ში ეკუთვნის, გასაღებით keys-ში; -servermod= მხოლოდ ნამდვილად სერვერულ მოდებს ეკუთვნის.
სად ვიხედო პირველ რიგში, როცა რამე არასწორადაა?
server_console.log და .ADM ფაილი შენს profiles საქაღალდეში, ამ თანმიმდევრობით. DayZ-ის ადმინისტრირების ნახევარი XML-ია, მეორე ნახევარი კი ლოგის კითხვა, რომელიც გეუბნება, მისი რომელი ხაზი შეგეშალა.




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