RE:NODE

რამდენიმე Valheim სამყარო ერთ მანქანაზე ან სერვერზე

ავტორი RE:NODE-ის გუნდი
11 წუთის საკითხავი


Valheim სერვერის პროცესი ზუსტად ერთ სამყაროს ტვირთავს, ამიტომ „რამდენიმე სამყარო ერთ მანქანაზე“ ორიდან ერთს ნიშნავს. ან რამდენიმე სამყაროს იმავე save საქაღალდეში ინახავ და მათ შორის -world-ის შეცვლითა და restart-ით გადართავ - იაფია, მარტივია, ერთდროულად ერთი სამყარო ცოცხალია - ან რამდენიმე სერვერის პროცესს გვერდიგვერდ უშვებ, თითოეულს თავისი -world-ით, თავისი -port-ით, მინიმუმ ორით დაშორებული, და სასურველია თავისი -savedir-ით, ასე მათ მანქანის გარდა არაფერი აქვთ საერთო. პირველი ჯგუფს ერგება, რომელიც მთავარ და შემოქმედებით ან სატესტო სამყაროს ცვლის. მეორე ჯგუფს, რომელიც ერთდროულად ნამდვილად ორ სამყაროს თამაშობს, და დაახლოებით ორჯერ მეტი მეხსიერება ჯდება. დანარჩენი ყველაფერი - სიის ფაილები, backup-ები, crossplay კოდები, მოდები - იმაზეა დამოკიდებული, რომელს აირჩევ.

თავად სერვერის საფუძვლები Valheim dedicated სერვერის გზამკვლევშია; ეს პოსტი მხოლოდ რამდენიმე სამყაროს ეხება.

ორი მოდელი: გადართვა ან პარალელური გაშვება#

სამყაროების გადართვა ერთ სერვერზერამდენიმე სერვერი პარალელურად
ერთდროულად ცოცხალი სამყაროებიერთიერთი თითო პროცესზე
საჭირო პორტებიერთი წყვილიერთი წყვილი თითო სერვერზე
მეხსიერებაერთი სამყაროს ოდენობათითოეული პროცესი საკუთარს ამატებს
სიის ფაილებიგაზიარებული, თუ -savedir-იც არ შეცვალეცალკე, თუ თითოეულს საკუთარი -savedir აქვს
Join code (crossplay)ერთი, ყოველ restart-ზე იცვლებაერთი თითო სერვერზე
ძალისხმევაერთი არგუმენტის შეცვლა, restartმეორე ინსტალაცია ან მეორე სერვისი

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

მეხსიერების სვეტს ადამიანები ყველაზე ხშირად აფასებენ ნაკლებად. თითოეული Valheim სერვერის პროცესი თავისი საჭირო ყველაფრის საკუთარ ასლს ინახავს; ორი პროცესი მეხსიერებას არ იზიარებს. შუა ზომის ჯგუფის მომწიფებულ სამყაროს 3-4 GB უნდა, ახალ სატესტო სამყაროს - ნაკლები, ამიტომ ორ სერვერს გვერდიგვერდ ჯამი სჭირდება. ზოგადი ზომები რამდენი RAM სჭირდება Valheim სერვერს-შია.

როგორ ინახება სამყაროები და რატომ ხდის ეს გადართვას მარტივს#

ყველა სამყარო, რომლის ჩატვირთვაც სერვერს შეუძლია, მისი save დირექტორიის worlds_local საქაღალდეშია. Linux-ზე ნაგულისხმევია ~/.config/unity3d/IronGate/Valheim/, Windows-ზე %USERPROFILE%\AppData\LocalLow\IronGate\Valheim\, და -savedir მთელ ხეს სხვაგან გადააქვს. სრული განლაგება savedir-ისა და ფაილების მდებარეობის გზამკვლევშია.

-world არგუმენტი ჩასატვირთ სამყაროს ასახელებს, და სახელი ფაილის სახელია. რამდენიმე სამყარო ერთმანეთში ჩარევის გარეშე შეიძლება ერთ საქაღალდეში იყოს:

