თამაშის სერვერის ვერსიის ფიქსაცია ნიშნავს, რომ ის ახალ 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-თი აყენებს:
# 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 +quitbranch-ების გადართვისას ჩართე validate. წინააღმდეგ შემთხვევაში ერთი branch-ის ფაილები, რომლებიც მეორეში არ არსებობს, ადგილზე რჩება, ხოლო სერვერი, რომელიც ნარევით მუშაობს, უცნაური გზებით ავარიული სერვერია.
იმის სანახავად, რომელი branch-ები არსებობს სერვერის აპისთვის Steam-ის გახსნის გარეშე:
$ ./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-ს იღებს:
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-ი თითო თამაშზე.
უკან დაბრუნების პროცედურა#
როცა განახლება ცუდად წავიდა და ამაღამ წინ გასწორება შეუძლებელია:
- გააჩერე სერვერი და გამორთე ყველაფერი, რაც მას ავტომატურად ანახლებს - auto-update-ის გადამრთველი, დაგეგმილი restart-ები, რომლებიც ანახლებს.
- გააკეთე მიმდინარე მდგომარეობის backup და ჩაკეტე. ის შეიცავს ყველაფერს, რაც მოთამაშეებმა ახალ ვერსიაზე გააკეთეს, და შეიძლება მოგვიანებით მისი აღდგენა მოინდომო.
- აღადგინე განახლებამდელი backup. თუ ის სამყაროსთან ერთად თამაშის ფაილებსაც შეიცავს, ორივეს ერთბაშად აღადგენს. თუ შენი backup-ები ბინარებს გამორიცხავს (როგორც ჩვეულებრივ უნდა იყოს), ძველი build ცალკე დააბრუნე: გადართე ძველ branch-ზე, გამოიყენე depot-ის ჩამოტვირთვა ან ჩაანაცვლე სერვერის ფაილი.
- შეამოწმე ვერსია გაშვების ლოგში, რომ ემთხვევა იმას, რაც გულისხმობდი.
- შეამოწმე სამყარო, რომ თავისი რეალური სახელით ჩაიტვირთა, მოსალოდნელი პროგრესით.
- უთხარი მოთამაშეებს, რომელი ვერსია გაუშვან და როგორ - რომელი beta branch აირჩიონ, რომელი launcher-ის პროფილი გამოიყენონ - და რომელ დრომდე აღდგა სამყარო.
- ჩაიწერე, რა გატყდა და რა მოგცემს ისევ განახლების საშუალებას: 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-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.