RE:NODE

ექსპლუატაცია11 წუთის საკითხავი

თამაშის სერვერის ვერსიის ფიქსაცია და უკან დაბრუნება

როგორ შეინარჩუნო თამაშის სერვერი ცნობილ build-ზე, გამოიყენო Steam-ის beta branch-ები, ჩამოტვირთო ძველი depot და დააბრუნო სერვერი და სამყარო ცუდი განახლების შემდეგ.

0 მკითხველი

თამაშის სერვერის ვერსიის ფიქსაცია ნიშნავს, რომ ის ახალ build-ზე არ გადავა, სანამ თავად არ გადაწყვეტ; უკან დაბრუნება ნიშნავს მის ძველ build-ზე დაბრუნებას მას შემდეგ, რაც განახლება ცუდად წავიდა. თამაშებისთვის, რომლებსაც თავად ჩამოტვირთავ - Minecraft, Factorio, FiveM, Terraria - ორივე მარტივია: შეინახე ძველი სერვერის ფაილი და დააბრუნე. Steam-ის თამაშებისთვის ეს უფრო რთულია, რადგან SteamCMD ყოველთვის branch-ის მიმდინარე build-ს აყენებს, ამიტომ უკან დაბრუნების ერთადერთი მხარდაჭერილი გზებია beta branch, რომელსაც დეველოპერი ძველი ვერსიებისთვის აქვეყნებს, ან depot-ის ხელით ჩამოტვირთვა, და ორივე უსარგებლოა, თუ მოთამაშეებს არ შეუძლიათ იგივე ძველი ვერსია თავის მხარეს გაუშვან. და ყველა თამაშში სამყაროც უნდა დაბრუნდეს: განახლება, რომელმაც save გარდაქმნა, ჩვეულებრივ ძველ build-ს მის წაკითხვას არ აძლევს. ამისთვის განახლების დღემდე მოემზადე, რადგან ღამე, როცა ყველაფერი გატყდება, ძალიან გვიანია იმის აღმოსაჩენად, რომ ძველი branch არ არსებობს.

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

რატომ უნდა დააფიქსირო ვერსია საერთოდ#

vanilla სერვერების უმეტესობამ არაფერი უნდა დააფიქსიროს. კლიენტები ახლდება, ამიტომ სერვერმა უნდა მიჰყვეს. ფიქსაციას აზრი აქვს, როცა:

  • mod-ები მზად არ არის. mod-ებიანი Valheim-ის, Rust-ის, 7 Days to Die-ის ან Minecraft-ის სერვერი დამოკიდებულია mod-ებზე, რომლებიც ერთი თამაშის ვერსიისთვისაა აწყობილი. სანამ ისინი განახლდება, ახალი ვერსია გატეხილ სერვერს ნიშნავს.
  • მიმდინარეობს ღონისძიება. ტურნირმა, სეზონის ფინალმა ან დიდი ხნით დაგეგმილმა raid-მა შუა გზაზე წესები არ უნდა შეიცვალოს.
  • განახლება გატეხილია. დეველოპერები ბაგებს გამოუშვებენ. ზოგჯერ სერვერების გამთიშავ patch-ზე სწორი რეაქციაა წინა build-ზე დარჩენა, სანამ გასწორება არ გამოვა.
  • საზოგადოებამ ვერსია აირჩია. modpack-ების სერვერები, Minecraft-ის სერვერები ძველ ვერსიაზე კონკრეტული mod-ის გამო, Factorio-ს ჯგუფები თამაშის შუაში.

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

კლიენტის შეზღუდვა, თამაში თამაშზე#