code
worlds_local/  Midgard.db        Midgard.fwl         <- the main world  Workshop.db       Workshop.fwl        <- a creative world  Season1.db        Season1.fwl         <- an archived world

ეს განლაგებაა Valheim 1.0-მდე build-ებზე. 1.0-დან, რომელიც 2026 წლის სექტემბერში გამოვიდა, სამყარო .db და .fwl წყვილის ნაცვლად worlds_local-ში მისი სახელის მქონე საქაღალდედ ინახება, და ძველი სამყარო გარდაიქმნება, როცა 1.0 სერვერი მას პირველად ტვირთავს. პრინციპი იგივეა - ერთი სახელი, ერთი სამყარო, ბევრი სამყარო გვერდიგვერდ - მაგრამ სამყაროს კოპირებისას, დაარქივებისას ან გადატანისას აიღე მთელი საქაღალდე და არა ცალკეული ფაილები მის შიგნიდან. სანამ მეორე განლაგებისთვის დაწერილ რომელიმე გზამკვლევს მიჰყვები, ნახე, რა გიდევს შენს worlds_local-ში.

თუ -world არარსებულ რამეს ასახელებს, სერვერი ამ სახელით და შემთხვევითი seed-ით ახალ სამყაროს ქმნის. ასე ქმნი განზრახ მეორე სამყაროს, და ასევე ასე გიქმნის ბეჭდვის შეცდომა უხმოდ ცარიელ სამყაროს.

სამყაროების გადართვა ერთ სერვერზე#

უმარტივესი მოწყობა: ერთი სერვერი, ერთი პორტის წყვილი, რამდენიმე სამყარო, ერთი ცოცხალი.

  1. სერვერი სუფთად გააჩერე, რომ მიმდინარე სამყარო შეინახოს. დაელოდე ლოგში შენახვის ხაზს.
  2. შეცვალე სამყაროს სახელი - შენს მანქანაზე გამშვებ სკრიპტში -world-ს, პანელის hosting-ზე კი Startup ჩანართზე სამყაროს ველს.
  3. გაუშვი სერვერი და ლოგში შეამოწმე, რომ სამყარო ახალი სახელით იტვირთება და არ გენერირდება.
start_server.sh (excerpt)
# Main world./valheim_server.x86_64 -nographics -batchmode -name "Longship Crew" \    -port 2456 -world "Midgard" -password "herring-barrel-42" -crossplay# Switch to the creative world: change only -world and restart#   -world "Workshop"

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

რას იზიარებენ სამყაროები ამ მოდელში: save დირექტორიას და, შესაბამისად, adminlist.txt-ს, bannedlist.txt-სა და permittedlist.txt-ს. ban ყველა სამყაროზე მოქმედებს. ერთი ჯგუფისთვის ეს ჩვეულებრივ სწორია; არასწორია, თუ მეორე სამყარო სხვა ადამიანებისთვისაა.

სხვა გაზიარებული რამ მოდებია. ერთი სერვერის ინსტალაცია ერთ BepInEx საქაღალდეს ნიშნავს, ამიტომ ყველა სამყარო ერთსა და იმავე მოდების ნაკრებს უშვებს. მოდი, რომელიც კონტენტს ამატებს, თავის მონაცემებს სამყაროში ინახავს, და მოდის გარეშე გახსნილმა სამყარომ ეს კონტენტი შეიძლება დაკარგოს; მოდიფიცირებული სამყარო არამოდიფიცირებულ ხაზზე ან პირიქით backup-ის გარეშე არ გადართო.

რამდენიმე სერვერის გვერდიგვერდ გაშვება#

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

Two servers from one install
# Server one - the main world./valheim_server.x86_64 -nographics -batchmode -name "Longship Crew" \    -port 2456 -world "Midgard" -password "herring-barrel-42" \    -savedir /home/valheim/saves/main -crossplay# Server two - a separate world for a second group./valheim_server.x86_64 -nographics -batchmode -name "Raven Fjord" \    -port 2466 -world "Fjord" -password "salt-cod-and-tar" \    -savedir /home/valheim/saves/fjord -crossplay

