serverDZ.cfg ის ერთადერთი ფაილია, რომელსაც ყველა DayZ სერვერი ყველაფერზე ადრე კითხულობს: სახელი, პაროლები, მოთამაშეების რაოდენობა, დღე-ღამის დრო, ანტიჩიტის სიმკაცრე, ლოგები, შესვლის რიგი და რომელი მისიის საქაღალდე ჩაიტვირთოს. მასში დაახლოებით ორმოცდაათი key = value; ხაზია და ერთი class Missions ბლოკი, და მათგან სერვერების უმეტესობისთვის მხოლოდ ათიოდეს აქვს მნიშვნელობა. დანარჩენი ან უსაფრთხო ნაგულისხმევი მნიშვნელობებია, ან ქსელის მორგება, რომელსაც მიზეზის გარეშე არ უნდა შეეხო. ეს სახელმძღვანელო ფაილს ჯგუფ-ჯგუფ გადის, თითოეული ხაზისთვის გეუბნება, რა მნიშვნელობა ღირს, და ბოლოს სინტაქსურ შეცდომებს მიმოიხილავს, რომელთა გამოც სერვერი შენს ცვლილებებს უგულებელყოფს ან საერთოდ არ ეშვება.
თუ სერვერს ნულიდან აწყობ, დაიწყე DayZ სერვერის სრული სახელმძღვანელოთი, სადაც ინსტალაცია, პორტები და მოდებია განხილული. ეს პოსტი კი ცნობარია, რომელსაც ფაილის რედაქტირებისას გახსნილს ინახავ.
სად არის ფაილი და როგორ იკითხება#
ფაილი სერვერის ძირეულ საქაღალდეშია, Windows-ზე DayZServer_x64.exe-ის, Linux-ზე კი DayZServer-ის გვერდით, და სერვერს მასზე გაშვების პარამეტრი მიუთითებს:
$ ./DayZServer -config=serverDZ.cfg -port=2302 -profiles=profilesსახელი შეთანხმებაა და არა მოთხოვნა. -config= ნებისმიერ ფაილზე შეიძლება მიუთითებდეს, და ასე ინახავენ ორ კონფიგურაციას (სატესტოსა და ცოცხალს) გვერდიგვერდ. პანელიან ჰოსტინგზე ეს პარამეტრი ჩვეულებრივ Startup ჩანართზეა დაფიქსირებული და შენ მხოლოდ თავად ფაილს არედაქტირებ, ბრაუზერში ან SFTP-ით.
სამი ფაქტი იმის შესახებ, თუ როგორ კითხულობს სერვერი ფაილს, ხსნის იმ დაბნეულობის უმეტესობას, რაც ხალხს აქვს:
- ის ერთხელ იკითხება, გაშვებისას. ფაილის რედაქტირება გაშვებულ სერვერზე არაფერს ცვლის შემდეგ რესტარტამდე. ზოგიერთი თამაშისგან განსხვავებით, DayZ ფაილს გამორთვისას თავიდან არ წერს, ამიტომ გაშვებულ სერვერზე გაკეთებული ცვლილება არ იკარგება - უბრალოდ ჯერ არ არის აქტიური.
- უცნობი გასაღებები ჩუმად იგნორირდება. არასწორად დაწერილი გასაღები, ან ძველი სახელმძღვანელოდან გადმოკოპირებული, რომელიც Bohemia-მ მას შემდეგ ამოიღო, შეცდომას არ იძლევა. სერვერი უბრალოდ ნაგულისხმევ მნიშვნელობას იყენებს. თუ პარამეტრი თითქოს არაფერს აკეთებს, შეამოწმე მართლწერა იმ ფაილთან, რომელსაც Bohemia მიმდინარე build-თან ერთად აწვდის.
- სინტაქსური შეცდომები ყოველთვის ჩუმი არ არის. გამოტოვებულმა წერტილმძიმემ ან დაუხურავმა ბრჭყალმა შეიძლება პარსერს შემდეგი ხაზი "გადააყლაპოს" ან სერვერი გაშვებისას გააჩეროს. შეცდომა, თუ ის არსებობს, profiles საქაღალდეში სერვერის
.RPTფაილის თავშია.
ყველაზე უსაფრთხო სამუშაო პროცესი მოსაწყენია: გააჩერე სერვერი, დაარედაქტირე, შეინახე, გაუშვი და წაიკითხე ლოგის პირველი ეკრანი.
იდენტობა და წვდომა#
hostname = "EU | Chernarus | Vanilla+ | 3-hour restarts";password = "";passwordAdmin = "a-long-random-string";enableWhitelist = 0;maxPlayers = 60;| გასაღები | რას აკეთებს | რა ღირს მნიშვნელობად |
|---|---|---|
hostname | სახელი ლაუნჩერსა და სერვერების სიაში | რეგიონი, რუკა, სტილი, რესტარტების რიტმი |
password | შესვლის პაროლი | საჯაროსთვის ცარიელი, კერძოსთვის დაყენებული |
passwordAdmin | თამაშში ადმინად შეგიყვანს | გრძელი და შემთხვევითი, არასოდეს გაზიარებული |
enableWhitelist | შესვლა მხოლოდ სიაში მყოფ მოთამაშეებს შეუძლიათ | 0 საჯაროსთვის, 1 კერძოსთვის |
maxPlayers | სლოტების რაოდენობა | რამდენსაც შენი CPU რეალურად მოემსახურება |
hostname შენი ერთადერთი რეკლამაა ათასობით სერვერის სიაში, და მოთამაშეები მის წაკითხვით ფილტრავენ. ჩაწერე მასში ის, რის მიხედვითაც გადაწყვეტენ: რეგიონი, რუკა, vanilla არის თუ არა და რამდენად ხშირად იტვირთება თავიდან. მოერიდე სპეციალურ სიმბოლოებს, რომლებსაც ლაუნჩერი ცუდად აჩვენებს; უბრალო ASCII და ვერტიკალური ხაზი უსაფრთხოა.
passwordAdmin არის ის, რასაც თამაშის ჩატში #login-ის შემდეგ კრეფ, რომ vanilla ადმინის რამდენიმე ბრძანება მიიღო, მაგალითად #kick და #shutdown. ის BattlEye RCon-ის პაროლისგან განცალკევებულია, რომელიც სულ სხვა ფაილშია და განხილულია სტატიაში DayZ-ის ადმინის ხელსაწყოები და BattlEye RCon. ორივე გრძელი და შემთხვევითი უნდა იყოს. საჯარო DayZ სერვერზე მოკლე ადმინის პაროლს გამოიცნობენ და გატეხვაც არ დასჭირდებათ.
enableWhitelist = 1 სერვერს მხოლოდ დაშვებულთა სიაზე გადაიყვანს. სტანდარტულ ინსტალაციებზე სია უბრალო ტექსტური ფაილია, whitelist.txt, თითო SteamID64 თითო ხაზზე; სერვერი მას გაშვებისას კითხულობს. თუ whitelist-ს ცარიელი ფაილით ჩართავ, ვერავინ შევა, შენც კი, ამიტომ ჯერ თავი დაამატე.
maxPlayers დიდ რიცხვებს იღებს, მაგრამ რეალური ზღვარი სერვერის FPS-ია და არა ეს ველი. 60-სლოტიანი vanilla სერვერი სამ ბირთვზე გონივრულია; 60-სლოტიანი სერვერი მოდების დიდი სიით ხშირად - არა. რიცხვები მთავარი სახელმძღვანელოს მოთხოვნების ცხრილშია, ზოგად მსჯელობას კი სტატია რამდენი მოთამაშე ეტევა სერვერზე განიხილავს.
ანტიჩიტი, build-ები და კლიენტის შეზღუდვები#
verifySignatures = 2;forceSameBuild = 1;allowFilePatching = 0;speedhackDetection = 1;disable3rdPerson = 0;disableCrosshair = 0;disableVoN = 0;vonCodecQuality = 20;verifySignatures = 2 ყოველი მოდის ხელმოწერას სერვერის keys საქაღალდეში არსებულ გასაღებებთან ამოწმებს. ეს ერთადერთი მნიშვნელობაა, რომელსაც Bohemia მხარს უჭერს, და მისი დაწევით აღმოჩნდებიან სერვერები შეცვლილი კლიენტური ფაილებით. თუ მოთამაშეებს ხელმოწერის შეცდომით აგდებს, გამოსავალი დაკარგული .bikey-ის keys-ში გადაწერაა და არასოდეს ამ მნიშვნელობის დაწევა.
forceSameBuild = 1 უარყოფს კლიენტებს, რომლებიც თამაშის სხვა build-ზე არიან. პატჩის შემდეგ მოთამაშეები, რომლებსაც განახლება არ გაუკეთებიათ, კარშივე მკაფიო შეტყობინებას იღებენ და არა ბუნდოვან შეცდომას ჩატვირთვის შუაში. დატოვე ჩართული.
allowFilePatching = 0 ბლოკავს -filePatching-ით გაშვებულ კლიენტებს, რაც კლიენტს ხელმოწერილი PBO-ების ნაცვლად ცალკეული ფაილების ჩატვირთვის საშუალებას აძლევს. მოდების დეველოპერებს, რომლებიც ლოკალურად ტესტავენ, ეს ჩართული სჭირდებათ; სხვას არავის, და ეს შემთხვევითი ჩიტერობის გავრცელებული გზაა.
speedhackDetection = 1 ძრავის speed-hack-ის შემოწმებას რთავს. ის იაფია და იშვიათად იძლევა ცრუ დადებით შედეგს; დატოვე მოწოდებული მნიშვნელობით.
disable3rdPerson და disableCrosshair ის ორი პარამეტრია, რომლებიც სერვერის სტილს ყველაზე მეტად განსაზღვრავს. მხოლოდ პირველი პირიდან ხედი (disable3rdPerson = 1) კედლებს მიღმა მესამე პირიდან ჭვრეტის შესაძლებლობას აქრობს და "hardcore" სერვერებზე ნორმაა. ის იმასაც ცვლის, როგორ უტევენ და იცავენ ბაზებს, ამიტომ გადაწყვიტე გაშვებამდე და არა ერთი თვის მესამე პირისთვის დაპროექტებული ბაზების შემდეგ.
disableVoN = 0 ახლო მანძილის ხმოვან ჩატს ინარჩუნებს, რაც DayZ-ის თამაშის დიდი ნაწილია - ძარცვა, მოლაპარაკება, ვაჭრობა. vonCodecQuality 0-დან 30-მდეა; 20 მოწოდებული მნიშვნელობაა და გონივრული ბალანსი სიცხადესა და გამტარობას შორის. 30-მდე აწევა თითო მოლაპარაკე მოთამაშეზე ცოტა გამტარობას ხარჯავს და იშვიათად შესამჩნევია.
დღე-ღამის დრო და მისი ციკლი#
serverTime = "SystemTime";serverTimeAcceleration = 6;serverNightTimeAcceleration = 4;serverTimePersistent = 1;| გასაღები | დიაპაზონი | რას აკეთებს |
|---|---|---|
serverTime | "SystemTime" ან "YYYY/MM/DD/HH/MM" | საწყისი თარიღი და დრო |
serverTimeAcceleration | 0-დან 24-მდე | თამაშის საათის მამრავლი |
serverNightTimeAcceleration | 0.1-დან 64-მდე | დამატებითი მამრავლი ღამით |
serverTimePersistent | 0 ან 1 | საათის შენარჩუნება რესტარტებს შორის |
ეს ჯგუფი მოთამაშეების ყველაზე მეტ საჩივარს იწვევს, არითმეტიკა კი მარტივია, როგორც კი დაინახავ. serverTimeAcceleration მთელ საათს ამრავლებს: 1-ზე დღე 24 რეალურ საათს გრძელდება, 6-ზე ოთხს, 12-ზე ორს. serverNightTimeAcceleration ამის თავზე, მხოლოდ ღამით მოქმედებს, ამიტომ ღამის ფაქტობრივი სიჩქარე ამ ორი მნიშვნელობის ნამრავლია.
მაგალითი. serverTimeAcceleration = 6-ით და serverNightTimeAcceleration = 4-ით დღე 6x სიჩქარით გადის, ღამე კი 24x-ით. ოთხსაათიან რეალურ სათამაშო სესიაში გრძელ, სათამაშოდ კარგ დღეებს და ღამეებს ნახავ, რომლებიც საათზე გაცილებით ნაკლებ დროში მთავრდება. ეს ფორმა - გრძელი დღე, მოკლე ღამე - არის ის, რაც საჯარო სერვერების უმეტესობას უნდა, რადგან DayZ-ში ღამე მართლა ბნელია და ნებისმიერი აუდიტორიის დიდი ნაწილი ღამისთვის გამოდის თამაშიდან.
serverTime = "SystemTime" საათს მანქანის ლოკალური დროიდან იწყებს. ფიქსირებული მნიშვნელობა, მაგალითად "2024/6/15/8/0", ყოველ სესიას ივნისის დილის რვა საათზე იწყებს, რაც სეზონზე დამოკიდებულ დღის სინათლის ხანგრძლივობასაც აკონტროლებს. serverTimePersistent = 0-ით ეს საწყისი დრო ყოველ რესტარტზე თავიდან ყენდება - სწორედ ამიტომ აქვთ დღეში ოთხი რესტარტისა და ნაგულისხმევი 0-ის მქონე სერვერებს ერთი და იგივე დილა ოთხჯერ. დააყენე 1-ზე და საათი იქიდან გააგრძელებს, სადაც გაჩერდა.
ორი მონათესავე გასაღები ღამის სიგრძეს კი არა, მის იერს ცვლის. lightingConfig = 0 უფრო ნათელი ღამეა, 1 უფრო ბნელი. disablePersonalLight = 1 აქრობს სუსტ შუქს თითოეული მოთამაშის ირგვლივ, რომელიც უკუნ ღამეებს ფანრის გარეშე სათამაშოს ხდის. ორივეს სიბნელისკენ გადაწევა ღამეებს ბევრად ართულებს; სინათლისკენ გადაწევა მათ უბრალოდ ატმოსფერულს ხდის. ბოლო build-ებზე ეს ორი cfggameplay.json-შიც შეიძლება დაყენდეს, რაც ქვემოთაა განხილული.
Persistence, respawn და ბაზის დაზიანება#
instanceId = 1;storageAutoFix = 1;respawnTime = 5;disableRespawnDialog = 0;disableBaseDamage = 0;disableContainerDamage = 0;instanceId წყვეტს, რომელ persistence საქაღალდეს კითხულობს და წერს სერვერი: storage_1 ინსტანსი 1-სთვის, storage_2 ინსტანსი 2-სთვის, მისიის საქაღალდის შიგნით. ამ საქაღალდეში ყველა ბაზა, კარავი, მანქანა და პერსონაჟია. შეცვალე რიცხვი და სერვერი ძველის გვერდით ახალ სამყაროს იწყებს - ძველი მონაცემები ისევ იქაა, უბრალოდ არ იტვირთება. ერთ მანქანაზე ორ სერვერს ერთი instance id არასოდეს უნდა ჰქონდეს. ყველაფერი ამ საქაღალდის შესახებ, ნაწილობრივი და სრული wipe-ების ჩათვლით, სტატიაშია DayZ-ის wipe-ები და persistence.
storageAutoFix = 1 სერვერს საშუალებას აძლევს, დაზიანებული persistence ფაილი გაშვებისას შეაკეთოს, ნაცვლად იმისა, რომ მისი ჩატვირთვა უარყოს. დატოვე ჩართული. ავტომატური შეკეთების ალტერნატივა ხელუხლებელი სამყარო კი არა, სერვერია, რომელიც არ ჩაიტვირთება, სანამ ვინმე backup-ს ხელით არ აღადგენს.
respawnTime არის დაყოვნება წამებში, სანამ მკვდარი მოთამაშე ხელახლა გაჩნდება. disableRespawnDialog = 1 ახალ და შემთხვევით spawn-ს შორის არჩევანს გამოტოვებს და მოთამაშეს პირდაპირ შემთხვევით წერტილში აგზავნის.
disableBaseDamage = 1 აშენებულ ღობეებსა და კედლებს ურღვევს ხდის, disableContainerDamage = 1 კი იგივეს აკეთებს კარვებისთვის, კასრებისა და ყუთებისთვის. ერთად ისინი სერვერს no-raid სერვერად აქცევს. ეს PvE ან roleplay თემებისთვის ლეგიტიმური სტილია, მაგრამ ის აგროვების საპირწონეს აქრობს, და დიდხანს მომუშავე სერვერზე ურღვევი საცავით ლუთის ეკონომია ივსება ნივთებით, რომლებსაც ვერავინ ვერასოდეს დაკარგავს. თუ რეიდებს თიშავ, მეტი ყურადღება მიაქციე types.xml-ის მთვლელ დროშებს, რომლებიც ახსნილია ლუთის ეკონომიის სახელმძღვანელოში.
შესვლის რიგი, ping და შეტყობინებები#
loginQueueConcurrentPlayers = 5;loginQueueMaxPlayers = 500;maxPing = 200;motd[] = {"Restarts every 3 hours", "Discord: example.gg/server"};motdInterval = 300;loginQueueConcurrentPlayers არის რამდენი მოთამაშე შეიძლება იყოს ჩატვირთვის პროცესში ერთდროულად, loginQueueMaxPlayers კი - რამდენად გრძელი შეიძლება იყოს რიგი. ნაგულისხმევ მნიშვნელობებს მიზეზი აქვს: რესტარტის შემდეგ ოცი მოთამაშის ერთდროული ჩატვირთვა დისკისა და CPU-ს სამუშაოს დიდი ტალღაა, ხუთ-ხუთად შეშვება კი სერვერის FPS-ს სტაბილურად ინარჩუნებს მათთვის, ვინც უკვე შიგნითაა. პირველი მნიშვნელობის აწევა რესტარტის შემდგომ მოწოლას აჩქარებს, პირველ წუთებს კი უფრო მძიმეს ხდის.
maxPing აგდებს მოთამაშეებს, რომელთა ping მილიწამებში მოცემულ მნიშვნელობაზე მაღლა რჩება. გერმანიაში მდგარი სერვერისთვის 200 ევროპის უმეტესობას, ახლო აღმოსავლეთსა და აშშ-ის აღმოსავლეთს უშვებს და გამორიცხავს მოთამაშეებს, რომელთა მოძრაობა მათ ახლოს მყოფ ყველასთვის დესინქრონიზდებოდა. დაწიე მხოლოდ მაშინ, თუ შენს აუდიტორიაში დარწმუნებული ხარ. Latency, jitter და packet loss ხსნის, რატომ აზიანებს მაღალი ping სხვებსაც და არა მხოლოდ იმ მოთამაშეს, ვისაც აქვს.
motd[] სტრიქონების მასივია, რომლებიც რიგრიგობით ჩანს; motdInterval მათ შორის შუალედია წამებში. ყურადღება მიაქციე კვადრატულ ფრჩხილებს სახელის შემდეგ და ფიგურულ ფრჩხილებს სიის ირგვლივ: ეს ფაილში ერთადერთი ადგილია, სადაც სინტაქსი იცვლება, და პარსინგის შეცდომების უმეტესობა სწორედ აქედან მოდის.
ლოგები და debug მონიტორი#
timeStampFormat = "Short";logAverageFps = 300;logMemory = 300;logPlayers = 300;logFile = "server_console.log";adminLogPlayerHitsOnly = 0;adminLogPlacement = 1;adminLogBuildActions = 1;adminLogPlayerList = 1;enableDebugMonitor = 0;სამი log* მნიშვნელობა შუალედებია წამებში. logAverageFps = 300 სერვერის FPS-ს ლოგში ყოველ ხუთ წუთში წერს, და ეს ერთადერთი ყველაზე სასარგებლო რიცხვია იმის შესაფასებლად, გადატვირთულია თუ არა სერვერი. ჯანსაღია დაახლოებით 30-ზე მეტი; 15-ზე ქვემოთ მოთამაშეები rubber-banding-ს და კარებს ამჩნევენ, რომლებიც ორ ცდას საჭიროებს. logMemory და logPlayers იგივეს აკეთებს მეხსიერების გამოყენებისა და მოთამაშეების რაოდენობისთვის, რაც შენელების შედარების საშუალებას გაძლევს იმასთან, რამდენი ადამიანი იყო ონლაინ.
logFile profiles საქაღალდეში ჩაწერილი კონსოლის ლოგის სახელია. timeStampFormat არის "Short" (მხოლოდ დრო) ან "Full" (თარიღი და დრო); გამოიყენე Full, თუ ოდესმე სხვადასხვა დღის ლოგების შედარება მოგიწევს.
adminLog* გასაღებები წყვეტს, რა ჩაიწერება .ADM ფაილში, შესვლების, მკვლელობების, დარტყმებისა და პოზიციების ჩანაწერში:
adminLogPlayerHitsOnly = 1დარტყმების ლოგირებას მხოლოდ მოთამაშეებზე დარტყმებით ზღუდავს, რაც ფაილს ამცირებს სერვერებზე, სადაც ბევრი ინფიცირებულია.adminLogPlacement = 1ყოველ დადგმულ ობიექტს იწერს - კარვებს, ხაფანგებს, ღობეებს. აუცილებელია კამათის გადასაწყვეტად, ვინ რა სად ააშენა.adminLogBuildActions = 1ბაზის ნაწილების აშენებას, დაშლასა და განადგურებას იწერს. ჩართე, თუ შენს წესებს რეიდები აინტერესებს.adminLogPlayerList = 1მოთამაშეების სრულ სიას პოზიციებით ყოველ ხუთ წუთში წერს.
ეს ყველაფერი დისკს ხარჯავს და არა CPU-ს. დატვირთული სერვერი ყველა ოფციის ჩართვით დღეში რამდენიმე ათეულ მეგაბაიტ .ADM-ს წერს, რაც იაფი დაზღვევაა; უბრალოდ ძველი ლოგები განრიგით წაშალე. ლოგები, რომელთა შენახვაც ღირს გონივრულ შენახვის პოლიტიკას გთავაზობს.
enableDebugMonitor = 1 ყველა მოთამაშეს პატარა overlay-ს უჩვენებს მისი ჯანმრთელობით, სისხლითა და პოზიციით. ის სასარგებლოა სატესტო სერვერზე და საჩუქარია ყველასთვის, ვინც ცოცხალ სერვერზე სხვა მოთამაშეებზე ნადირობს. საჯარო სერვერზე დატოვე გამორთული.
ქსელი, query და რეპლიკაცია#
steamQueryPort = 2305;guaranteedUpdates = 1;multithreadedReplication = 1;simulatedPlayersBatch = 20;networkRangeClose = 20;networkRangeNear = 150;networkRangeFar = 1000;networkRangeDistantEffect = 4000;defaultVisibility = 1375;defaultObjectViewDistance = 1375;steamQueryPort ის UDP პორტია, რომელზეც ლაუნჩერი და სერვერების სია სერვერის სახელს, რუკასა და მოთამაშეების რაოდენობას ეკითხება. თუ სერვერთან IP-ით შეერთება შესაძლებელია, მაგრამ სიაში არ ჩანს, პირველი ეჭვმიტანილი ეს პორტია: ის უნდა ემთხვეოდეს სერვერისთვის რეალურად გამოყოფილ პორტს და სხვა არაფერი უნდა იყენებდეს. თამაშის სერვერის პორტები ახსნილი განიხილავს, რატომ ყოფენ თამაშები query პორტს თამაშის პორტისგან.
guaranteedUpdates = 1 ქსელურ პროტოკოლს ირჩევს; 1 ერთადერთი დოკუმენტირებული მნიშვნელობაა. multithreadedReplication = 1 ძრავს ქსელური რეპლიკაციის რამდენიმე ნაკადზე გადანაწილების საშუალებას აძლევს და ჩართული უნდა დარჩეს. simulatedPlayersBatch ზღუდავს, რამდენ მოთამაშეს ასიმულირებს სერვერი ერთ კადრში.
networkRange* მნიშვნელობები მანძილებია მეტრებში, რომელთა ფარგლებში ობიექტები კლიენტზე სხვადასხვა პრიორიტეტით რეპლიცირდება, ხოლო ხილვადობის ორი მნიშვნელობა ხედვისა და ობიექტების ხედვის მანძილს ზღუდავს. ეს ის პარამეტრებია, რომელთა აწევასაც ჰოსტინგის ფორუმები "უკეთესი ვიზუალისთვის" გირჩევენ. ნუ გააკეთებ. ყოველი აწევა ნიშნავს მეტ ობიექტს, რომელიც ყველა მოთამაშეზე რეპლიცირდება, ყოველ კადრში, ხარჯი კი მთავარ ნაკადზე მოდის, რომელიც ისედაც შენი სერვერის FPS-ს განსაზღვრავს. მოწოდებული მნიშვნელობები მოწოდებული რუკებისთვისაა მორგებული. მათი შეცვლის ერთადერთი კარგი მიზეზი კონკრეტული, გაზომილი პრობლემაა, და ჯერ სატესტო ინსტანსზე.
მისიის ბლოკი და cfggameplay.json#
ფაილი მთავრდება ბლოკით, რომელიც რუკასა და ეკონომიას ირჩევს:
enableCfgGameplayFile = 1;class Missions{ class DayZ { template = "dayzOffline.chernarusplus"; };};template არის mpmissions-ში არსებული საქაღალდის სახელი, ზუსტად დაწერილი, დიდი ასოების ჩათვლით. Chernarus არის dayzOffline.chernarusplus, Livonia კი dayzOffline.enoch; სათემო რუკებს საკუთარი მისიის საქაღალდეები მოჰყვება, როგორც აღწერილია სტატიაში Deer Isle-ის ან Namalsk-ის გაშვება. არასწორი სახელი Chernarus-ზე არ გადადის - სერვერი მისიას ვერ ტვირთავს.
enableCfgGameplayFile = 1 სერვერს ეუბნება, მისიის საქაღალდიდან cfggameplay.json წაიკითხოს. Bohemia-მ ეს ფაილი დაამატა თამაშის პარამეტრებისთვის, რომლებსაც ადრე სკრიპტ-მოდი სჭირდებოდა: გამძლეობა, მოძრაობა, ბაზის მშენებლობის შეზღუდვები, საწყისი აღჭურვილობის პრესეტები, ტემპერატურა და განათება. რამდენიმე მნიშვნელობა ორივე ადგილას არსებობს - disablePersonalLight, lightingConfig, disableBaseDamage, disableContainerDamage, disableRespawnDialog - და json-ის ჩართვისას Bohemia-ს დოკუმენტაცია json-ს მიიჩნევს იმ ადგილად, სადაც ისინი დგინდება. თუ ჩართავ, ეს მნიშვნელობები იქ დააყენე, .cfg-ის ასლები კი ნაგულისხმევზე დატოვე, რომ კითხვაზე "სად არის ეს კონფიგურირებული" მხოლოდ ერთი პასუხი იყოს.
ფრაგმენტი, ფორმის საილუსტრაციოდ და არა სრული ფაილი:
{ "GeneralData": { "disableBaseDamage": false, "disableContainerDamage": false, "disableRespawnDialog": false }, "PlayerData": { "disablePersonalLight": false }, "WorldsData": { "lightingConfig": 1 }}დაიწყე იმ cfggameplay.json-იდან, რომელიც შენს მისიის საქაღალდეს მოჰყვება, ნაცვლად იმისა, რომ თავად დაწერო: ფაილს ვერსიის ველი და ბევრად მეტი გასაღები აქვს, სტრუქტურა კი თამაშის განახლებებს შორის იცვლება. რესტარტამდე JSON გაავალიდირე - ერთი ზედმეტი მძიმე ბოლოში და სერვერი ან ფაილს უგულებელყოფს, ან ჩერდება.
სუფთა საწყისი კონფიგურაცია#
ერთად აწყობილი, გონივრული საჯარო სერვერი ასე გამოიყურება. დააკოპირე ფორმა და არა სტრიქონები:
hostname = "EU | Chernarus | Vanilla+ | Restarts 00 03 06 09 12 15 18 21 CET";password = "";passwordAdmin = "replace-with-32-random-characters";enableWhitelist = 0;maxPlayers = 50;verifySignatures = 2;forceSameBuild = 1;allowFilePatching = 0;disableVoN = 0;vonCodecQuality = 20;disable3rdPerson = 0;disableCrosshair = 0;serverTime = "SystemTime";serverTimeAcceleration = 6;serverNightTimeAcceleration = 4;serverTimePersistent = 1;loginQueueConcurrentPlayers = 5;loginQueueMaxPlayers = 500;instanceId = 1;storageAutoFix = 1;respawnTime = 5;maxPing = 200;timeStampFormat = "Full";logAverageFps = 300;logMemory = 300;logPlayers = 300;logFile = "server_console.log";adminLogPlacement = 1;adminLogBuildActions = 1;enableDebugMonitor = 0;steamQueryPort = 2305;enableCfgGameplayFile = 1;class Missions{ class DayZ { template = "dayzOffline.chernarusplus"; };};სანამ ამას დააკოპირებ, ორიგინალი ფაილის backup გააკეთე. RE:NODE-ზე ბრაუზერის რედაქტორი სინტაქსს აფერადებს, რაც დაუხურავ ბრჭყალებს რესტარტამდე იჭერს, ხოლო backup-ის სლოტები ყველა DayZ გეგმაზე საშუალებას გაძლევს, თუ ცვლილება ცუდად წავა, მთელი სერვერი ერთი ღილაკით დააბრუნო. query და თამაშის პორტები შენთვის გამოიყოფა და Network ჩანართზე ჩანს, ამიტომ steamQueryPort იქ ნაჩვენებს უნდა ემთხვეოდეს.
შეცდომები, რომლებიც ფაილს ტეხს#
- "ჭკვიანი" ბრჭყალები. ვებგვერდიდან ან ტექსტურ პროცესორიდან კოპირება
"-ს მრუდე ბრჭყალებად აქცევს, რომლებსაც პარსერი არ იღებს. დაარედაქტირე უბრალო ტექსტურ რედაქტორში ან პანელის რედაქტორში. - გასაღებები ძველი სახელმძღვანელოებიდან. 2018 წლის სახელმძღვანელოებში ჩამოთვლილია გასაღებები, რომლებიც ამოიღეს ან გადაარქვეს. უცნობი გასაღებები იგნორირდება, ამიტომ სერვერი მუშაობს, პარამეტრი კი არაფერს აკეთებს. შეადარე შენს build-თან მოწოდებულ ფაილს.
- template-ის სახელი. Linux-ზე რეგისტრს მნიშვნელობა აქვს.
dayzoffline.chernarusplusდაdayzOffline.chernarusplusიქ სხვადასხვა საქაღალდეა. - ერთი პარამეტრის ორი ასლი. მნიშვნელობა, რომელიც
serverDZ.cfg-შიც დაcfggameplay.json-შიც დაყენებულია, კამათს იწვევს, რომელი იმარჯვებს. დააყენე ერთ ადგილას. - არასწორი ფაილის რედაქტირება. თუ გაშვების ხაზში წერია
-config=serverDZ_live.cfg,serverDZ.cfg-ის რედაქტირება არაფერს ცვლის. ჯერ Startup ჩანართი ან გაშვების ხაზი შეამოწმე. - `instanceId`-ის შემთხვევით შეცვლა. სამყარო წაშლილი ჩანს. არ არის - ძველი storage საქაღალდე ისევ იქაა. რიცხვი დააბრუნე.
FAQ#
საჭიროა რესტარტი serverDZ.cfg-ის რედაქტირების შემდეგ?
კი. ფაილი ერთხელ იკითხება, სერვერის გაშვებისას. ცვლილებები შემდეგი გაშვებიდან მოქმედებს, და სერვერი გამორთვისას შენს ცვლილებებს არ გადაწერს, ამიტომ გაშვებულ სერვერზე რედაქტირება უსაფრთხოა, თუ შემდეგ რესტარტს გააკეთებ.
როგორ შევამოკლო ღამეები ჩემს DayZ სერვერზე?
აწიე serverNightTimeAcceleration. ის ჩვეულებრივ აჩქარებას მხოლოდ ღამით ამრავლებს, ამიტომ serverTimeAcceleration = 6 ღამის მნიშვნელობით 4 გაძლევს გრძელ დღეებს და ღამეებს, რომლებიც დღეებზე ოთხჯერ სწრაფად გადის.
რატომ უგულებელყოფს ჩემი სერვერი დამატებულ პარამეტრს?
ჩვეულებრივ ეს არასწორად დაწერილი ან მოძველებული გასაღებია, რომელსაც DayZ შეცდომის გარეშე უგულებელყოფს, ან მის წინა ხაზზე გამოტოვებული წერტილმძიმე. შეადარე გასაღები მოწოდებულ ფაილს და .RPT ლოგში პარსინგის შეტყობინებები მოძებნე.
რა განსხვავებაა passwordAdmin-სა და RCon-ის პაროლს შორის?
passwordAdmin თამაშში #login-ით გამოიყენება და ჩატის რამდენიმე ბრძანებას გაძლევს. BattlEye RCon-ის პაროლი BEServer_x64.cfg-შია და მას დისტანციური ხელსაწყოები შესაერთებლად იყენებს. ისინი ერთმანეთისგან დამოუკიდებელია და ორივე გრძელი და შემთხვევითი უნდა იყოს.
უნდა ავწიო ქსელის დიაპაზონისა და ხედვის მანძილის მნიშვნელობები?
არა, თუ კონკრეტული პრობლემა არ გაგიზომავს. მაღალი მნიშვნელობები ყველა მოთამაშეზე მეტ ობიექტს არეპლიცირებს და სერვერის FPS-ს ხარჯავს. მოწოდებული მნიშვნელობები მოწოდებული რუკებისთვისაა მორგებული.
შემიძლია ორი სერვერის გაშვება ერთი და იმავე serverDZ.cfg-ით?
ისე, როგორც არის - არა. თითოეულს საკუთარი პორტები, საკუთარი steamQueryPort და საკუთარი instanceId სჭირდება, თორემ მეორე ან პორტს ვერ დაიკავებს, ან პირველის persistence-ს გაიზიარებს და დააზიანებს.




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