თამაშიშეუძლიათ მოთამაშეებს ძველი ვერსიის არჩევა?პრაქტიკული შედეგი
Minecraft Javaკი, ნებისმიერი ვერსია, launcher-შიდააფიქსირე თავისუფლად; მოთამაშეები შესაბამის ვერსიას ირჩევენ
Factorioკი, ძველი ვერსიები Steam-ის betas-ად არის შეთავაზებულიდააფიქსირე თავისუფლად; ჯგუფი ვერსიაზე თანხმდება
FiveMკლიენტები სერვერის build-ს მიჰყვება მხარდაჭერილ დიაპაზონშიდააფიქსირე სერვერის artifact-ები; შეამოწმე მხარდაჭერის ფანჯრები
Terrariaადვილად არა; Steam კლიენტს ანახლებსმხოლოდ მოკლე ფიქსაციები, სანამ tModLoader ან TShock დაეწევა
7 Days to Dieჩვეულებრივ; ძველი ვერსიები Steam-ის beta branch-ებად ინახებადააფიქსირე branch-ზე; მოთამაშეები იმავეს ირჩევენ
Valheimმხოლოდ საჯარო ტესტის ირგვლივ, ზოგადად ძველი build-ებისთვის არაპრაქტიკულად გრძელვადიანი ფიქსაცია არ არის
Rust, CS2, Palworldარაფიქსაცია არ არის; სერვერმა კლიენტს უნდა მიჰყვეს
Project Zomboidდიდი build-ები არჩევით beta branch-ებად მუშაობდადააფიქსირე იმ build-ზე, რომელიც ნაგულისხმევია ან არჩეულია

branch-ების ხელმისაწვდომობა დროთა განმავლობაში იცვლება და მას თითოეული დეველოპერი წყვეტს, ამიტომ მასზე დაყრდნობამდე შენი თამაშის სია შეამოწმე. Steam კლიენტში თამაშის Properties, შემდეგ Betas აჩვენებს, რომელი branch-ები არსებობს მოთამაშეებისთვის; გამოყოფილი სერვერის branch-ებს ჩამოთვლის SteamCMD-ის app_info_print, ან SteamDB აპის depot-ებისა და branch-ების ქვეშ.

Steam-ის beta branch-ები#

branch არის დასახელებული build, რომელიც დეველოპერმა ნაგულისხმევ public-თან ერთად გამოაქვეყნა. SteamCMD branch-ს -beta-თი აყენებს:

bash
# install or switch to a named branch$ ./steamcmd.sh +force_install_dir /srv/7dtd +login anonymous \    +app_update 294420 -beta latest_experimental validate +quit# branches protected by a password$ ./steamcmd.sh +force_install_dir /srv/game +login anonymous \    +app_update <appid> -beta <branch> -betapassword <password> +quit# back to the default$ ./steamcmd.sh +force_install_dir /srv/7dtd +login anonymous \    +app_update 294420 -beta public validate +quit

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

იმის სანახავად, რომელი branch-ები არსებობს სერვერის აპისთვის Steam-ის გახსნის გარეშე:

bash
$ ./steamcmd.sh +login anonymous +app_info_update 1 \    +app_info_print 294420 +quit | grep -A 40 '"branches"'

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

branch-ებზე ორი წესი ყველგან მოქმედებს. კლიენტი და სერვერი ერთსა და იმავე branch-ზე უნდა იყოს, შეუსაბამობის შეცდომა კი branch-ებს იშვიათად ახსენებს - ის ამბობს "version mismatch" ან "incompatible". და როცა branch დაყენებულია, ყოველი შემდგომი განახლება ამ branch-ზე რჩება, restart-ისას განახლების გადამრთველის ავტომატური განახლებების ჩათვლით, რაც ზუსტად ის არის, რაც მას ფიქსაციად აქცევს.

Pterodactyl-ზე დაფუძნებულ პანელზე Steam-ის ბევრი egg branch-ს (და ზოგჯერ branch-ის პაროლს) startup ცვლადად აჩვენებს, auto-update-ის გადამრთველთან ერთად. სახელები egg-ებს შორის განსხვავდება; შენი სერვერისთვის Startup ჩანართში ნახე.

ზუსტი build-ის ფიქსაცია download_depot-ით#

სადაც საჭირო ვერსიისთვის branch არ არსებობს, SteamCMD-ს აქვს დაბალი დონის ბრძანება, რომელიც depot-ის კონკრეტულ ისტორიულ manifest-ს იღებს:

code
download_depot <appid> <depotid> <manifestid>

depot არის ფაილების ნაკრები აპის შიგნით - ჩვეულებრივ თითო ოპერაციულ სისტემაზე, პლუს საერთო კონტენტი - ხოლო manifest ამ depot-ის ერთი გამოქვეყნებული მდგომარეობაა. id-ები SteamDB-ის აპის გვერდებიდან მოდის, სადაც ჩამოთვლილია ყველა depot და მისი manifest-ების ისტორია. ბრძანება ჩამოტვირთავს SteamCMD-ის საკუთარ საქაღალდეში, steamapps/content/app_<appid>/depot_<depotid>/-ის ქვეშ, და არა შენს სერვერში; შემდეგ ამ ფაილებს ინსტალაციაზე აკოპირებ.

