Valheim-ის გამოყოფილ სერვერს კონფიგურაციის ფაილი არ აქვს. ყველაფერი გაშვების არგუმენტია იმ ხაზზე, რომელიც valheim_server-ს უშვებს: -name, -port (ნაგულისხმევად 2456), -world (ნაგულისხმევად Dedicated), -password (სულ მცირე ხუთი სიმბოლო, რომელიც სახელში ან სამყაროში არ გვხვდება), -public (ნაგულისხმევად 1), -savedir, -logFile, -saveinterval (ნაგულისხმევად 1800 წამი), -backups / -backupshort / -backuplong (ნაგულისხმევად 4, 7200, 43200), -crossplay, -instanceid, და სამყაროს მოდიფიკატორების არგუმენტები -preset, -modifier და -setkey. წინ დაამატე Unity-ის დროშები -nographics -batchmode და ეს არის მთელი ზედაპირი. ეს გვერდი თითოეულს ჩამოთვლის მისი ნაგულისხმევით, იმით, რასაც სინამდვილეში აკეთებს, და შეცდომით, რომელსაც ხალხი მასთან უშვებს.
სად აკრეფ მათ, იმაზეა დამოკიდებული, როგორ უშვებ სერვერს: Linux-ზე start_server.sh-ის შენს ასლში (Linux-ზე დაყენება), Windows-ზე start_headless_server.bat-ში ან NSSM სერვისში (Windows-ზე დაყენება), Docker-ში SERVER_ARGS-სა და მის მონათესავე ცვლადებში (Docker-ის სახელმძღვანელო), ან ჰოსტინგის პანელის Startup ჩანართის ველებად.
ყველა არგუმენტი ერთი შეხედვით#
| არგუმენტი | ნაგულისხმევი | მნიშვნელობა |
|---|---|---|
-nographics | - | დროშა. Unity: გრაფიკული მოწყობილობის გარეშე |
-batchmode | - | დროშა. Unity: ფანჯრის გარეშე გაშვება |
-name | My server ნიმუშ სკრიპტში | ტექსტი, ნაჩვენები სერვერების სიაში |
-port | 2456 | UDP პორტი; მომდევნო პორტიც გამოიყენება |
-world | Dedicated | სამყაროს ფაილის სახელი, გაფართოების გარეშე |
-password | - | სულ მცირე 5 სიმბოლო |
-public | 1 | 1 სიაშია, 0 სიაში არ არის |
-savedir | პლატფორმის ნაგულისხმევი | საქაღალდე სამყაროებისა და სიის ფაილებისთვის |
-logFile | stdout / კონსოლი | გზა, სადაც ლოგი ჩაიწერება |
-saveinterval | 1800 | წამები სამყაროს შენახვებს შორის |
-backups | 4 | შესანახი ავტომატური backup-ების რაოდენობა |
-backupshort | 7200 | წამები პირველ backup-მდე |
-backuplong | 43200 | წამები შემდგომ backup-ებს შორის |
-crossplay | გამორთული | დროშა. PlayFab ქსელი, Xbox და Game Pass |
-instanceid | - | იდენტიფიკატორი ინსტანსების გასარჩევად |
-preset | - | სამყაროს მოდიფიკატორების პრესეტი |
-modifier | - | <name> <value>, განმეორებადი |
-setkey | - | სამყაროს გადამრთველი, განმეორებადი |
სრული ხაზი ტიპური სერვერისთვის:
./valheim_server.x86_64 -nographics -batchmode -name "Longship Crew" -port 2456 \ -world "Midgard" -password "herring-barrel-42" -public 1 \ -savedir /home/valheim/save -saveinterval 900 -backups 6 \ -backupshort 3600 -backuplong 21600 -crossplayარგუმენტების სახელები ზუსტად ისე დაწერე, როგორც ნაჩვენებია - -logFile მთავრული F-ით არის დოკუმენტირებული - ხოლო ჰარის შემცველ მნიშვნელობებს ბრძანების ხაზზე ბრჭყალები სჭირდება. ჰოსტინგის პანელზე, სადაც თითოეული არგუმენტი ცალკე ველია, ბრჭყალები გამოტოვე; პანელი მათ თავად ამატებს, ხოლო სიტყვასიტყვით ჩაწერილი ბრჭყალები სერვერის სახელში აღმოჩნდება. თუ ახალი ხარ იმაში, როგორ იღებს თამაშის სერვერები არგუმენტებს ზოგადად, თამაშის სერვერის გაშვების პარამეტრების ახსნა ბრჭყალებს, თანმიმდევრობასა და გარემოს ცვლადებს სხვადასხვა ძრავაზე განიხილავს.
იდენტობა: -name, -world და -password#
`-name` ის არის, რასაც საზოგადოების სია აჩვენებს. ის შეიძლება შეიცავდეს ჰარებს და პუნქტუაციის უმეტესობას. სამყაროზე გავლენა არ აქვს, ამიტომ სერვერის გადარქმევა ნებისმიერ დროს შეგიძლია. სია ცუდად ალაგებს და ცუდად ეძებს, ამიტომ სახელში გამორჩეული სიტყვა მოთამაშეებს მის პოვნაში ეხმარება.
`-world` ფაილის სახელია და არა საჩვენებელი სახელი. -world Midgard ტვირთავს Midgard.db-სა და Midgard.fwl-ს შენახვის საქაღალდის worlds_local-იდან, და თუ ისინი არ არსებობს, ქმნის ახალ სამყაროს ამ სახელითა და შემთხვევითი seed-ით - მოთამაშეებისთვის ჩუმად. ამიტომ სწორედ ეს არგუმენტი დგას „სერვერმა ჩვენი სამყარო განულა“ ტიპის ჩივილების უმეტესობის უკან: შეცდომით აკრეფა, შეცვლილი მთავრული ასო რეგისტრზე მგრძნობიარე Linux ფაილურ სისტემაზე, ან გადატანილი შენახვის საქაღალდე. ძველი ფაილები ისევ იქაა. გაასწორე სახელი და გადატვირთე.
თუ კონკრეტული seed გინდა, seed-ის არგუმენტი არ არსებობს. შექმენი სამყარო თამაშის კლიენტში სასურველი seed-ით, შემდეგ კი ატვირთე ორი ფაილი - ნაბიჯები ლოკალური სამყაროს ატვირთვაშია.
`-password`-ს ორი წესი აქვს, და სერვერი ორივეს გაშვებაზე უარის თქმით აიძულებს:
- სულ მცირე ხუთი სიმბოლო.
- ის არ უნდა გვხვდებოდეს სერვერის ან სამყაროს სახელში.
-name "Bjorn Hall" -password "bjornhall"ვერ გაეშვება; ასევე ვერც პაროლი, რომელიც სამყაროს სახელს შეიცავს.
ეშვება თუ არა საჯარო სერვერი საერთოდ პაროლის გარეშე, build-ების მიხედვით იცვლებოდა; პაროლი სავალდებულოდ ჩათვალე. მოთამაშეები მას შესვლისას ერთხელ კრეფენ, და თამაში მას ამ სერვერისთვის იმახსოვრებს.
ქსელი: -port, -public და -crossplay#
`-port` სათამაშო პორტს აყენებს, UDP, ნაგულისხმევად 2456. სერვერი Steam-ის query-ებისთვის ზედა პორტსაც იყენებს, ასე რომ -port 2456 იკავებს 2456-სა და 2457-ს, ხოლო ნიმუშ სკრიპტები 2456-2458-ის გადამისამართებას გირჩევს. ერთ მისამართზე ორი სერვერის გაშვება მათ დაშორებას ნიშნავს: 2456 და 2466 ჩვეული არჩევანია, თუმცა ტექნიკურად 2459-იც იმუშავებდა. IP-ით შემომსვლელი მოთამაშეები სათამაშო პორტს იყენებენ. დეტალები, სახლის პორტების გადამისამართების ჩათვლით, Valheim-ის პორტების 2456-2458 ახსნაშია.
`-public` იღებს 1-ს ან 0-ს. 1-ით სერვერი საზოგადოების სიაში რეგისტრირდება; 0-ით იქ არ ჩანს, მაგრამ ნებისმიერს, ვისაც მისამართი და პაროლი აქვს, მაინც შეუძლია IP-ით შესვლა. 0 უსაფრთხოების პარამეტრი არ არის - ის სერვერს მხოლოდ დათვალიერებისგან მალავს. ნამდვილი დაშვების სიისთვის გამოიყენე permittedlist.txt, რომელიც Valheim-ის სიის ფაილების სახელმძღვანელოშია აღწერილი. საჯარო სერვერს სიაში გამოსაჩენად შეიძლება რამდენიმე წუთი დასჭირდეს; სერვერი სიაში არ ჩანს დაყოვნებასა და ფილტრებს განიხილავს.
`-crossplay` დროშაა მნიშვნელობის გარეშე. ის სერვერს PlayFab-ის ქსელურ backend-ზე გადართავს, რომელსაც Xbox-ის, Game Pass-ისა და Microsoft Store-ის მოთამაშეები იყენებენ, და ყოველ გაშვებაზე ლოგში ექვსციფრიან შესვლის კოდს ბეჭდავს. მის გარეშე სერვერი მხოლოდ Steam-ისთვისაა. ის ცვლის, როგორ ხდება მოთამაშეების იდენტიფიკაცია - სიის ფაილებს მაშინ პლატფორმის პრეფიქსიანი ID-ები სჭირდება, მაგალითად Steam_76561198012345678 - და Linux-ზე libatomic1-ის დაყენებას საჭიროებს. როდის გამოიყენო და როდის დატოვო გამორთული, ამას Valheim-ის crossplay და Xbox-ის მოთამაშეები ეძღვნება.
ფაილები: -savedir, -logFile და -instanceid#
`-savedir` გადააქვს ყველაფერი, რასაც სერვერი წერს: worlds_local საქაღალდე (და worlds, ძველ build-ებზე) და სამი სიის ფაილი adminlist.txt, bannedlist.txt და permittedlist.txt. მის გარეშე სერვერი გამშვები მომხმარებლის პროფილს იყენებს:
| პლატფორმა | შენახვის ნაგულისხმევი საქაღალდე |
|---|---|
| Linux | ~/.config/unity3d/IronGate/Valheim |
| Windows | %USERPROFILE%\AppData\LocalLow\IronGate\Valheim |
ცხადად დააყენე ის ყოველთვის, როცა სერვერი სერვისად ან ისეთი ანგარიშით მუშაობს, რომლითაც არ შედიხარ. სხვა შემთხვევაში სამყარო პროფილის ისეთ საქაღალდეში ხვდება, სადაც არავინ იყურება - Windows-ზე LocalSystem-ით მომუშავე სერვისი C:\Windows\System32\config\systemprofile-ის ქვეშ ინახავს. -savedir /srv/valheim-ით სამყაროები /srv/valheim/worlds_local-ში მიდის, სიის ფაილები კი /srv/valheim-ში. საქაღალდე სერვერის მომხმარებლისთვის ჩაწერადი უნდა იყოს. სად ინახავს Valheim თავის ფაილებს ყველა გზას აღწერს.
`-logFile` Unity-ის არგუმენტია და არა Valheim-ის, Unity-ის დოკუმენტაციაში მთავრული F-ით დაწერილი. მის გარეშე ლოგი სტანდარტულ გამონატანზე მიდის, რაც სწორედ ის არის, რაც გინდა systemd-ის (journal ინახავს), Docker-ის (docker logs) ან ჰოსტინგის პანელის კონსოლის ქვეშ. მიეცი მას გზა, როცა სტანდარტულ გამონატანს არაფერი იჭერს - NSSM სერვისი AppStdout-ის გარეშე ან დაგეგმილი ამოცანა:
-logFile /home/valheim/logs/valheim.logფაილი ყოველ გაშვებაზე გადაიწერება და არ ემატება, ასე რომ, თუ ისტორია გინდა, შენს გაშვების სკრიპტში მისი როტაცია ან გადარქმევა გააკეთე.
`-instanceid` მოკლე იდენტიფიკატორს იღებს და ერთ მანქანაზე რამდენიმე სერვერის ინსტანსის გასარჩევადაა განკუთვნილი. კონფიგურაციების უმეტესობას ის არასოდეს სჭირდება: ორი სერვერი სამყაროს სხვადასხვა სახელით, სხვადასხვა პორტითა და საკუთარი შენახვის საქაღალდეებით ერთმანეთს არ ეჯახება. მას მხოლოდ მაშინ მიმართე, თუ ინსტანსებს შორის ერთ შენახვის საქაღალდეს შეგნებულად აზიარებ.
შენახვა: -saveinterval#
სამყარო მეხსიერებაში ცხოვრობს და დისკზე ყოველ -saveinterval წამში იწერება, ნაგულისხმევად 1800 (ოცდაათი წუთი). ყველაფერი, რაც პროცესს სუფთა გათიშვის გარეშე ასრულებს - მოკვლა, მეხსიერების ამოწურვით გაჩერება, დენის გათიშვა - ბოლო შენახვის შემდეგ ყველაფერს კარგავს. სუფთა გაჩერება (Ctrl+C, SIGINT, პანელის Stop ღილაკი) ჯერ ინახავს.
-saveinterval | უარეს შემთხვევაში დანაკარგი ავარიისას | ფასი |
|---|---|---|
1800 (ნაგულისხმევი) | 30 წუთი | იშვიათი შეფერხებები |
900 | 15 წუთი | შეფერხება ყოველ 15 წუთში დიდ სამყაროებზე |
600 | 10 წუთი | ჩვეული კომპრომისი |
300 | 5 წუთი | შესამჩნევია დიდ, ბევრად აშენებულ სამყაროებზე |
შენახვა უფასო არ არის: მომწიფებულ სამყაროზე სერვერი მოკლედ ჩერდება, სანამ სამყაროს სერიალიზაციას აკეთებს, და მოთამაშეები შეფერხებას გრძნობენ. რაც უფრო დიდია სამყარო, მით უფრო გრძელია პაუზა, ამიტომ ძალიან მოკლე ინტერვალები დიდ სამყაროზე ავარიის დანაკარგებს რეგულარულ შეფერხებებზე ცვლის. 600 ჯგუფების უმეტესობისთვის კარგი ნაგულისხმევია. save ადმინის ბრძანება შენახვას დაუყოვნებლივ აიძულებს, და მისი აკრეფა ღირს ყველაფერ სარისკომდე. რატომ ღირს შენახვა იმდენი, რამდენიც ღირს, თამაშის სერვერის ავტომატური შენახვის ინტერვალებშია.
Backup-ები: -backups, -backupshort და -backuplong#
ჩაშენებული backup-ის როტაცია სამყაროს ფაილების წყვილს ტაიმერით აკოპირებს და ასლების ფიქსირებულ რაოდენობას მის გვერდით ინახავს worlds_local-ში:
- `-backups` - რამდენი ავტომატური backup შეინახოს, ნაგულისხმევად
4. ახლის შექმნისას უძველესი იშლება.0მათ თიშავს. - `-backupshort` - წამები სერვერის გაშვებიდან პირველ backup-მდე, ნაგულისხმევად
7200(ორი საათი). - `-backuplong` - წამები ამის შემდგომ backup-ებს შორის, ნაგულისხმევად
43200(თორმეტი საათი).
ნაგულისხმევებით სერვერი, რომელიც ყოველ ღამე რესტარტდება, ყოველი გაშვებიდან ორი საათის შემდეგ ერთ backup-ს აკეთებს და მეორემდე იშვიათად აღწევს. სწორედ ეს არის ხაფანგი: ყოველდღიური რესტარტის მქონე სერვერზე -backuplong თითქმის არასოდეს ამოქმედდება, და ოთხი backup ბოლო ოთხ დღეს ფარავს, დღეში ერთით. თუ დღეში რამდენიმე გინდა, ორივე შეამცირე:
-backups 8 -backupshort 3600 -backuplong 10800ეს რვა ასლს ინახავს, პირველს გაშვებიდან ერთი საათის შემდეგ, შემდეგ კი ყოველ სამ საათში. backup ფაილებს სამყაროს სახელი და დროის ნიშნული ერქმევა, ასე რომ ისინი ცოცხალ ფაილებს არასოდეს გადააწერენ.
ეს ასლები იმავე დისკზე დევს, რომელზეც სამყარო, და მხოლოდ ერთი რამისგან იცავს: შენახვისგან, რომელიც ცუდად წავიდა. მკვდარი დისკისთვის, წაშლილი საქაღალდისთვის ან გამქრალი ჰოსტისთვის ისინი არაფერს აკეთებენ. ნამდვილი backup-ები სხვაგან მიდის, განრიგით, და დროდადრო აღდგება, რომ დამტკიცდეს, რომ მუშაობს - Valheim-ის სერვერის backup-ები და სამყაროს დაზიანება ორივე ნახევარს განიხილავს.
სამყაროს წესები: -preset, -modifier და -setkey#
სამყაროს მოდიფიკატორები Hildir's Request-ის განახლებამ დაამატა. ისინი გაშვებისას გამოიყენება და სამყაროსთან ერთად ინახება, ასე რომ მათი შეცვლა სხვა არგუმენტებით რესტარტია; ნაგებობებსა და პროგრესზე გავლენა არ აქვს.
-preset casual-modifier combat hard -modifier raids less -modifier portals casual-setkey nobuildcost -setkey playereventsსამი არგუმენტი ერთად მუშაობს:
- `-preset` პაკეტს ირჩევს:
normal,casual,easy,hard,hardcore,immersiveანhammer. - `-modifier <name> <value>` ერთ სლაიდერს აყენებს და თითოეულისთვის მეორდება. სახელებია
combat,deathpenalty,resources,raidsდაportals. ცალკეული მოდიფიკატორები პრესეტს გადაფარავს. - `-setkey <key>` სამყაროს გადამრთველს რთავს, ასევე განმეორებადია:
nobuildcost,playerevents,passivemobs,nomap.
ორი ხაფანგი. მნიშვნელობები პატარა ასოებით დაწერილი სიტყვებია და არა რიცხვები, ხოლო შეცდომით დაწერილი მნიშვნელობა სერვერს არ აჩერებს, ასე რომ შეამოწმე, მართლა მოხდა თუ არა სასურველი ეფექტი. და მოდიფიკატორებისა და გასაღებების სია განახლებებთან ერთად გაიზარდა; მიმდინარე ვერსიის თამაშში სამყაროს მოდიფიკატორების ეკრანი არის ცნობარი ყველაფრისთვის, რაც აქ არ არის ჩამოთვლილი. რას აკეთებს თითოეული მნიშვნელობა თამაშში, Valheim-ის სამყაროს მოდიფიკატორებსა და პრესეტებშია განხილული, ხოლო მონათესავე გლობალური გასაღებები - გლობალურ გასაღებებსა და setkey-ში.
RE:NODE-ზე ეს არგუმენტები Startup ჩანართის ველებია, ასე რომ შენახვის ინტერვალის, backup-ების რაოდენობის ან მოდიფიკატორის შეცვლა რედაქტირება და რესტარტია; crossplay უკვე ჩართულია, ორივე UDP პორტი კი გეგმასთან ერთად გამოიყოფა.
სამი სრული ხაზი გავრცელებული კონფიგურაციებისთვის#
ცნობარის ცხრილებით სარგებლობა უფრო ადვილია, როცა მათ გვერდით მზა მაგალითი დგას. ეს სამი ჯგუფების უმეტესობას ფარავს.
პატარა პრივატული Steam ჯგუფი, რომელსაც სიაში უცხოები არასოდეს უნდა, და ხშირად ინახავს, რადგან ერთი მოთამაშის კომპიუტერი სესიას დროდადრო აფუჭებს:
./valheim_server.x86_64 -nographics -batchmode -name "Ashwood" -port 2456 \ -world "Ashwood" -password "salted-cod-77" -public 0 -saveinterval 600აქ -public 0 სერვერს საზოგადოების სიის გარეთ ტოვებს, ხოლო მოთამაშეები IP-ით შემოდიან. სამყაროსა და სერვერს ერთი სახელი აქვს, რაც ნორმალურია; მხოლოდ პაროლი უნდა დარჩეს ორივეს გარეთ.
შერეული PC და Xbox ჯგუფი ჰოსტინგის მანქანაზე, უფრო მშვიდი ბრძოლის პარამეტრით და ხშირი backup-ებით:
./valheim_server.x86_64 -nographics -batchmode -name "Raven Fjord" -port 2456 \ -world "RavenFjord" -password "longboat-oar-19" -public 1 -crossplay \ -modifier combat easy -backups 8 -backupshort 3600 -backuplong 10800Xbox-ის მოთამაშეები ლოგიდან აღებული კოდით შემოდიან, რომელიც ყოველ რესტარტზე იცვლება, ამიტომ ყოველი რესტარტის შემდეგ ახალი კოდი იქ გამოაქვეყნე, სადაც შენი ჯგუფი საუბრობს.
მეორე სერვერი იმავე მანქანაზე, რომელზეც პირველი, საკუთარი შენახვის საქაღალდით, რომ არაფერი იყოს გაზიარებული:
./valheim_server.x86_64 -nographics -batchmode -name "Raven Fjord Test" -port 2466 \ -world "TestWorld" -password "spare-anvil-03" -public 0 \ -savedir /home/valheim/save-testპორტი პირველზე ათით მაღალია, შენახვის საქაღალდე ცალკეა, ხოლო სერვერი სიაში არ ჩანს, რადგან სატესტო სამყაროს საზოგადოების სიაში არაფერი ესაქმება. firewall-ში UDP 2466-2468-იც გახსენი.
შეცდომები, რომლებიც სერვერს აჩერებს ან სამყაროს აკარგვინებს#
არგუმენტების შეცდომების მოკლე სია და როგორ გამოიყურება ისინი:
| შეცდომა | სიმპტომი |
|---|---|
| პაროლი 5 სიმბოლოზე ნაკლებია ან სახელშია | სერვერი გაშვებიდან წამებში ითიშება |
-world-ში შეცდომით აკრეფა ან არასწორი მთავრული ასოები | იტვირთება ახალი, ცარიელი სამყარო |
-savedir ჩაწერადი არ არის | შენახვის შეცდომები ლოგში, არაფერი ინახება |
ორი სერვერი 2456-სა და 2457-ზე | მეორე სერვერი ვერ უკავშირდება პორტს, ან არცერთი არ ჩანს სიაში |
| პანელის ველში აკრეფილი ბრჭყალები | სახელი ბრჭყალებით ჩანს |
-crossplay აკლია | Xbox-ის მოთამაშეები სერვერს ვერ პოულობენ |
როცა სერვერი არ ეშვება და არგუმენტები სწორი ჩანს, ლოგში პირველი შეცდომა წაიკითხე და არა ბოლო; Valheim-ის სერვერი გაშვებისას ვარდება მათ თანმიმდევრობით გადის.
FAQ#
არის კონფიგურაციის ფაილი გაშვების არგუმენტების ნაცვლად?
არა. vanilla Valheim თავისი არგუმენტებისა და სამი სიის ფაილის გარდა არაფერს კითხულობს. BepInEx-ის ქვეშ მომუშავე მოდებს საკუთარი კონფიგურაციის ფაილები აქვთ BepInEx/config-ში, მაგრამ თავად სერვერს არა.
შემიძლია არგუმენტები სამყაროს დაკარგვის გარეშე შევცვალო?
კი. სუფთად გააჩერე სერვერი, შეცვალე არგუმენტები და გაუშვი. სამყაროზე მხოლოდ -world და -savedir მოქმედებს, რომლებიც წყვეტენ, რომელი ფაილები ჩაიტვირთება; დანარჩენი ყველაფრის შეცვლა უსაფრთხოა.
რა არის მოთამაშეების მაქსიმალური რაოდენობის არგუმენტი?
ასეთი არ არსებობს. ათმოთამაშიანი ზღვარი თამაშშია ჩაშენებული და მას მხოლოდ მოდები ცვლის. მოთამაშეების ლიმიტი და დიდი ჯგუფები განიხილავს, რა ჯდება მისი გაზრდა.
აქვს მნიშვნელობა არგუმენტების თანმიმდევრობას?
არა. Valheim მათ სახელით კითხულობს. ტრადიციულად -nographics -batchmode პირველად დასვი, და თითოეული მნიშვნელობა პირდაპირ თავისი არგუმენტის შემდეგ შეინარჩუნე.
როგორ დავაყენო სამყაროს seed?
სერვერიდან ვერ დააყენებ. შექმენი სამყარო თამაშში სასურველი seed-ით, შემდეგ ატვირთე .db და .fwl ფაილები worlds_local-ში და -world მათ სახელზე დააყენე.
რატომ უშვებს -public 0 მაინც უცხოებს?
რადგან ის სერვერს მხოლოდ სიიდან აშორებს. ნებისმიერს, ვისაც მისამართი და პაროლი აქვს, მაინც შეუძლია შესვლა. იმის შესაზღუდად, ვის შეუძლია შეერთება, permittedlist.txt გამოიყენე.


