Unturned-ის სერვერი workshop-ის კონტენტს ერთი ფაილიდან იღებს: WorkshopDownloadConfig.json სერვერის instance საქაღალდეში. ჩაწერე რუკისა და მისი asset pack-ების workshop-ის რიცხვითი ID-ები File_IDs-ში, Commands.dat-ში Map რუკის შიდა სახელზე დააყენე და გადატვირთე. სერვერი ჩატვირთვისას ყველა ელემენტს ჩამოტვირთავს, ხოლო როცა მოთამაშე შემოდის, იმავე სიას უგზავნის, ასე რომ მისი კლიენტი მას Steam-იდან ავტომატურად ჩამოტვირთავს - ხელით გამოწერა არავის სჭირდება. Unturned-ის სერვერზე workshop-ის თითქმის ყველა პრობლემა ოთხიდან ერთ-ერთია: დაკარგული დამოკიდებულება, რუკის არასწორი სახელი, ორი მოდი ერთი და იმავე ID-ებით, ან workshop-ის ელემენტი, რომელიც სერვერის მუშაობისას განახლდა.
ეს გზამკვლევი ფარავს ფაილს და მის ყველა ველს, რუკებს და სახელს, რომლითაც ისინი იტვირთება, კონტენტის მოდებს, დამოკიდებულებებს, რა ხდება ელემენტის განახლებისას და შეცდომებს, რომლებსაც მოთამაშეები რეალურად ხედავენ. სერვერის დანარჩენი ნაწილისთვის - Commands.dat, პორტები და login token - იხილე Unturned-ის სერვერის გამართვა.
როგორ აღწევს workshop-ის კონტენტი სერვერამდე და მის მოთამაშეებამდე#
Unturned-ის workshop-ის ელემენტებს Steam ჰოსტავს, თამაშის app ID 304930-ის ქვეშ. გამოყოფილ სერვერს მათ ჩამოსატვირთად არავის Steam ანგარიში არ სჭირდება: ის ჩატვირთვისას ID-ების სიას კითხულობს, ჩამოტვირთავს ყველაფერს, რაც აკლია ან მოძველებულია, და assets-ს ტვირთავს.
როცა მოთამაშე უერთდება, სერვერი ეუბნება, რომელ ელემენტებს უშვებს. კლიენტი ამას ადარებს იმას, რაც აქვს, Steam-იდან ჩამოტვირთავს ყველაფერს, რაც აკლია, და შედის. სწორედ ამ მიზეზით შეიძლება მოთამაშის პირველ შემოსვლას მძიმედ მოდიფიცირებულ სერვერზე დიდი დრო დასჭირდეს.
ეს მისალმება არის მიზეზი, რის გამოც ID-ების სია workshop-ის კონტენტის სწორი ადგილია და არა საქაღალდეებში ხელით დაკოპირებული ფაილები. სერვერზე ხელით დაკოპირებული კონტენტი სიაში არ არის, ამიტომ კლიენტებს მისი ჩამოტვირთვა არასოდეს ეუბნებათ, და ისინი ისეთ სამყაროში ხვდებიან, რომელიც სავსეა იმით, რისი ჩატვირთვაც არ შეუძლიათ.
WorkshopDownloadConfig.json, ველ-ველ#
ფაილი მდებარეობს Servers/<ServerID>/WorkshopDownloadConfig.json-ში და სერვერის პირველი გაშვებისას იქმნება. რედაქტირებამდე სერვერი გააჩერე. ტიპური ფაილი:
{ "File_IDs": [ 1234567890, 1234567891, 2345678901 ], "Ignore_Children_File_IDs": [], "Query_Cache_Max_Age_Seconds": 600, "Max_Query_Retries": 2, "Use_Cached_Downloads": true, "Should_Monitor_Updates": true, "Shutdown_Update_Detected_Timer": 600, "Shutdown_Update_Detected_Message": "Workshop file update detected, shutdown in: {0}"}| ველი | რას აკეთებს |
|---|---|
File_IDs | workshop-ის ელემენტები ჩამოსატვირთად და ჩასატვირთად. რიცხვები, მძიმით გამოყოფილი |
Ignore_Children_File_IDs | ელემენტები, რომლებიც გამოტოვდება, მაშინაც კი, თუ File_IDs-ში რაიმე მათ საჭიროდ ასახელებს |
Query_Cache_Max_Age_Seconds | რამდენ ხანს ენდობა სერვერი ელემენტების დეტალების ბოლო შემოწმებას |
Max_Query_Retries | ხელახალი ცდები, როცა Steam არ პასუხობს |
Use_Cached_Downloads | უკვე ჩამოტვირთული ელემენტების ხელახლა გამოყენება, თუ აქტუალურია |
Should_Monitor_Updates | მუშაობისას workshop-ის განახლებების თვალყურის დევნება |
Shutdown_Update_Detected_Timer | გაფრთხილების წამები განახლებისთვის გაჩერებამდე |
Shutdown_Update_Detected_Message | მოთამაშეებისთვის ნაჩვენები გაფრთხილება; {0} დარჩენილი დროით იცვლება |
ველები და მათი ნაგულისხმევი მნიშვნელობები რამდენიმე განახლების განმავლობაში გაიზარდა, ამიტომ შენი build-ისთვის ცნობარად ის ფაილი მიიჩნიე, რომელიც შენმა სერვერმა დააგენერირა. ის ველები, რომლებსაც შეეხები, File_IDs და განახლების ველებია.
workshop-ის ID არის რიცხვი ელემენტის Steam-ის გვერდის მისამართის ბოლოს, ?id=-ის შემდეგ. ეს რიცხვია და არა სახელი, და JSON მას ბრჭყალების გარეშე ელის. გამოტოვებული მძიმე ID-ებს შორის, ან ზედმეტი მძიმე ბოლოს შემდეგ, ფაილს არავალიდურს ხდის; სერვერი მაშინ ან უგულებელყოფს მას, ან ვერ ეშვება, და კონსოლი წერს, რომელი. SFTP და ფაილების მენეჯერი მის რედაქტირებას ფარავს, ხოლო ბრაუზერში ჩაშენებული რედაქტორი სინტაქსის ფერადი გამოყოფით ზედმეტი მძიმის შემჩნევას გადატვირთვამდე აადვილებს.
რუკები: ID და სახელი#
workshop-ის რუკას ორი რამ სჭირდება: მისი ID File_IDs-ში და მისი სახელი Commands.dat-ში.
Map Example Islandსახელი რუკის შიდა სახელია - რუკის საქაღალდის სახელი workshop-ის ელემენტის შიგნით - და არა აუცილებლად სათაური მის workshop-ის გვერდზე. რუკების ავტორების უმეტესობა გვერდზე ზუსტ სახელს უთითებს. თუ არ უთითებენ, ჩაიხედე ჩამოტვირთულ ელემენტში, მას შემდეგ რაც სერვერი მას ჩამოიტანს: რუკის საქაღალდის სახელი ის მნიშვნელობაა, რომელიც გჭირდება.
თუ სერვერი ვერ პოულობს დასახელებულ რუკას, ის არ ვარდება. ის ტვირთავს PEI-ს, პატარა ნაგულისხმევ რუკას, და ჩვეულებრივ ეშვება. სერვერს, რომელიც რუკის დამატების შემდეგ მაინც PEI-ზე ეშვება, სამიდან ერთ-ერთი პრობლემა აქვს: სახელი ზუსტად არ ემთხვევა, workshop-ის ელემენტი არ ჩამოიტვირთა (ჩატვირთვისას კონსოლში ჩამოტვირთვა შეამოწმე), ან რუკა File_IDs-ს დაემატა, მაგრამ სერვერი არ გადაიტვირთა.
ოფიციალური რუკები - მათ შორის PEI, Washington, Russia და Yukon - თამაშს მოყვება და workshop-ის ჩანაწერი არ სჭირდება. curated რუკები, საზოგადოების რუკები, რომლებიც თამაშის შიგნით არის გამორჩეული, workshop-ზეა ჰოსტირებული. სერვერის ბოლო build-ებს შეუძლიათ curated რუკის სახელით პოვნა, მაგრამ მისი workshop ID-ის File_IDs-ში დამატება საიმედო გზაა, რომ დარწმუნდე, რომ სერვერს ის აქვს.
ერთდროულად მხოლოდ ერთი რუკა მუშაობს. Map-ის შეცვლა სხვა სამყაროს გაძლევს საკუთარი save-ით; ძველი რუკის save დისკზე საკუთარი სახელით რჩება, ასე რომ მოგვიანებით უკან გადართვა მასთან დაგაბრუნებს.
asset pack-ები და დამოკიდებულებები#
ბევრი დიდი რუკა ერთი workshop-ის ელემენტი არ არის. ისინი მოდის როგორც რუკის ელემენტი პლუს ერთი ან მეტი asset pack: შენობები, დეკორაციები, ტრანსპორტი და ნივთები, რომლებსაც რუკა იყენებს, ცალკე გამოქვეყნებული, რომ მათი განახლება ან რუკებს შორის გაზიარება შეიძლებოდეს.
თუ სერვერს ან მოთამაშეს asset pack აკლია, რუკა ამ ობიექტების გარეშე იტვირთება. მოთამაშეები სამყაროში ხარვეზებს ხედავენ, მოტივტივე წითელ შეცდომის ტექსტს იქ, სადაც ობიექტები უნდა იყოს, ან შემოსვლისას გაგდებას, როცა სერვერი და კლიენტი ვერ თანხმდებიან, რა არსებობს.
ამას ორი მექანიზმი ემსახურება.
საჭირო ელემენტები. workshop-ის ელემენტს შეუძლია ჩამოთვალოს სხვა ელემენტები, რომლებიც მას სჭირდება. როცა სერვერი მას ჩამოტვირთავს, ამ შვილებსაც ჩამოიტანს. სწორედ ამიტომ მუშაობს ბევრი რუკა მხოლოდ საკუთარი ID-ის ჩამოთვლით.
`Ignore_Children_File_IDs`. ზოგჯერ საჭირო შვილი ისეთია, რომელიც არ გინდა - მოძველებული pack, ან ისეთი, რომელსაც სხვა ვერსიით ცვლი. მისი აქ ჩამოთვლა მას გამოტოვებს.
ყველა ავტორი საჭირო ელემენტებს სწორად არ აყენებს. წაიკითხე რუკის workshop-ის გვერდზე ყველაფერი, რის გვერდით დაყენებასაც ის ამბობს, ეს ID-ები ცხადად დაამატე და ჩატვირთვისას კონსოლი შეამოწმე, რომ დარწმუნდე, რომ ყველაფერი ჩამოიტვირთა. ID-ის ჩამოთვლა, რომელიც შვილადაც ჩამოვიდოდა, ზიანს არ აყენებს.
workshop-ის კოლექციები მოთამაშეებისთვის ელემენტების ნაკრების გამოსაწერად მოსახერხებელი გზაა, მაგრამ იქცევა თუ არა კოლექციის ID სერვერზე ID-ების სიასავით, build-ებს შორის განსხვავდებოდა. ელემენტების ცალ-ცალკე ჩამოთვლა პროგნოზირებადია და ცხადს ხდის, რას უშვებს სერვერი.
კონტენტის მოდები: ნივთები, ტრანსპორტი და ID-ების პრობლემა#
კონტენტის მოდები - ახალი იარაღი, ტრანსპორტი, ტანსაცმელი, ასაშენებელი ობიექტები - ზუსტად რუკებივით ემატება: workshop ID File_IDs-ში, გადატვირთვა. სერვერი მათ assets-ს თამაშის საკუთართან ერთად ტვირთავს.
Unturned-ის მოდების ძველი პრობლემა ID-ებია. თამაშში ყოველ ნივთს, ტრანსპორტსა და ობიექტს თავის კატეგორიაში რიცხვითი ID აქვს, ძველი მოდები კი საკუთარ რიცხვებს ირჩევდნენ. ორი მოდი, რომლებიც ორივე 30000 ნივთს განსაზღვრავს, კონფლიქტშია, და ერთ-ერთი იმარჯვებს - ასე რომ მოთამაშე აჩენს, ყიდულობს ან პოულობს რაღაცას, რაც მეორე მოდს ეკუთვნის. ახალ assets-ს GUID-იც აქვს, რომელიც დიზაინით უნიკალურია, მაგრამ ბევრი პოპულარული კონტენტი ჯერ კიდევ რიცხვით ID-ებზეა დამოკიდებული, spawn-ის ცხრილები, მაღაზიები და plugin-ები კი ნივთებს ხშირად ნომრით მიმართავს.
დაცვა ძირითადად ყურადღებაა:
- ჩატვირთვისას სერვერის ლოგი წაიკითხე. assets-ის კონფლიქტები assets-ის ჩატვირთვისას იწერება. შენი მოდების სიით სუფთა ლოგის შემოწმება ყოველი დამატების შემდეგ ღირს.
- მოდები სათითაოდ დაამატე. გადატვირთე, შეამოწმე ლოგი, შეამოწმე თამაშში, შემდეგ დაამატე მომდევნო.
- ამჯობინე მოვლილი მოდები. აქტიური ავტორი შეტყობინებულ კონფლიქტებს აგვარებს; მიტოვებული - არა.
- plugin-ების კონფიგურაციები ID-ებთან შეამოწმე. kit-ები, მაღაზიები და ნადავლის plugin-ები ნივთების ID-ებს მიმართავს. როცა მოდს ამატებ ან აშორებ, ID-ები, რომლებსაც შენი plugin-ების კონფიგურაციები ასახელებს, შეიძლება ახლა სხვა რამეზე მიუთითებდეს, ან არაფერზე.
მოდები, რომლებზეც რუკაა დამოკიდებული, განსაკუთრებული შემთხვევაა: მათი მოშორება რუკას ტეხავს. მოდები, რომლებზეც არაფერია დამოკიდებული, შეიძლება მოშორდეს, მაგრამ ყველაფერი, რაც მოთამაშეებს ამ მოდიდან აქვთ, ქრება - ინვენტარებიდან, საწყობებიდან და ტრანსპორტიდან. მოშორება გამოსაცხადებელი გადაწყვეტილებაა და არა სწრაფი გამოსწორება.
განახლებები სერვერის მუშაობისას#
workshop-ის ავტორები თავიანთ ელემენტებს როცა უნდათ, მაშინ აახლებენ. საფრთხე შუალედშია: სერვერი ძველ ვერსიას უშვებს, მოთამაშე შემოდის, Steam მას ახალს აძლევს, და ორი მხარე ვერ თანხმდება. იმის მიხედვით, რა შეიცვალა, მოთამაშეს შეუსაბამობით აგდებს, ან შემოდის და შემდეგ შეცდომებს ხედავს.
Should_Monitor_Updates ჩაშენებული პასუხია. ჩართულით სერვერი თავის ელემენტებს უთვალთვალებს, და როცა რომელიმე ახლდება, მოთამაშეებს Shutdown_Update_Detected_Message-ით აფრთხილებს და Shutdown_Update_Detected_Timer წამის შემდეგ ჩერდება. შემდეგ გაშვებაზე ის განახლებას ჩამოტვირთავს, და სერვერი და მოთამაშეები ისევ თანხმდებიან.
ეს მხოლოდ მაშინ მუშაობს, თუ რაღაც სერვერს ხელახლა გაუშვებს. შეამოწმე, როგორ ექცევა შენი ჰოსტი სუფთა გასვლას: ზოგ კონფიგურაციაზე სერვერი მაშინვე ბრუნდება, სხვებზე გაშვებას ელოდება. თუ ელოდება, სერვერი, რომელიც დილის 4 საათზე მოდის განახლების გამო თავს აჩერებს, გაჩერებული რჩება, სანამ ვინმე არ შეამჩნევს. ალტერნატივებია მონიტორინგის ჩართული დატოვება და დარწმუნება, რომ ის გადაიტვირთება, ან მისი გამორთვა და განახლებების მიღება ღამის გადატვირთვით იმ საათზე, როცა არავინ თამაშობს.
RE:NODE-ზე Schedules ჩანართს შეუძლია ეს ღამის რუტინა რიგით შესასრულებელ ამოცანებად გაუშვას: say ბრძანება, რომელიც მოთამაშეებს აფრთხილებს, დაყოვნება, save, გადატვირთვა, შემდეგ backup. გადატვირთვა WorkshopDownloadConfig.json-ს ხელახლა კითხულობს და ჩართვისას ნებისმიერ განახლებულ ელემენტს ჩამოტვირთავს. გადატვირთვის განრიგები, რომლებიც ეხმარება საათის არჩევას ხსნის.
სერვერის ზომა და ჩამოტვირთვის დრო#
workshop-ის კონტენტი სერვერს მეხსიერებასა და დისკს უჯდება, მოთამაშეებს კი ჩამოტვირთვის დროს.
| კონტენტი | გავლენა მეხსიერებაზე | დისკი |
|---|---|---|
| ოფიციალური რუკა, მოდების გარეშე | საბაზისო, დაახლოებით 2 GB სერვერი | ინსტალაცია რამდენიმე GB |
| curated რუკა | მცირედან ზომიერამდე | ასობით MB |
| დიდი საზოგადოების რუკა asset pack-ებით | ზომიერიდან დიდამდე | რამდენიმე GB-მდე |
| დიდი რუკა პლუს ბევრი კონტენტის მოდი | დიდი | რამდენიმე GB |
რუკა ჩვეულებრივ ყველაზე დიდი ცალკეული ფაქტორია, რადგან დიდ რუკაზე ოფიციალურზე გაცილებით მეტი ობიექტია. კონტენტის მოდები ჯამდება, როცა ბევრია. გამართვის გზამკვლევს აქვს სრული ზომების ცხრილი მოთამაშეების რაოდენობის მიხედვით.
ჩამოტვირთვები მოთამაშეებს სერვერზე მეტად ეხება. სერვერი workshop-ის რამდენიმე გიგაბაიტი კონტენტით ნიშნავს ხანგრძლივ პირველ შემოსვლას ყოველი ახალი მოთამაშისთვის და ყველაფრის სრულ ხელახლა ჩამოტვირთვას, რაც ახლდება. სიაში მხოლოდ ის დატოვე, რასაც სერვერი რეალურად იყენებს, და სერვერის აღწერაში ჩამოსატვირთის ზომა ახსენე, რომ ახალმა მოთამაშეებმა იცოდნენ, რომ უნდა დაელოდონ. Steam Workshop-ის მოდები გამოყოფილ სერვერებზე ხსნის, როგორ მუშაობს ჩამოტვირთვები სხვადასხვა თამაშში, მათ შორის ელემენტები, რომლებიც სიიდან ამოიღეს.
პრობლემების მოგვარება#
სერვერი ყოველთვის PEI-ს ტვირთავს. Map-ის სახელი რუკის შიდა სახელს არ ემთხვევა, რუკა არ ჩამოიტვირთა, ან ცვლილების შემდეგ სერვერი არ გადაიტვირთა.
მოთამაშეები წითელ შეცდომის ტექსტს და დაკარგულ შენობებს ხედავენ. აკლია asset pack. რუკის workshop-ის გვერდზე ნახე, რა სჭირდება, და ID-ები დაამატე.
მოთამაშეებს შემოსვლისას workshop-ის ან assets-ის შეუსაბამობით აგდებს. ელემენტი განახლდა და სერვერი არ გადატვირთულა. გადატვირთე; ჩართე Should_Monitor_Updates ან ღამის გადატვირთვები დაგეგმე.
სერვერი WorkshopDownloadConfig.json-ს უგულებელყოფს. JSON არავალიდურია - ჩვეულებრივ გამოტოვებული ან ზედმეტი მძიმე - ან ფაილი სერვერის მუშაობისას დარედაქტირდა და გაჩერებისას გადაეწერა.
ნივთი არასწორ რამედ ჩნდება. ორ მოდს ერთი რიცხვითი ID აქვს. ჩატვირთვის ლოგში კონფლიქტები შეამოწმე და ერთ-ერთი მოაშორე.
პირველ შემოსვლას ძალიან დიდი დრო სჭირდება. მოთამაშეები workshop-ის სიას ტვირთავენ. გამოუყენებელი ელემენტები მოაშორე და სერვერის აღწერაში ჩამოსატვირთის ზომა მიუთითე.
plugin-ის kit ან მაღაზია არასწორ ნივთებს იძლევა. მოდის დამატების ან მოშორების შემდეგ ნივთების ID-ები შეიცვალა. განაახლე plugin-ის კონფიგურაცია.
FAQ#
მოთამაშეებს ჩემი workshop-ის რუკების გამოწერა სჭირდებათ?
არა. სერვერი შემოსვლისას თავის ელემენტების სიას აგზავნის და კლიენტი ყველაფერს Steam-იდან ავტომატურად ჩამოტვირთავს. მოთამაშეებს მხოლოდ პირველ შემოსვლაზე ჩამოტვირთვის ლოდინი სჭირდებათ.
სად ვიპოვო რუკის შიდა სახელი?
რუკის workshop-ის გვერდზე, სადაც ავტორების უმეტესობა მას უთითებს. სხვა შემთხვევაში სერვერზე ჩამოტვირთული workshop-ის ელემენტის შიგნით საქაღალდის სახელს შეხედე. ეს საქაღალდის სახელი არის ის, რაც Commands.dat-ში Map-ის შემდეგ იწერება.
შემიძლია მოდების დამატება გადატვირთვის გარეშე?
არა. WorkshopDownloadConfig.json ჩატვირთვისას იკითხება. დაამატე ID, შემდეგ გადატვირთე, სასურველია მშვიდ საათზე.
რატომ იტვირთება ჩემი რუკა შენობების გარეშე?
ის დამოკიდებულია asset pack-ზე, რომელიც სერვერს ან მოთამაშეს არ აქვს. დაამატე File_IDs-ში ყველა ელემენტი, რომელიც რუკის გვერდის თანახმად სჭირდება, გადატვირთე და ჩატვირთვის ლოგი შეამოწმე.
შემიძლია ფაილში workshop-ის კოლექციის ID ჩავწერო?
ცალკეული ელემენტების ID-ების ჩამოთვლა საიმედო მეთოდია. კოლექციების ქცევა სერვერზე build-ებს შორის განსხვავდებოდა, ცხადი სია კი ნათელს ხდის, რას უშვებ.
რა ემართება მოთამაშეების ნივთებს, თუ მოდს მოვაშორებ?
ყველაფერი, რაც ამ მოდიდან მოვიდა, ქრება ინვენტარებიდან, საწყობებიდან და ტრანსპორტიდან. გამოაცხადე მოშორებები და ცვლილებამდელი backup შეინახე, თუ მისი გაუქმება დაგჭირდება.




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