წესები, რომლებიც ამას მუშაობს:

  • პორტები მინიმუმ ორით დაშორებული. თითოეული სერვერი თავის თამაშის პორტს და მის ზემოთ მდგომს იკავებს. 2456 და 2457 როგორც ორი თამაშის პორტი ეჯახება, რადგან მეორე სერვერის თამაშის პორტი პირველის query პორტია. ათით დაშორება (2456, 2466, 2476) ჩვევაა, რომელიც firewall-ის წესებს გასაგებად ინახავს. Valheim-ის პორტები 2456-2458 განმარტება დეტალებს მოიცავს.
  • თითოეულს საკუთარი save დირექტორია. ცალკე -savedir გზებით სამყაროები, backup-ები და სიის ფაილები სრულად განცალკევებულია. ორ სერვერს, რომლებიც ერთ save დირექტორიას იზიარებენ, შეიძლება იმუშაოს, თუ სამყაროს სახელები განსხვავდება, მაგრამ ისინი admin და ban სიებს იზიარებენ, და მათი ავტომატური backup-ები ერთ საქაღალდეშია.
  • განსხვავებული სახელები ბრაუზერში. ორი საჯარო სერვერი ერთნაირი -name-ით უკეთეს შემთხვევაში დამაბნეველია. გახადე ისინი აშკარად განსხვავებული.
  • არასოდეს ერთი და იგივე სამყარო ორჯერ. ორი პროცესი, რომელიც ერთი და იმავე საქაღალდიდან ერთსა და იმავე სამყაროს ტვირთავს, ორივე მასში ჩაწერს და ბოლო შემნახველი იმარჯვებს. ეს სამყაროს დაზიანების ან დაკარგვის საიმედო გზაა.

-instanceid არგუმენტი ერთ მანქანაზე ინსტანციების გასარჩევად არსებობს. უმეტეს მოწყობას ის არასოდეს სჭირდება: განსხვავებული სამყაროს სახელები, განსხვავებული პორტები და საკუთარი save საქაღალდეები ორ სერვერს უკვე განარჩევს. მისი ადგილი სრულ სიაში გაშვების არგუმენტების ცნობარშია.

ორივეს სერვისებად გაშვება უფრო სუფთაა, ვიდრე ორი ტერმინალის ფანჯარა. თითო სერვერზე systemd unit, თითოეული თავისი ExecStart ხაზით, თითოეულს საკუთარ ლოგებს, restart-ებსა და stop სიგნალს აძლევს. თითოეული unit-ის მნიშვნელოვანი ნაწილია, რომ ის სერვერს SIGINT-ით აჩერებს, რაც Valheim-ს გასვლამდე შენახვას აიძულებს.

/etc/systemd/system/valheim-fjord.service (excerpt)
[Service]User=valheimWorkingDirectory=/home/valheim/serverExecStart=/home/valheim/server/start_fjord.shKillSignal=SIGINTTimeoutStopSec=120Restart=on-failure

Firewall: გახსენი თითოეული UDP წყვილი. ufw-ით ეს არის ufw allow 2456:2457/udp და ufw allow 2466:2467/udp.

Crossplay ერთზე მეტ სერვერთან#

Crossplay თითო სერვერზე მუშაობს. თითოეული პროცესი, რომელიც -crossplay-ით გაიშვა, საკუთარ სესიას არეგისტრირებს და საკუთარ ექვსციფრიან join code-ს იღებს, რომელიც გაშვებისას საკუთარ ლოგში იბეჭდება:

code
Session "Raven Fjord" with join code 715204 and IP 203.0.113.10:2466 is active with 0 player(s)

