autosave-ის ინტერვალი არის ის მაქსიმალური პროგრესი, რომლის დაკარგვაც შენს მოთამაშეებს ერთბაშად შეუძლიათ. თამაში, რომელიც სამყაროს ყოველ ოცდაათ წუთში წერს, როცა სერვერი სუფთა შენახვის გარეშე ჩერდება, საშუალოდ ყველას თამაშის თხუთმეტ წუთს კარგავს, უარეს შემთხვევაში კი მთელ ოცდაათს. ინტერვალის შემოკლება ამ დანაკარგს ზღუდავს, ფასად კი ყოველ ჯერზე, როცა სამყარო იწერება, მოკლე შეფერხებას იხდი - დიდ სამყაროზე შესამჩნევს, პატარაზე უხილავს. სერვერების უმეტესობისთვის ათი წუთი გონივრული შუალედია: Valheim-ში დააყენე -saveinterval 600, Rust-ში server.saveinterval 600 (უკვე ნაგულისხმევია), Palworld-ში AutoSaveSpan რამდენიმე წუთზე, ხოლო Minecraft-ის ხუთწუთიან ნაგულისხმევს ნუ შეეხები. შემდეგ დარწმუნდი, რომ ყოველი დაგეგმილი გაჩერება სუფთაა, რადგან სუფთა გაჩერება ინტერვალის მიუხედავად ინახავს.
რატომ არ ინახავენ თამაშები უწყვეტად#
სამყარო, რომელშიც მოთამაშე დადის, მეხსიერებაში ინახება. მისი დისკზე ჩაწერა ნიშნავს ათასობით ან მილიონობით ობიექტის - რელიეფის ცვლილებების, შენობების, არსებების, კონტეინერების - ფაილში სერიალიზაციას, და თამაშის სერვერების უმეტესობაზე ეს სამუშაო მთავარ სიმულაციის thread-ზე ხდება ან მას ბლოკავს. სანამ ის მიმდინარეობს, სიმულაცია ჩერდება ან ნელდება. მოთამაშეები ამას შეფერხებად გრძნობენ: ნახევარწამიანი გაყინვა, rubber-banding, კარი, რომელიც დაგვიანებით იღება.
ამიტომ ყოველი თამაში კომპრომისს ირჩევს. შეინახე იშვიათად - და შეფერხება იშვიათია, მაგრამ crash ბევრი ჯდება. შეინახე ხშირად - და crash ცოტა ჯდება, მაგრამ შეფერხება უფრო ხშირად ბრუნდება. ინტერვალი ეს კომპრომისია რიცხვის სახით, და სწორი რიცხვი დამოკიდებულია იმაზე, რამდენად დიდია შენი სამყარო, რამდენად სწრაფია შენი საცავი და რამდენად ხშირად ჩერდება შენი სერვერი არასუფთად.
პარამეტრები თითოეული თამაშისთვის#
| თამაში | პარამეტრი | სად | ნაგულისხმევი |
|---|---|---|---|
| Valheim | -saveinterval | გაშვების არგუმენტი, წამებში | 1800 |
| Minecraft (vanilla) | არ არის ხელმისაწვდომი | თამაშში ფიქსირებული | ყოველ 6000 tick-ში (5 წთ) |
| Minecraft (Paper) | ticks-per.autosave | bukkit.yml | 6000 tick |
| Rust | server.saveinterval | server.cfg ან კონსოლი, წამებში | 600 |
| Palworld | AutoSaveSpan | PalWorldSettings.ini, წამებში | 30 |
| ARK | AutoSavePeriodMinutes | GameUserSettings.ini [ServerSettings] | 15 |
| Factorio | autosave_interval | server-settings.json, წუთებში | 10 |
| Space Engineers | AutoSaveInMinutes | SpaceEngineers-Dedicated.cfg | 5 |
| V Rising | AutoSaveInterval, AutoSaveCount | ServerHostSettings.json | ვერსიაზეა დამოკიდებული |
| Project Zomboid | SaveWorldEveryMinutes | სერვერის .ini | 0 |
| Don't Starve Together | არცერთი | ინახავს ყოველი თამაშის დღის დასაწყისში |
ნაგულისხმევი მნიშვნელობები თამაშის ვერსიებს შორის იცვლება, ამიტომ ცხრილი მიიღე როგორც ადგილი, სადაც უნდა ნახო, და არა გარანტია, და რამის შეცვლამდე შენი ვერსიის თანმხლები ნაგულისხმევი ფაილი შეამოწმე.
Valheim
Valheim-ის ოცდაათწუთიანი ნაგულისხმევი ნებისმიერ სერვერზე ყველაზე ხშირად სანანებელი პარამეტრია. სამყარო ერთი .db ფაილია, რომელიც ერთი გავლით იწერება, და crash ან მეხსიერების ამოწურვის გამო გაჩერება ბოლო შენახვის შემდეგ ყველაფერს კარგავს. მისი 600-მდე შემცირება დანაკარგს ათ წუთზე ზღუდავს. დიდ, მჭიდროდ აშენებულ სამყაროზე შენახვას იმდენი დრო სჭირდება, რომ მოთამაშეები ჭედვას ამჩნევენ; ლოგი თითოეულს World saved ( 450.123ms )-ის ან მსგავსის სახით აჩვენებს, ასე რომ ზუსტად ხედავ, რა ჯდება. დაახლოებით ხუთ წუთზე ქვემოთ ჭედვა უფრო დიდ საჩივრად იქცევა. Valheim-ის გაშვების დანარჩენი პარამეტრები მოცემულია სტატიაში Valheim-ის გამოყოფილი სერვერის გზამკვლევი.
Minecraft
Minecraft სხვა თამაშების უმეტესობისგან განსხვავებულად ინახავს. ის შეცვლილ chunk-ებს რეგიონის ფაილებში წერს, ხოლო Paper სამუშაოს tick-ებზე ანაწილებს და ყველაფერს ერთბაშად არ ინახავს:
chunks: auto-save-interval: default max-auto-save-chunks-per-tick: 24auto-save-interval: default მიჰყვება bukkit.yml-ში არსებულ ticks-per.autosave-ს, რაც 6000 tick-ია - ხუთი წუთი 20 TPS-ზე. max-auto-save-chunks-per-tick ზღუდავს, რამდენი იწერება ერთ tick-ში, და ამიტომ აჩვენებს Paper-ის სერვერი შენახვის შეფერხებას იშვიათად. chunk-ები ასევე ინახება, როცა იტვირთება მეხსიერებიდან. ამის შეცვლის მიზეზი ცოტაა; თუ შენახვები spark-ის პროფილში ჩანს, პრობლემა საცავი ან სამყაროს ზომაა და არა ინტერვალი. Minecraft-ის სამყაროს backup და აღდგენა აღწერს save-off-ს, save-all-ს და შეთანხმებულ ასლებს.
Rust
Rust მთელ რუკას ყოველ server.saveinterval წამში ინახავს, ნაგულისხმევად 600, და ყოველ ჯერზე ბეჭდავს ხაზს entity-ების რაოდენობითა და დროებით. wipe-ის ბოლოს რუკაზე ასობით ათასი entity-ით შენახვას შეიძლება წამი ან მეტი დასჭირდეს, რასაც მოთამაშეები გაყინვად გრძნობენ. დიდ სერვერებზე ინტერვალის გაზრდა გაყინვების შესამცირებლად ჩვეულებრივია; ეს ლაგს რისკზე ცვლის. ბევრი მფლობელი 600-ს ტოვებს და გაყინვას ეგუება, რადგან მოდიან Rust სერვერზე wipe-ის ბოლოს crash იშვიათი არ არის.
Palworld
AutoSaveSpan PalWorldSettings.ini-ში გრძელი OptionSettings=(...) ხაზის შიგნითაა, წამებში. ნაგულისხმევი ძალიან ხშირად ინახავს. დატვირთულ სერვერზე მრავალი ბაზით თითოეული შენახვა უფრო მძიმეა, და თუ მოთამაშეები პერიოდულ გაყინვებზე ჩივიან, სცადე მისი რამდენიმე წუთამდე გაზრდა და არა პირიქით. Palworld-ის სერვერის პარამეტრები ხსნის, როგორ დაარედაქტირო ეს ხაზი ისე, რომ არ გააფუჭო.
ARK
AutoSavePeriodMinutes=15 [ServerSettings]-ის ქვეშ ნაგულისხმევია, და ARK-ის შენახვები დიდ რუკაზე მრავალი მოშინაურებული არსებით გრძელია - ძველ სამყაროზე რამდენიმეწამიანი გაყინვა ნორმაა. თხუთმეტი წუთი გონივრული კომპრომისია; დიდ სამყაროზე ათზე ქვემოთ ჩასვლა გაყინვებს იმდენად ხშირს ხდის, რომ აღიზიანებს.
Factorio
Factorio შენახვისას თამაშს ყველა მოთამაშისთვის აჩერებს და შენახვის ზოლს აჩვენებს. autosave_interval (წუთებში, ნაგულისხმევად 10) და autosave_slots (ნაგულისხმევად 5) აკონტროლებს, რამდენად ხშირად და რამდენი მბრუნავი autosave ინახება. Linux-ზე non_blocking_saving პროცესს fork-ს უკეთებს, რომ ფონზე შეინახოს დაპაუზების გარეშე; ის ექსპერიმენტულადაა მონიშნული და მისი მუშაობისას მეხსიერების გამოყენება მოკლე დროით ორმაგდება. გვიანი თამაშის მეგაბაზები გრძელი შენახვებით სწორედ ისაა, სადაც ის თავს იმართლებს. მეტი სტატიაშია Factorio-ს headless სერვერის გზამკვლევი.
თამაშები, რომლებიც სვლაში ინახავენ
ზოგი თამაში უწყვეტად წერს, რეგიონებად ან chunk-ებად, როცა ისინი მეხსიერებიდან იტვირთება, და "ინტერვალს" ნაკლები მნიშვნელობა აქვს. Project Zomboid რუკის chunk-ებს მეხსიერებიდან გატვირთვისას წერს, მოთამაშეებს კი - გასვლისას, და SaveWorldEveryMinutes ნაგულისხმევად 0-ია, რაც ნიშნავს, რომ ცალკე მთელი სამყაროს შენახვა ტაიმერით არ ხდება. 7 Days to Die მსგავსად რეგიონებს მეხსიერებიდან გატვირთვისას წერს და serverconfig.xml-ში მარტივ ინტერვალს არ იძლევა; მისი saveworld კონსოლის ბრძანება სრულ შენახვას აიძულებს. Don't Starve Together ინახავს ყოველი თამაშის დღის დასაწყისში. მათთვის crash იმაზე ნაკლებს კარგავს, ვიდრე ცხრილიდან ჩანს, მაგრამ დაგეგმილი გაჩერებებისა და backup-ების წინ შენახვის აიძულებას მაინც აქვს მნიშვნელობა.
რა ჯდება შენახვა სინამდვილეში#
სამი რამ ხდის შენახვას ძვირს, და მხოლოდ ერთია ინტერვალი.
- სამყაროს ზომა. ჩასაწერის რაოდენობა იზრდება გამოკვლეულ ტერიტორიასთან, შენობებთან და entity-ებთან ერთად. ერთი თვის სამყაროს შენახვას შეიძლება ათჯერ მეტი დრო დასჭირდეს, ვიდრე ახალს. ამიტომ იწყებს სერვერი, რომელიც არასდროს ჭედავდა, ჭედვას სიცოცხლის ბოლოს.
- მთავარი thread-ის სამუშაო. ობიექტების სერიალიზაცია ჩვეულებრივ სიმულაციის thread-ზე ხდება. მეტი CPU-ის მარაგი შველის, მაგრამ თავად სამუშაო თამაშების უმეტესობაში არ პარალელდება. თამაშის სერვერის CPU-ის გამოყენების კითხვა ხსნის, რატომ ჩანს ერთი დატვირთული thread დაბალ საერთო გამოყენებად.
- საცავი. ასობით მეგაბაიტის ნელ დისკებზე ჩაწერა წამებს ამატებს. NVMe დისკის ნაწილს თითქმის უფასოს ხდის, და ამიტომ სწრაფ საცავზე დარჩენილი შეფერხება თითქმის მთლიანად სერიალიზაციაა. სტატია რას ცვლის NVMe სინამდვილეში განიხილავს, სად შველის და სად არა.
შეცვლამდე გაზომე. თამაშების უმეტესობა თითოეულ შენახვას ლოგში ხანგრძლივობით წერს, ან სულ მცირე დროის ნიშნულით დასაწყისსა და ბოლოს. პიკის დროს სამ-ოთხ შენახვას დააკვირდი და რეალური ფასი გეცოდინება. 200 ms-იანი შენახვა ყოველ ხუთ წუთში არაფერია; 3-წამიანი შენახვა ყოველ ხუთ წუთში დიზაინის პრობლემაა, და გამოსავალი სამყარო ან გეგმაა და არა უფრო გრძელი ინტერვალი.
რამდენს კარგავს crash#
თუ სერვერი შემთხვევით მომენტში არასუფთად ჩერდება, მოსალოდნელი დანაკარგი ინტერვალის ნახევარია, უარესი შემთხვევა კი - მთელი ინტერვალი. ეს თითო მოთამაშეზეა - ათკაციანი ჯგუფი, რომელიც თითოეული თხუთმეტ წუთს კარგავს, ერთობლივი თამაშის ორნახევარი საათია.
| ინტერვალი | საშუალო დანაკარგი | უარესი შემთხვევა | შენახვის შეფერხებები საათში |
|---|---|---|---|
| 30 წთ | 15 წთ | 30 წთ | 2 |
| 15 წთ | 7.5 წთ | 15 წთ | 4 |
| 10 წთ | 5 წთ | 10 წთ | 6 |
| 5 წთ | 2.5 წთ | 5 წთ | 12 |
| 2 წთ | 1 წთ | 2 წთ | 30 |
მეორე რიცხვი, რომელსაც მნიშვნელობა აქვს, ისაა, რამდენად ხშირად ხდება არასუფთა გაჩერებები. სტაბილური სერვერი, რომელიც მხოლოდ განრიგით გადაიტვირთება, იშვიათად კარგავს რამეს, ინტერვალის მიუხედავად. სერვერი, რომელიც მეხსიერების ლიმიტთან ახლოს მუშაობს, ძლიერად მოდიანი სერვერი ან ისეთი თამაში, რომელსაც ხშირი crash-ის ბაგები აქვს, ხშირად ჩერდება არასუფთად, და მათთვის მოკლე ინტერვალი ბევრ შეფერხებად ღირს. თუ არ იცი, რამდენად ხშირად ვარდება შენი სერვერი, ჯერ ეს გაარკვიე - რატომ გადაიტვირთება შენი თამაშის სერვერი გამუდმებით აჩვენებს, როგორ გაარჩიო crash მეხსიერების გამო გაჩერებისგან და განრიგისგან.
სუფთა გაჩერებები ინტერვალის მნიშვნელობას ამცირებს#
ცხრილის ყველა თამაში ინახავს, როცა სწორად ჩერდება. სუფთა გაჩერება - თამაშის საკუთარი გაჩერების ბრძანება ან სიგნალი, რომელსაც თამაში ამუშავებს - გასვლამდე სამყაროს წერს. kill - არა.
- პანელის Stop და Restart ჩვეულებრივ თამაშის გაჩერების ბრძანებას ან სიგნალს აგზავნის და ელოდება. ეს ინახავს.
- Kill პროცესს გაფრთხილების გარეშე ამთავრებს. ეს ბოლო შენახვის შემდეგ ყველაფერს კარგავს.
- მეხსიერების ამოწურვის გამო გაჩერება თამაშის თვალსაზრისით kill-ივით იქცევა.
- ჰოსტის ან node-ის ჩავარდნა kill-ივით იქცევა.
RE:NODE-ზე სერვერი, რომელიც მეხსიერების ლიმიტს აღწევს, kernel-ის მიერ ჩერდება და სუფთად გადაიტვირთება, swap-ში დატოვების ნაცვლად - უკეთესია მანქანაზე ყველაფერი დანარჩენისთვის, თამაშისთვის კი შეუნახავი გაჩერებაა. თუ მეხსიერების გრაფიკი აჩვენებს, რომ შენი სერვერი ჭერს აღწევს, შენახვის ინტერვალი შეამოკლე, სანამ მიზეზს არ გამოასწორებ ან გეგმას არ გაზრდი; ამ მიზეზის პოვნას აღწერს თამაშის სერვერის მეხსიერების გაჟონვა. სუფთა გაჩერებისა და kill-ის განსხვავება ისიცაა, რის გამოც Wine-ის ქვეშ გაშვებულ ზოგიერთ მხოლოდ Windows-ის თამაშს დამატებითი ყურადღება სჭირდება: ინახავენ თუ არა გაჩერების სიგნალზე, თამაშზეა დამოკიდებული, როგორც ხსნის Wine და Proton მხოლოდ Windows-ის სერვერებისთვის.
autosave-ები backup-ები არ არის#
ბევრი თამაში მბრუნავ autosave ფაილებს ინახავს - Factorio-ს სლოტები, Satisfactory-ის დანომრილი autosave-ები, Valheim-ის .old და დროით backup-ები. ისინი ზუსტად ერთ ჩავარდნაში შველის: როცა ბოლო save დაზიანებულია. ისინი იმავე საქაღალდეში, იმავე დისკზე, იმავე სერვერზე ცხოვრობენ, ასე რომ წაშლილი სერვერი, ცუდი მოდი, რომელიც ყოველ save-ს აზიანებს, რომელსაც ეხება, ან შეცდომა ფაილების მენეჯერში ყველას წაიღებს.
backup არის ასლი სხვაგან, გადაღებული განრიგით, რომელიც სულ მცირე ერთხელ აღგიდგენია. და backup მხოლოდ იმას შეიცავს, რაც თამაშს იმ მომენტში დისკზე ჰქონდა ჩაწერილი, ასე რომ თანმიმდევრობას მნიშვნელობა აქვს: ჯერ შეინახე, შემდეგ გააკეთე backup.
RE:NODE-ზე Schedules ჩანართი cron გამოსახულებით უშვებს დალაგებულ ამოცანებს დაყოვნებებით - კონსოლის ბრძანება, backup, ჩართვა-გამორთვის მოქმედება - ასე რომ ეს თანმიმდევრობა თავისით შეიძლება მუშაობდეს:
Schedule: every 6 hours (0 */6 * * *) 1. Console command: save (the game's own save command) 2. Wait 30 seconds 3. Create backupsave შენი თამაშის ბრძანებით შეცვალე: save-all Minecraft-ისთვის, saveworld 7 Days to Die-ისთვის, server.save Rust-ისთვის. backup-ის სლოტები ყველა სათამაშო გეგმაზეა, მანქანის გარეთ ინახება და ღილაკით აღდგება. სტატია backup-ები, რომლებიც ნამდვილად აღდგება ხსნის ამ წინადადების ბოლო ნაწილს, რომელსაც ხალხი ტოვებს. განრიგის სინტაქსს აღწერს cron გამოსახულებები - ახსნა.
ხელით შენახვა იმ მომენტებში, რომლებსაც მნიშვნელობა აქვს
ინტერვალი შემთხვევითი crash-ისგან იცავს. ზოგი მომენტი შემთხვევითი არ არის, და მათ წინ ხელით შენახვა ერთი წამი ჯდება და რისკს მთლიანად აშორებს. შეინახე სანამ:
- მოდს ან plugin-ს დააყენებ ან განაახლებ. თუ ის ჩატვირთვისას სერვერს crash-ს აძლევს, სამყარო დისკზე აქტუალურია და მოდის უკან დაბრუნება არაფერს კარგავს.
- თამაშის განახლებები. გააკეთე save და backup; განახლებამ შეიძლება save ისე გარდაქმნას, რომ ძველი ვერსია ვეღარ წაიკითხავს.
- ბოსებთან ბრძოლები, რეიდები და ივენთები. ეს ის წუთებია, რომელთა დაკარგვასაც მოთამაშეები იმახსოვრებენ, და მომენტები, როცა სერვერები დატვირთვის ქვეშ ყველაზე ხშირად ჭედავს.
- ადმინის დიდი ცვლილებები. entity-ების გასუფთავება, რეგიონების წაშლა, სამყაროს მოდიფიკატორების შეცვლა, კონფიგის რედაქტირება, რომელსაც თამაში გაშვებისას კითხულობს.
- კონსოლს ახალ ადამიანს გადასცემ. save გაძლევს სუფთა წერტილს, სადაც დაბრუნდები, თუ ბრძანება ცუდად წავა.
თამაშების უმეტესობა save-ს ლოგში წერს, ამიტომ გაგრძელებამდე კონსოლში დადასტურების ხაზს დაელოდე. რამდენიმე თამაშში არსებობს ბრძანებები, რომლებიც "save"-ს ახსენებენ, მაგრამ შენახვას მხოლოდ რიგში აყენებენ და არ ასრულებენ; ლოგის ხაზი გეუბნება, რომ დასრულდა.
შენი ინტერვალის არჩევა#
მოკლე პროცედურა, რომელიც ნებისმიერ თამაშზე მუშაობს:
- იპოვე პარამეტრი და მისი მიმდინარე მნიშვნელობა ზემოთ მოცემული ცხრილიდან ან შენი თამაშის ნაგულისხმევი კონფიგიდან.
- გაზომე შენახვის ფასი პიკზე, ლოგიდან.
- დაითვალე არასუფთა გაჩერებები ბოლო თვეში კონსოლის ისტორიიდან ან crash-ის შეტყობინებებიდან.
- აირჩიე ინტერვალი, სადაც შეფერხება მოთამაშეებისთვის შეუმჩნეველია ან დანაკარგი მათთვის მისაღებია - ჰკითხე, რომელი აწუხებთ უფრო მეტად.
- დაამატე განრიგი "ჯერ save, შემდეგ backup", რომ backup-ები ბოლო save-ზე ძველი არასდროს იყოს.
- გადახედე, როცა სამყარო იზრდება. პირველ კვირაში არჩეული პარამეტრი მესამე თვეში შეიძლება არასწორი იყოს.
FAQ#
autosave-ის რომელი ინტერვალი გამოვიყენო Valheim-ისთვის?
-saveinterval 600, ათი წუთი, ჯგუფების უმეტესობას უხდება. ოცდაათწუთიანი ნაგულისხმევი crash-ის შემდეგ ზედმეტად ბევრს კარგავს. ქვემოთ მხოლოდ მაშინ ჩადი, თუ შენი სამყარო იმდენად პატარაა, რომ შენახვები შეუმჩნეველია, და შენახვის დრო ლოგში შეამოწმე.
რატომ იყინება ჩემი სერვერი წამით ყოველ რამდენიმე წუთში?
ეს თითქმის ყოველთვის autosave-ია. დაადასტურე გაყინვის ლოგში შენახვის ხაზებთან შედარებით. უფრო დიდი სამყარო ან უფრო ნელი საცავი მას ახანგრძლივებს. ინტერვალის გაზრდა მას იშვიათს ხდის, მაგრამ ზრდის იმას, რასაც crash კარგავს.
უფრო მოკლე autosave-ის ინტერვალი მეტ ადგილს იკავებს დისკზე?
თავად სამყაროსთვის ჩვეულებრივ არა, ის გადაიწერება. თამაშები, რომლებიც მბრუნავ autosave-ებს ინახავენ, უფრო ხშირი შენახვისას მეტ ადგილს მხოლოდ მაშინ იყენებენ, თუ მეტ სლოტსაც ინახავენ. დისკზე ჩაწერები იზრდება, რასაც NVMe-ზე ნაკლები მნიშვნელობა აქვს.
ვკარგავ პროგრესს, როცა სერვერს პანელიდან გადავტვირთავ?
არა, თუ restart სუფთაა. ჩვეულებრივი Stop ან Restart თამაშს გასვლამდე შენახვის საშუალებას აძლევს. kill-ები, crash-ები და მეხსიერების ამოწურვის გამო გაჩერებები ის შემთხვევებია, რომლებიც ბოლო autosave-ის შემდეგ ყველაფერს კარგავს.
backup-მდე უნდა შევინახო?
კი. backup აკოპირებს იმას, რაც დისკზეა. თუ თამაშმა ბოლოს ოცი წუთის წინ შეინახა, backup ოცი წუთით ძველია. გაგზავნე save ბრძანება, დაელოდე დასრულებას, შემდეგ გააკეთე backup.




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