ეს მუშაობს, პირობებით, რომლებიც მასზე დაყრდნობამდე უნდა იცოდე:

  • მას ჩვეულებრივ ნამდვილი Steam-ის ლოგინი სჭირდება, არა anonymous, ზოგი აპისთვის კი ანგარიში, რომელიც თამაშს ფლობს. მთავარის ნაცვლად სათადარიგო ანგარიში გამოიყენე.
  • ეს მხარდაჭერილი workflow არ არის. Valve მას ამ მიზნისთვის არ ადოკუმენტირებს და დროდადრო არასაიმედო ყოფილა.
  • შემდეგი ჩვეულებრივი განახლება მას აუქმებს. შემდგომი app_update, ან restart-ისას განახლების გადამრთველი, ინსტალაციას მოძველებულად თვლის და ჩაანაცვლებს. ჯერ ავტომატური განახლებები გამორთე.
  • კლიენტები მაინც უნდა ემთხვეოდეს. თუ მოთამაშეებსაც არ შეუძლიათ ძველი build-ის გაშვება, სერვერი მასზე მარტო იქნება.

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

Steam-ის გარეთ არსებული თამაშების ფიქსაცია#

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

Minecraft (Paper). სერვერი jar-ია. შეინახე მომუშავე ისეთი სახელით, რომელიც ამბობს, რა არის - paper-<version>-<build>.jar - და გაშვება მასზე მიმართე. Paper-ის ახალი build იმავე Minecraft-ის ვერსიის ფარგლებში ჩვეულებრივ გასწორებაა; Minecraft-ის ახალი ვერსია სამყაროს პირველი ჩატვირთვისას გარდაქმნის და შეგნებული განახლებაა, განხილული სტატიაში Minecraft-ის ვერსიის განახლებები. plugin-ები იმავენაირად ფიქსირდება: შეინახე მომუშავე jar და წინა ვერსიების საქაღალდე.

Factorio. ძველი headless build-ები factorio.com-ის არქივიდან ჩამოტვირთვადი რჩება. შეინახე ვერსია, რომელსაც იყენებ, და გაითვალისწინე, რომ ახალ ვერსიაში გახსნილი save ძველში ვეღარ გაიხსნება.

FiveM. სერვერის build-ები - artifact-ები - დანომრილია და შენ ირჩევ, რომელი გაუშვა. თამაშის build, რომელსაც კლიენტები იყენებენ, ცალკე ფიქსირდება sv_enforceGameBuild-ით server.cfg-ში, რაც ყველას კონკრეტულ GTA V-ის build-ზე აიძულებს. ძველი artifact-ები საბოლოოდ მხარდაჭერიდან გადის, ამიტომ ფიქსაცია იქ დაყოვნებაა და არა მუდმივი მდგომარეობა; FiveM სერვერის განახლებები და artifact-ები რეკომენდებული build-ის ციკლს განიხილავს.

Terraria და tModLoader. გამოყოფილი სერვერი თითო ვერსიაზე ცალკე ჩამოსატვირთია; შეინახე zip. tModLoader Steam-ზე ძველ ვერსიებს branch-ებად სწორედ ამ მიზეზით გთავაზობს - mod-ების თავსებადობის გამო.

mod-ებსაც სჭირდება ფიქსაცია#

დაფიქსირებული თამაში დაუფიქსირებელი mod-ებით დაფიქსირებული არ არის. mod-ები საკუთარი განრიგით მოძრაობს:

  • Steam Workshop ყოველთვის ელემენტის უახლეს ვერსიას აწვდის. სერვერი, რომელიც Workshop-ის ელემენტებს ჩართვისას ჩამოტვირთავს, იღებს იმას, რაც ავტორმა წუხელ ატვირთა. დასაფიქსირებლად დააკოპირე mod-ი Workshop-ის cache-იდან თამაშის ლოკალურ mod-ების საქაღალდეში, სადაც თამაში ლოკალურ mod-ებს უჭერს მხარს, და შეწყვიტე მისი Workshop-იდან ჩამოტვირთვა - იმ პირობით, რომ კლიენტებმა შემდეგ იგივე ვერსია სხვა გზით უნდა მიიღონ.
  • mod-ების საიტები, როგორიცაა Thunderstore, CurseForge, Modrinth და Nexus, ძველ ვერსიებს ჩამოსატვირთად ინახავს. ჩაიწერე, რომელ ვერსიას იყენებ.
  • plugin-ების framework-ები - Oxide, Carbon, SourceMod, BepInEx - თავად mod-ებია, და framework-ის ვერსიას იმდენივე მნიშვნელობა აქვს, რამდენიც თითოეული plugin-ისას.