სამი რამ, რაც ერთზე მეტის შემთხვევაში უნდა იცოდე:

  • თითოეული კოდი ერთ სერვერს ეკუთვნის. Xbox-ისა და Microsoft Store ვერსიის მოთამაშეები კოდით უერთდებიან, ამიტომ მეორე სერვერზე მოთამაშე ჯგუფს ამ სერვერის კოდი სჭირდება და არა პირველისა. სადაც აქვეყნებ, მკაფიოდ მონიშნე.
  • კოდები ყოველ restart-ზე იცვლება. ორი სერვერი, რომლებიც სხვადასხვა დროს ირთვება, ნიშნავს ორ კოდს, რომელიც სხვადასხვა დროს იცვლება. ორივე restart-ის ერთსა და იმავე საათზე დაგეგმვა განცხადებას ერთ შეტყობინებამდე ამცირებს.
  • Steam მოთამაშეებს მაინც შეუძლიათ IP-ით შეერთება. crossplay სერვერზე 203.0.113.10:2466 Steam მოთამაშეებისთვის კვლავ მუშაობს და სწორი სერვერის არჩევის ყველაზე საიმედო გზაა.

Crossplay სიის ფაილებში ID-ებსაც პლატფორმის პრეფიქსიანად ცვლის, როგორიცაა Steam_76561198012345678 და Xbox_.... თუ ერთი სერვერი crossplay-ით მუშაობს და მეორე - არა, მათ admin სიებს სხვადასხვა ფორმატი სჭირდება - კიდევ ერთი მიზეზი, რომ თითოეულს საკუთარი save დირექტორია მისცე. Crossplay და Xbox მოთამაშეები ID-ის ფორმატებსა და relay-ს განმარტავს.

პერსონაჟები სამყაროებს შორის გადადიან, ნივთებიც#

რამდენიმე სამყაროს ერთი შედეგი, რომელსაც ჯგუფები გვიან აღმოაჩენენ: პერსონაჟები თითოეული მოთამაშის მანქანაზე ინახება და არა სერვერზე, და ყველა სამყაროში მუშაობს. რასაც პერსონაჟი ერთ სამყაროში ატარებს, მეორეშიც თან მიჰყვება.

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

გავრცელებული პასუხები:

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

რა არ ზიარდება სამყაროებს შორის, არის რუკა: გამოკვლევა თითო პერსონაჟზე და თითო სამყაროზე ინახება, ამიტომ თითოეულ სამყაროს თითოეული მოთამაშისთვის საკუთარი რუკა აქვს.

Backup-ები, განახლებები და მოდები რამდენიმე სამყაროსთან#

Backup-ები. Valheim-ის ავტომატური backup-ები მხოლოდ ჩატვირთულ სამყაროს ფარავს. გადართული სამყარო არ იბეჭდება backup-ში, და მასში არაფერი შეცვლილა, ამიტომ ეს კარგია - მაგრამ გრძელი შესვენების შემდეგ სამყაროს ჩართვამდე ასლი გადაიღე, განსაკუთრებით თამაშის განახლების გავლით. პარალელური სერვერებით თითოეული პროცესი საკუთარ სამყაროს საკუთარ save დირექტორიაში backup-ავს. მანქანის გარეთ backup-ები ყველა სამყაროს უნდა მოიცავდეს, რომელიც გიყვარს და არა მხოლოდ ცოცხალს; Valheim სერვერის backup-ები და სამყაროს დაზიანება აღდგენის პროცედურას შეიცავს.

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

მოდები. პარალელური სერვერები სხვადასხვა მოდების ნაკრებს მხოლოდ მაშინ უშვებენ, თუ ისინი ცალკე ინსტალაციებია, თითოეული საკუთარი BepInEx საქაღალდით. ერთი ინსტალაცია, ორჯერ გაშვებული, ორივესთვის ერთსა და იმავე plugin-ებს უშვებს. თუ ერთი სამყარო მოდიფიცირებულია და მეორე vanilla, თითოეულს საკუთარი ინსტალაციის დირექტორია მიეცი.

პანელის hosting-ზე ამის გაკეთება#

