Project Zomboid-ის სერვერის რესეტი სამი ზომისაა, და რომელს მიიღებ, save-ის საქაღალდე წყვეტს. Zomboid/Saves/Multiplayer/<servername>/-ის წაშლა სამყაროსა და ყველა პერსონაჟს შლის, მაგრამ ტოვებს ანგარიშებს, whitelist-ს და ბანებს, რომლებიც Zomboid/db/<servername>.db-ში ცხოვრობს. ამ საქაღალდის შიგნით მხოლოდ რუკის chunk ფაილების წაშლა - players.db-ის შენარჩუნებით - სამყაროს აბრუნებს თავდაპირველ მდგომარეობაში, პერსონაჟები კი უნარებსა და ინვენტარს ინარჩუნებენ. მხოლოდ იმ chunk-ების წაშლა, რომლებიც დასაცავი ტერიტორიების გარეთაა, ნაწილობრივი რესეტია: ქალაქები ნადავლითა და ზომბებით ივსება, ბაზები რჩება. რომელიც არ უნდა აირჩიო, ჯერ სერვერი სუფთად გააჩერე, მთელი Zomboid საქაღალდის backup გააკეთე და ini-ში ResetID გაზარდე, როცა თავად სამყარო ახალია.
ეს გზამკვლევი ხსნის, რა არის save-ის თითოეული ფაილი, რესეტის სამ სახეს და თითოეულის შესრულებას, პარამეტრებს, რომელთა შეცვლაც რესეტს აიძულებს, და როგორ მართო სერვერი ისე, რომ რესეტები ნაკლებად დაგჭირდეს. პარამეტრების ფაილის დანარჩენი ნაწილი განხილულია Project Zomboid-ის სერვერის პარამეტრებში.
რა სად ცხოვრობს#
ყველაფერი, რაც გამოყოფილმა სერვერმა იცის, მის Zomboid საქაღალდეშია, და ყოველი ფაილი იმ სერვერის სახელს ატარებს, რომელიც -servername-ით გადაეცემა (ნაგულისხმევად servertest):
Zomboid/ Server/ servertest.ini server options, mods, ResetID servertest_SandboxVars.lua world rules servertest_spawnregions.lua where new characters appear db/ servertest.db accounts, whitelist, access levels, bans Saves/Multiplayer/servertest/ the world as played map_<x>_<y>.bin one file per explored chunk players.db characters: skills, inventory, position vehicles.db vehicles in the world map_meta.bin safehouses, factions and other world metadata map_t.bin the world clock map_sand.bin the sandbox options this world was created with backups/ the server's own zipped backupssave-ის საქაღალდეში ფაილების ზუსტი ნაკრები build-ებს შორის განსხვავდება, და აქ ჩამოთვლილზე მეტს დაინახავ - ზომბების პოპულაციის ფაილებს თითო cell-ზე და სხვადასხვა ცხრილს. მნიშვნელოვანია სამი კატეგორია:
| რა | სად | გადაურჩება სამყაროს wipe-ს? |
|---|---|---|
| ანგარიშები, პაროლები, წვდომის დონეები, whitelist, ბანები | db/<servername>.db | დიახ, თუ არ წაშლი |
| პერსონაჟები | players.db save-ის საქაღალდეში | მხოლოდ თუ ამ ფაილს შეინარჩუნებ |
| სამყარო: შენობები, ნადავლი, ზომბები, მოთამაშეების ნაგებობები | chunk ფაილები save-ის საქაღალდეში | არა |
| სერვერისა და sandbox-ის პარამეტრები | Server/ | დიახ |
ეს Build 41-ის მულტიპლეერის განლაგებაა, სადაც პერსონაჟები სერვერზე ინახება. Build 42-მა რუკის შიდა გეომეტრია და save-ის ფორმატი შეცვალა, დეველოპერებმა კი თქვეს, რომ Build 41-ის save-ები მასზე არ გადავა - ამიტომ სერვერის მათ შორის გადატანა ახალი დასაწყისია, რაც არ უნდა შეინარჩუნო.
ნებისმიერ რესეტამდე#
ყოველი რესეტი ერთნაირად იწყება. ეს ნაბიჯები ამ რიგით გააკეთე, ყოველ ჯერზე.
- გამოაცხადე. დაასახელე თარიღი და თქვი, რა სახის რესეტია. "რუკის რესეტი, პერსონაჟები რჩება" და "სრული wipe" სრულიად განსხვავებულ რეაქციას იწვევს, და მოთამაშეები, რომლებსაც უთხრეს, შესაბამისად გეგმავენ.
- სუფთად გააჩერე სერვერი.
/quitკონსოლიდან ან პანელის Stop. სუფთა გაჩერება სამყაროს ჩაწერს. მოკლული პროცესი ბოლო წუთებს შეუნახავს ტოვებს და შეიძლება chunk ნახევრად ჩაწერილი დატოვოს, რომელსაც შემდეგ ფრთხილად შეინახავ backup-ში. - გააკეთე მთელი `Zomboid` საქაღალდის backup. არა მხოლოდ save-ის. პარამეტრები, მონაცემთა ბაზა და save ერთად ერთადერთი ასლია, რომელიც ზუსტად იმას აღადგენს, რაც გქონდა.
- ეს backup სერვერის დისკის გარდა სხვაგან შეინახე. Zomboid-ის საკუთარი zip backup-ები
Zomboid/backups/-ში იმის გვერდით ზის, რასაც იცავს. RE:NODE-ზე backup-ები მანქანის გარეთ ინახება და მათი როტაციისგან ჩაკეტვა შეიძლება, რაც სწორედ ის არის, რაც სეზონის ბოლო snapshot-ისთვის გინდა.
სრული wipe: ახალი სამყარო, ახალი პერსონაჟები#
სრული wipe ყველაზე მარტივია და სეზონის ბოლოს ყველაზე ხშირი.
- გააჩერე სერვერი და გააკეთე backup.
- წაშალე
Zomboid/Saves/Multiplayer/<servername>/. - გახსენი
<servername>.iniდაResetIDერთით გაზარდე. - შეცვალე sandbox-ის ნებისმიერი ოფცია, რომელიც ახალი სეზონისთვის გინდა (იხილე ქვემოთ - ზოგი მათგანი ისედაც მხოლოდ ახალ სამყაროზე მოქმედებს).
- გაუშვი სერვერი. სამყარო მოთამაშეების კვლევასთან ერთად გენერირდება, spawn-ის რეგიონებიდან დაწყებული.
ResetID=485729113მნიშვნელობა უბრალოდ რიცხვია. მთავარია, რომ შეიცვალოს. კლიენტებს ახსოვთ რაღაცეები სერვერებზე, რომლებსაც შეუერთდნენ, ახალი ResetID კი მათ ეუბნება, რომ სამყარო, რომელიც იცოდნენ, აღარ არსებობს, რაც ხელახლა შემოსვლისას მოძველებული ქეშირებული მონაცემების უცნაურ ქცევას აცილებს.
ანგარიშები რჩება, რადგან ისინი მონაცემთა ბაზაში ცხოვრობს. ყველა იმავე მომხმარებლის სახელითა და პაროლით შედის, whitelist ისევ მოქმედებს, ბანები ისევ მოქმედებს, მოდერატორები კი წვდომის დონეს ინარჩუნებენ. თუ ახალი სიაც გინდა - ახალი საზოგადოება, ან სერვერი, რომელიც ღია იყო და კერძო ხდება - წაშალე db/<servername>.db-იც. ეს ყველა ანგარიშს შლის, admin-ის ჩათვლით, ამიტომ შემდეგი გაშვებისთვის ადმინის პაროლი ხელთ გქონდეს; RE:NODE-ზე ადმინის პაროლი თითოეული სერვერისთვის გენერირდება და მის დანარჩენ მონაცემებთან ერთად ჩანს.
რუკის რესეტი: ახალი სამყარო, იგივე პერსონაჟები#
რუკის რესეტი გაძლევს ახალ, სრულად ნადავლით სავსე სამყაროს, სადაც ყველა ზომბი დაბრუნებულია, მოთამაშეები კი პერსონაჟებს ინარჩუნებენ - უნარებს, თვისებებს, ნასწავლ რეცეპტებს და ყველაფერს, რაც თან აქვთ. ის დიდი ხნის სერვერს ერგება, სადაც რუკა გაძარცვულია, მაგრამ არავის უნდა დურგლობის ორი თვის დონეების დაკარგვა.
- გააჩერე სერვერი და გააკეთე backup.
- save-ის საქაღალდეში შეინარჩუნე
players.db.vehicles.db-ზე გადაწყვიტე (ქვემოთ). - წაშალე save-ის საქაღალდეში ყველაფერი დანარჩენი.
- გაუშვი სერვერი.
პერსონაჟები ძველი სამყაროს პოზიციით იტვირთება, რაც ნიშნავს, რომ ზოგი იქ შევა, სადაც შენობას ადრე მეორე სართული ჰქონდა, ან შენობაში, რომელიც ახლა ჩაკეტილია და ზომბებით სავსე. ამის მოსაგვარებლად ორი გზაა:
- უთხარი მოთამაშეებს, შემოვიდნენ, როცა მეგობრები ახლოს არიან, და ცოტა ქაოსი რესეტის ნაწილად მიიღე.
- რესეტამდე სთხოვე ყველას, ღია ადგილზე გადავიდნენ - მინდორზე, გზაზე - და იქ გამოვიდნენ.
მათი ბაზები, რა თქმა უნდა, გაქრა, მათში შენახულ ყველა ნივთთან ერთად. გადარჩება მხოლოდ ის, რაც პერსონაჟს თან აქვს. პოპულარული თავაზიანობაა რესეტის ერთი კვირით ადრე გამოცხადება, რომ ხალხმა ჩანთაში ჩაალაგოს ის, რაც უყვარს.
vehicles.db სამყაროს ყველა ტრანსპორტს ინახავს. მისი შენარჩუნება მაშინ, როცა ამ ტრანსპორტის ქვეშ chunk-ებს შლი, ისეთი კომბინაციაა, რისთვისაც თამაში დაპროექტებული არ არის. თუ კონკრეტული მიზეზი არ გაქვს, რუკასთან ერთად წაშალე და ტრანსპორტი თავიდან გაჩნდეს.
map_meta.bin safehouse-ების claim-ებს ინახავს. რუკის რესეტისას შენობები, რომლებსაც ისინი მიმართავენ, ასევე ნულდება, ამიტომ წაშალე; თორემ მოთამაშეებს ახალი ზომბებითა და ნადავლით სავსე შენობებზე claim-ები ექნებათ, რაც საუკეთესო შემთხვევაში დამაბნეველია.
ნაწილობრივი რესეტი: შეავსე ქალაქები, შეინარჩუნე ბაზები#
ნაწილობრივი რესეტი ის არის, რაც დიდი ხნის სერვერების უმეტესობას საბოლოოდ სჭირდება. გაძარცვული ქალაქები ნადავლითა და ზომბებით ბრუნდება, მოთამაშეების ბაზები და მათი შემოგარენი კი ზუსტად ისე რჩება, როგორც არის.
ეს მუშაობს, რადგან სამყარო chunk ფაილებში ინახება, თითო ყოველ გამოკვლეულ chunk-ზე, chunk-ის კოორდინატებით დასახელებული. წაშალე chunk ფაილი და სერვერი რუკის ამ ნაწილს თავდაპირველი რუკის მონაცემებიდან ხელახლა შექმნის, როცა ვინმე შემდეგ ჯერზე ახლოს მივა: ახალი ნადავლი, ახალი ზომბები, დახურული კარები, მთელი ფანჯრები. შეინარჩუნე chunk ფაილი და სამყაროს ეს ნაწილი უცვლელია.
Build 41-ში chunk 10-ზე 10 tile-ია, ამიტომ ფაილი map_1180_1020.bin ფარავს tile-ებს x 11800-11809, y 10200-10209. ბაზის დასაცავად:
- გაიგე ბაზის tile-ების კოორდინატები. ადმინს თამაშში მათი წაკითხვა შეუძლია; vanilla სამყაროს საზოგადოების ვებ-რუკებიც აჩვენებს კოორდინატებს.
- გამოთვალე chunk-ის კოორდინატების დიაპაზონი, რომელიც ბაზას და რამდენიმე chunk-ის მარაგს ფარავს, tile-ის კოორდინატების 10-ზე გაყოფით.
- გააჩერე სერვერი და გააკეთე backup.
- წაშალე ყველა
map_<x>_<y>.binდაცული დიაპაზონების გარეთ. შეინარჩუნეplayers.db,vehicles.dbდაmap_meta.bin. - გაუშვი სერვერი და ეწვიე რესეტირებულ ქალაქს და დაცულ ბაზას, რომ ორივე შეამოწმო.
ამის ხელით გაკეთება ორ-სამ ბაზაზე მეტისთვის შეცდომებით სავსეა. ადმინების უმეტესობა პატარა სკრიპტს წერს ან ამისთვის შექმნილ საზოგადოების ერთ-ერთ ხელსაწყოს იყენებს, რომელიც დაცული მართკუთხედების სიას კითხულობს - ხშირად safehouse-ების სიიდან აღებულს - და ყველაფერ დანარჩენს შლის. რაც არ უნდა შლიდეს, ჯერ ასლზე გაუშვი და შედეგს შეხედე.
ორი შენიშვნა. რესეტის ზონაში დაყენებულმა ტრანსპორტმა შეიძლება უცნაურად მოიქცეს, როცა მისი chunk ხელახლა შეიქმნება; სთხოვე მოთამაშეებს, ტრანსპორტი ჯერ სახლში მიიყვანონ. და Build 42-ში chunk-ის ზომა და ფაილების სახელდება შეიცვალა, ამიტომ Build 41-ის კოორდინატებისთვის დაწერილი სკრიპტი Build 42-ის სერვერზე არასწორია - სანამ რომელიმე არითმეტიკას ენდობი, ამ გზამკვლევისას ჩათვლით, შენს build-ზე ფაილები შეამოწმე.
პარამეტრები, რომლებსაც ახალი სამყარო სჭირდება#
sandbox-ის ყველა ოფცია არსებულ სამყაროზე არ მოქმედებს. სამყარო ინახავს sandbox-ის პარამეტრებს, რომლითაც შეიქმნა - სწორედ ეს არის map_sand.bin - და რამდენიმე ოფცია ერთხელ მოქმედებს, შექმნისას, ან სამყაროს დაწყებიდან გასულ დროზეა მიბმული:
- დაწყების თარიღი და დრო -
StartYear,StartMonth,StartDay,StartTime. - კომუნალური სერვისების გათიშვა -
WaterShutდაElecShutსამყაროს დაწყებიდან ითვლის, ამიტომ მოგვიანებით შეცვლა უკუთვლას თავიდან არ იწყებს. - რუკის არჩევანი -
Map-ის რიგი და რუკის მოდები, რომლებიც წყვეტს, რა გეოგრაფიიდან გენერირდება chunk-ები. - spawn-ის რეგიონები - რომელ ქალაქებში შეუძლიათ ახალ პერსონაჟებს დაწყება.
სხვა ოფციები, როგორიცაა ზომბების პოპულაცია და respawn, ნადავლის იშვიათობა და XP-ის მამრავლები, ჩვეულებრივ არსებულ სამყაროზეც შეიძლება შეიცვალოს - თამაშის ადმინის პანელის sandbox ოფციებით ან Lua ფაილის რედაქტირებითა და გადატვირთვით. ოფციების სრული სია არის Project Zomboid-ის SandboxVars-ის ახსნაში.
რუკის მოდები ცალკე წესს იმსახურებს. არსებულ სამყაროზე რუკის მოდის დამატება ნორმალურია; ახალი ტერიტორია მაშინ გენერირდება, როცა ვინმე მასში პირველად შევა. ერთის მოშორება, ან Map-ის ისე გადალაგება, რომ გამოკვლეულ ტერიტორიაზე სხვა რუკამ გაიმარჯვოს, ტოვებს chunk-ებს, რომლებიც მიმართავს რუკის მონაცემებს, რაც სერვერს აღარ აქვს. ეს რესეტია, ყოველ შემთხვევაში დაზარალებული ტერიტორიისა. Project Zomboid-ის სერვერის მოდები ფარავს Map ხაზს და ჩატვირთვის რიგს.
soft reset ოფცია და რატომ უნდა იყო მასთან ფრთხილად#
Build 41-ს აქვს გაშვების ოფცია -Dsoftreset, რომელიც სერვერის მხარეს სამყაროს ობიექტების რესეტს ატარებს პერსონაჟების შენარჩუნებით. ეს ისეთი ფუნქციაა, რომელიც ძველ ფორუმის თემებსა და patch notes-ში ჩნდება და არა დოკუმენტაციაში, და მისი ზუსტი ქცევა - რას შლის, რას ინარჩუნებს და ერგება თუ არა მოდებიან სამყაროს - იცვლებოდა. თუ ცდა გინდა, ჯერ სერვერი დააკოპირე, ასლზე გაუშვი და შედეგს შეხედე, სანამ ნამდვილს მიუახლოვდები. სერვერების უმეტესობისთვის ზემოთ აღწერილი ფაილებზე დაფუძნებული რესეტები უფრო პროგნოზირებადია, რადგან ზუსტად ხედავ, რა მოაშორე.
როგორ დაგჭირდეს ნაკლები რესეტი#
რესეტები არსებობს, რადგან რუკა ილევა: ნადავლი წაღებულია, ზომბები გაწმენდილია, სამყარო ჩუმდება. sandbox-ის რამდენიმე ოფცია ამას ანელებს, ასე რომ სერვერი რესეტებს შორის უფრო დიდხანს ძლებს.
| ოფცია | ეფექტი |
|---|---|
LootRespawn | კონტეინერები განრიგით ივსება. ნაგულისხმევად გამორთულია |
SeenHoursPreventLootRespawn | კონტეინერები, რომლებშიც მოთამაშეებმა ახლახან ჩაიხედეს, არ ივსება |
ConstructionPreventsLootRespawn | ტერიტორიები მოთამაშეების ნაგებობებით არ ივსება, რაც ბაზებს იცავს |
ZombieConfig.RespawnHours | ზომბები ბრუნდებიან cell-ებში, რომლებიც დიდი ხანია არავის უნახავს |
ZombieConfig.RespawnMultiplier | რამდენი ბრუნდება |
ნადავლის respawn ნაგებობების დაცვით ფაქტობრივად ნელი, ავტომატური ნაწილობრივი რესეტია. ის საჯარო სერვერებს ერგება, სადაც მოთამაშეები მოდიან და მიდიან. მეგობრების სერვერისთვის, რომელსაც მოსწონს გამოყენებული სამყაროს შეგრძნება, ის რაღაცას აკლებს, და რამდენიმე თვეში ერთხელ რესეტი უკეთესი რიტმია.
პრობლემების მოგვარება#
რუკის რესეტის შემდეგ მოთამაშეებმა პერსონაჟები დაკარგეს. players.db წაიშალა, ან სერვერი სხვა -servername-ით გაეშვა და სხვა save-ის საქაღალდე ჩატვირთა.
პერსონაჟები შენარჩუნდა, მაგრამ ძველი სამყაროს ბაზები დაბრუნდა. ფაილების წაშლისას სერვერი მუშაობდა და მეხსიერებაში არსებული chunk-ები უკან ჩაწერა. ჯერ გააჩერე და გაიმეორე.
სრული wipe-ის შემდეგ ზოგი მოთამაშე ვერ შემოდის. მათ ძველი სამყაროს მოძველებული კლიენტის მონაცემები აქვთ. დარწმუნდი, რომ ResetID შეიცვალა, და სთხოვე თამაში გადატვირთონ.
ყველას ხელახლა რეგისტრაცია მოუწია. db/<servername>.db save-თან ერთად წაიშალა. აღადგინე backup-იდან, თუ ეს არ გინდოდა.
დაცულმა ბაზამ ბოსტანი და ღობე დაკარგა. მარაგი მეტისმეტად პატარა იყო. აღადგინე ეს chunk ფაილები backup-იდან; ეს ერთ-ერთი მიზეზია, რის გამოც მას აკეთებ.
რუკის მოდის ცვლილების შემდეგ სამყარო არ იტვირთება. რუკის მოდი მოაშორეს სამყაროს, რომელშიც მისი ტერიტორია გამოკვლეული იყო. დააბრუნე, ან დაზარალებული chunk-ები გადატვირთე.
სერვერი sandbox-ის ახალი პარამეტრებით არ ეშვება. შეცდომა Lua ფაილში. კონსოლი ხაზს აჩვენებს. შეადარე სერვერის მიერ გენერირებულ ფაილს, ან წინა აღადგინე.
FAQ#
wipe მოთამაშეების ანგარიშებს შლის?
არა. ანგარიშები, პაროლები, წვდომის დონეები, whitelist და ბანები Zomboid/db/<servername>.db-ში ცხოვრობს და არა save-ში. save-ის წაშლა მათ ხელს არ ახლებს. მონაცემთა ბაზაც მხოლოდ მაშინ წაშალე, თუ გინდა, რომ ყველამ ხელახლა დარეგისტრირდეს.
შეუძლიათ მოთამაშეებს უნარების შენარჩუნება რუკის რესეტისას?
დიახ, Build 41-ის მულტიპლეერზე. პერსონაჟები save-ის საქაღალდეში players.db-ში ინახება. შეინარჩუნე ეს ფაილი, წაშალე save-ის დანარჩენი ნაწილი და პერსონაჟები უნარებითა და თან ნატარები ნივთებით ახალ სამყაროში დაბრუნდებიან.
რას აკეთებს ResetID?
ის კლიენტებისთვის სამყაროს იდენტიფიცირებს. მისი შეცვლა მათ ეუბნება, რომ სამყარო, რომელიც ახსოვთ, აღარ არსებობს, რაც wipe-ის შემდეგ მოძველებული მონაცემების პრობლემებს აცილებს. გაზარდე ყოველ ჯერზე, როცა ახალ სამყაროს ქმნი.
როგორ გადავტვირთო მხოლოდ გაძარცვული ქალაქები?
წაშალე chunk ფაილები მოთამაშეების ბაზების ირგვლივ დაცული ტერიტორიების გარეთ, players.db-ის, vehicles.db-ისა და map_meta.bin-ის შენარჩუნებით. chunk-ები ვიზიტისას თავდაპირველი რუკიდან ხელახლა გენერირდება. გამოიყენე სკრიპტი ან ხელსაწყო, ასლზე გატესტე და ფართო მარაგები დატოვე.
sandbox-ის პარამეტრების შესაცვლელად რესეტი მჭირდება?
მხოლოდ სამყაროს შექმნაზე მიბმული ოფციებისთვის, როგორიცაა დაწყების თარიღი, კომუნალური სერვისების გათიშვის დრო, რუკების სია და spawn-ის რეგიონები. სხვა ოფციების უმეტესობა - ზომბების პოპულაცია, respawn, ნადავლი, XP - არსებულ სამყაროზეც შეიძლება შეიცვალოს.
შემიძლია Build 41-ის სამყარო Build 42-ზე გადავიტანო?
არა. save-ის ფორმატი და რუკის გეომეტრია შეიცვალა, და Build 41-ის სამყაროები Build 42-ზე არ იტვირთება. სერვერის მათ შორის გადატანა ახალი სამყაროა, და ის სეზონის ცვლილებად უნდა დაგეგმო.




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