ვერსიების manifest - უბრალო ტექსტური ფაილი, რომელიც ჩამოთვლის თამაშის build-ს, loader-ს და ყოველ mod-ს თავისი ვერსიით - ფიქსაციასა და უკან დაბრუნებას სიის წაკითხვის საქმედ აქცევს. საცდელი სერვერის გაშვება production-ის გვერდით ერთს აჩვენებს, ხოლო რა გააკეთო, როცა mod-ის განახლება რამეს ამტვრევს ერთი mod-ის უკან დაბრუნებას განიხილავს.

save-ები წინ მიდის, უკან იშვიათად#

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

  • Minecraft-ის სამყაროები, რომლებიც ახალ ვერსიაში გაიხსნა, ძველში მხარდაჭერილი არ არის. კლიენტი ერთმოთამაშიან რეჟიმში ამის გაკეთებამდე გაფრთხილებს; სერვერი უბრალოდ ტვირთავს იმას, რასაც აძლევენ, და შედეგი შეიძლება იყოს დაკარგული ბლოკები, დაკარგული ნივთები ან ავარია.
  • Factorio-ს save-ებს ძველი ვერსიები უარყოფს.
  • 7 Days to Die-ის დიდ ვერსიებს ზოგადად ისედაც ახალი სამყარო სჭირდება; მცირე patch-ები ჩვეულებრივ ვერსიის ფარგლებში თავსებადობას ინარჩუნებს.
  • Unreal-ზე დაფუძნებული გადარჩენის თამაშები (Palworld, Satisfactory, Abiotic Factor) save-ებს ჩატვირთვისას წინ გარდაქმნის, უკან დაბრუნების მიმართ სხვადასხვა შემწყნარებლობით.

ასე რომ სერვერის უკან დაბრუნება მხოლოდ ნახევარი უკან დაბრუნებაა. მეორე ნახევარი სამყაროა ისეთი, როგორიც განახლებამდე იყო - რომელიც მხოლოდ მაშინ არსებობს, თუ ახალ build-ზე პირველ ჩართვამდე backup გააკეთე. ეს backup ნებისმიერი განახლების ერთადერთი ყველაზე მნიშვნელოვანი ნაბიჯია და მიზეზი, რის გამოც პანელის ჩაკეტვადი backup-ები არსებობს: RE:NODE-ზე ჩაკეტილ backup-ს განრიგი როტაციით არასოდეს შლის, ამიტომ განახლებამდელი ასლი ერთი კვირის შემდეგაც იქ არის, როცა ვინმე პრობლემას შეამჩნევს. თამაშის სერვერის backup-ის სტრატეგია განიხილავს, რა უნდა შეიცავდეს backup-ი თითო თამაშზე.

უკან დაბრუნების პროცედურა#

როცა განახლება ცუდად წავიდა და ამაღამ წინ გასწორება შეუძლებელია:

  1. გააჩერე სერვერი და გამორთე ყველაფერი, რაც მას ავტომატურად ანახლებს - auto-update-ის გადამრთველი, დაგეგმილი restart-ები, რომლებიც ანახლებს.
  2. გააკეთე მიმდინარე მდგომარეობის backup და ჩაკეტე. ის შეიცავს ყველაფერს, რაც მოთამაშეებმა ახალ ვერსიაზე გააკეთეს, და შეიძლება მოგვიანებით მისი აღდგენა მოინდომო.
  3. აღადგინე განახლებამდელი backup. თუ ის სამყაროსთან ერთად თამაშის ფაილებსაც შეიცავს, ორივეს ერთბაშად აღადგენს. თუ შენი backup-ები ბინარებს გამორიცხავს (როგორც ჩვეულებრივ უნდა იყოს), ძველი build ცალკე დააბრუნე: გადართე ძველ branch-ზე, გამოიყენე depot-ის ჩამოტვირთვა ან ჩაანაცვლე სერვერის ფაილი.
  4. შეამოწმე ვერსია გაშვების ლოგში, რომ ემთხვევა იმას, რაც გულისხმობდი.
  5. შეამოწმე სამყარო, რომ თავისი რეალური სახელით ჩაიტვირთა, მოსალოდნელი პროგრესით.
  6. უთხარი მოთამაშეებს, რომელი ვერსია გაუშვან და როგორ - რომელი beta branch აირჩიონ, რომელი launcher-ის პროფილი გამოიყენონ - და რომელ დრომდე აღდგა სამყარო.
  7. ჩაიწერე, რა გატყდა და რა მოგცემს ისევ განახლების საშუალებას: mod-ის რელიზი, hotfix, კონფიგის ცვლილება. ფიქსაცია დროებითია; იცოდე, რა დაასრულებს მას.