პანელზე, როგორიცაა Pterodactyl, სერვერი ერთი container-ია, რომელიც ერთ პროცესს უშვებს, ამიტომ ორი მოდელი ასე გამოიყურება:

  • გადართვა Startup ჩანართია: შეცვალე სამყაროს სახელი, restart. worlds_local-ში ყველა სამყარო სერვერის დისკზე რჩება, ფაილ მენეჯერში ჩანს, და იქ შეგიძლია ატვირთო ან ჩამოტვირთო.
  • პარალელური ნიშნავს მეორე სერვერს: საკუთარი container, საკუთარი მეხსიერების ლიმიტი, საკუთარი პორტების allocation-ები, საკუთარი კონსოლი და საკუთარი backup-ები.

RE:NODE-ზე ეს პირდაპირ ასახვას პოულობს. ყოველ Valheim პაკეტს ორი გამოყოფილი პორტი აქვს, რაც ერთი სერვერის თამაშისა და query წყვილია, და სამყაროს სახელი Startup ჩანართის ველია, ამიტომ გადართვა რედაქტირება და restart-ია. ორი ერთდროულად ცოცხალი სამყარო ორ სერვერს ნიშნავს, თითოეული საკუთარი სამყაროსთვის გაზომილი - პატარა სატესტო სამყარო 2 GB პაკეტში ეტევა, მთავარი სამყარო უფრო დიდზე ზის. სამყაროს გადართვამდე პანელიდან backup გააკეთე; backup-ები მანქანის გარეთ ინახება და ღილაკით აღდგება, მაგრამ აღდგენა სერვერის მთელ საქაღალდეს აბრუნებს, მასში ყველა სამყაროს ჩათვლით.

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

სერვერმა ახალი სამყარო დაიწყო იმის ნაცვლად, რომელზეც გადავრთე. ხაზზე მითითებული სახელი worlds_local-ში არსებულ სამყაროს არ ემთხვევა, რეგისტრის ჩათვლით. ახალი სამყარო ძველის გვერდით ზის; არაფერი გადაწერილა. შეასწორე სახელი და გადატვირთე.

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

ერთ სერვერზე ban მეორეზეც გავრცელდა. ისინი save დირექტორიას იზიარებენ და, შესაბამისად, bannedlist.txt-ს. მიეცი თითოეულს საკუთარი -savedir.

შემოქმედებითი სამყაროს უფასო მშენებლობა მთავარ სამყაროში გადავიდა. -setkey nobuildcost გამშვებ ხაზზე დარჩა, როცა გადართე. ამოიღე, გადატვირთე და თითოეული სამყაროსთვის ცალკე ხაზი შეინახე.

Xbox მოთამაშეები მეორე სერვერს ვერ პოულობენ. ისინი პირველი სერვერის join code-ს იყენებენ, ან ბოლო restart-მდე არსებულ ძველს. მიმდინარე კოდი მეორე სერვერის ლოგიდან წაიკითხე.

FAQ#

შეუძლია თუ არა ერთ Valheim სერვერის პროცესს ორი სამყაროს ერთდროულად გაშვება?

არა. პროცესი ერთ სამყაროს ტვირთავს. ორი ცოცხალი სამყარო ორ პროცესს ნიშნავს, თითოეულს საკუთარი პორტის წყვილით, და პანელის hosting-ზე ეს ორ სერვერს ნიშნავს.

განაგრძობენ თუ არა სამყაროები ცვლილებას, რომლებსაც არ ვუშვებ?

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

შეუძლია თუ არა ორ სერვერს ერთი და იგივე სამყაროს ფაილი გაიზიაროს?

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

სჭირდებათ თუ არა მოთამაშეებს სხვადასხვა პერსონაჟი სხვადასხვა სამყაროსთვის?

ტექნიკურად - არა: ნებისმიერი პერსონაჟი ნებისმიერ სამყაროში მუშაობს - მაგრამ ნივთები გადადის, ამიტომ ჯგუფები, რომლებიც შემოქმედებით ან ადვილ სამყაროს უშვებენ, ხშირად შეთანხმდებიან, რომ იქ ცალკე პერსონაჟები გამოიყენონ.

მეორე სერვერი უფრო იაფია, ვიდრე უფრო დიდი?

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