უკან დაბრუნება თუ წინ გასწორება?#

უკან დაბრუნება სწორი პასუხია უფრო იშვიათად, ვიდრე ღამის 11 საათზე გეჩვენება. უხეში სახელმძღვანელო:

სიტუაციაჩვეულებრივ უკეთესია
vanilla სერვერი, კლიენტები უკვე განახლდაწინ გასწორება; კლიენტებს უკან ვერ დააბრუნებ
ერთი mod-ი გატეხილია, დანარჩენები წესრიგშიაამოიღე ან ჩაანაცვლე ეს mod-ი, დარჩი ახალ ვერსიაზე
ბევრი mod-ი გატეხილია, ავტორები დღეებში განაახლებენდააბრუნე უკან, თუ კლიენტებს შეუძლიათ მიჰყვნენ; სხვა შემთხვევაში vanilla ამუშავე, სანამ არ განაახლებენ
save გარდაიქმნა და დაზიანდააღადგინე განახლებამდელი სამყარო ახალ ვერსიაზე, თუ ჩაიტვირთება, სხვა შემთხვევაში ორივე დააბრუნე უკან
თავად თამაშის განახლება თიშავს სერვერებსდააბრუნე უკან, სადაც branch-ები ამის საშუალებას იძლევა; ადევნე თვალი hotfix-ს

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

FAQ#

შემიძლია Steam-ის გამოყოფილი სერვერის ძველ ვერსიაზე დაწევა?

მხოლოდ თუ დეველოპერი ძველ ვერსიას beta branch-ად აქვეყნებს, ან ძველი depot manifest-ის download_depot-ით ჩამოტვირთვით, რასაც ჩვეულებრივ Steam-ის ლოგინი სჭირდება და მხარდაჭერილი არ არის. ნებისმიერ შემთხვევაში მოთამაშეებსაც უნდა შეეძლოთ ძველი ვერსიის გაშვება, რასაც Steam-ის თამაშების უმეტესობა არ უშვებს.

როგორ შევაჩერო ჩემი სერვერის ავტომატური განახლება?

გამორთე auto-update-ის startup პარამეტრი, თუ შენს სერვერს ასეთი აქვს, და დარწმუნდი, რომ არცერთი დაგეგმილი დავალება განახლებას არ უშვებს. შენს მანქანაზე ამოიღე SteamCMD-ის გამოძახება გაშვების სკრიპტიდან. beta branch-ის დაყენებაც განახლებებს ამ branch-ზე ინარჩუნებს.

იმუშავებს ჩემი სამყარო, თუ სერვერს უკან დავაბრუნებ?

მხოლოდ თუ განახლებამდე იყო შენახული. ახალი ვერსიის მიერ გარდაქმნილ სამყაროებს ძველი ჩვეულებრივ სწორად ვერ კითხულობს. აღადგინე განახლებამდე აღებული backup სერვერის ძველ build-თან ერთად.

რატომ ვერ შედიან ჩემი მეგობრები მას შემდეგ, რაც beta branch-ზე გადავედი?

მათი კლიენტები ნაგულისხმევ branch-ზეა, შენი კი არა. თითოეულმა მოთამაშემ Steam-ის Betas ჩანართში იგივე branch უნდა აირჩიოს, ან შენ უნდა გადართო სერვერი უკან public-ზე.

რამდენ ხანს შემიძლია დაფიქსირებულ ვერსიაზე დარჩენა?

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


კომენტარები

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

0/2000