RE:NODE

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

Steam Workshop მოდები dedicated სერვერებზე, ახსნილი

როგორ აღწევს Workshop-ის კონტენტი სერვერსა და მოთამაშეებამდე: ნივთის id-ები, SteamCMD ჩამოტვირთვები, კოლექციები, თითოეული თამაშის გასაღებები, განახლებით გამოწვეული ავარიები, დისკის ფასი და ნდობა.

0 მკითხველი

ყველა თამაში Workshop-ის კონტენტს სხვანაირად ამუშავებს, მაგრამ წარუმატებლობები ერთი და იგივე ხუთია, უბრალოდ სხვადასხვა თანმიმდევრობით: სერვერს აქვს ნივთი, რომელიც კლიენტს არა აქვს; კლიენტს უფრო ახალი ვერსია აქვს, ვიდრე სერვერს; აუცილებელი დამოკიდებულება არავის ჩაუწერია; ავტორმა გამოაქვეყნა განახლება, რომელიც არავის უთხოვია; ან პირველ ჩატვირთვაზე დისკი გაივსო ოთხგიგაბაიტიანი ჩამოტვირთვის შუაში. იმის გაგება, თუ რა დგას ამათ ქვეშ - რა არის ნივთის id, სად დებს SteamCMD ფაილებს, ვინ ეუბნება მოთამაშეს, რა ჩამოტვირთოს - ამ ხუთივეს გარდაქმნის საკითხებად, რომლებსაც ერთ წუთში დიაგნოსტიკა შეგიძლია და არა მთელი შუადღის განმავლობაში.

რა არის სინამდვილეში Workshop-ის ნივთი#

Workshop-ის ნივთი არის გამოქვეყნებული ფაილი რიცხვითი id-ით, და ეს რიცხვი ერთადერთი იდენტიფიკატორია, რომელსაც მნიშვნელობა აქვს. ის არის ციფრები URL-ში ?id=-ის შემდეგ:

code
https://steamcommunity.com/sharedfiles/filedetails/?id=1753134636                                                       ^^^^^^^^^^

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

ნივთის მოძიება API გასაღების გარეშეა შესაძლებელი, რაც ნამდვილად სასარგებლო ჩვევაა, სანამ სერვერზე რამეს დაამატებ:

bash
$ curl -s -X POST \    https://api.steampowered.com/ISteamRemoteStorage/GetPublishedFileDetails/v1/ \    -d 'itemcount=1&publishedfileids[0]=1753134636'

პასუხი შეიცავს სათაურს, consumer_app_id-ს, file_size-სა და time_updated-ს. ამ id-ისთვის ეს არის Hawaii რუკა Unturned-ისთვის, app 304930, დაახლოებით 300 MB, ბოლოს განახლებული დროის ნიშნულით, რომლის შედარებაც შეგიძლია სერვერის ასლთან. ამ ოთხი ველიდან ორი პასუხობს კითხვებს, რომლებსაც ხალხი ჩვეულებრივ ხვდება: საერთოდ სწორი თამაშისთვის არის ეს ნივთი, და რამდენ დისკს დავხარჯავ.

ოთხი გზა, რომლითაც კონტენტი სერვერზე ხვდება#

მხოლოდ ოთხია, და იმის ცოდნა, რომელს იყენებს შენი თამაში, გეუბნება, სად ეძებო, როცა რამე აკლია.

  1. სერვერი ჩამოტვირთავს მას ჩატვირთვისას საკუთარი კონფიგურაციის სიიდან. id-ებს ფაილში წერ, სერვერი გაშვებისას ჩამოიტანს. ასე მუშაობს Unturned, Project Zomboid, Killing Floor 2 და Garry's Mod. ყველაზე მარტივია და დროზე ყველაზე ნაკლებ კონტროლს გაძლევს.
  2. შენ ჩამოტვირთავ SteamCMD-ით და თავად ათავსებ. Arma 3, DayZ, Squad და Left 4 Dead 2 ამას ელოდება. ყველაზე მეტი კონტროლი, ყველაზე მეტი სამუშაო, და გზა, რომელსაც Steam ანგარიში სჭირდება, რომელსაც თამაში ჰყავს.
  3. ფაილებს ხელით ტვირთავ. ნივთი სერვერის მხარეს Steam-ს არასოდეს ეხება. ეს მუშაობს და კლიენტის მხარეს ტეხავს, რადგან სერვერს არ აქვს id, რომ გამოაცხადოს.
  4. თამაში საერთოდ არ იყენებს Steam Workshop-ს. Insurgency: Sandstorm იყენებს mod.io-ს. ARK: Survival Ascended იყენებს CurseForge-ს. Minecraft არცერთს. ამის ცოდნა საათს გიზოგავს, რომელსაც Workshop-ის გვერდის ძიებაში დახარჯავდი, რომელიც არ არსებობს.
თამაშიროგორ იღებს სერვერი ნივთებსსად მიდის id-ები
Unturnedჩამოტვირთავს ჩატვირთვისასFile_IDs ფაილში WorkshopDownloadConfig.json
Project Zomboidჩამოტვირთავს ჩატვირთვისასWorkshopItems= და Mods= ფაილში <server>.ini
Killing Floor 2ჩამოტვირთავს ჩატვირთვისასServerSubscribedWorkshopItems= ფაილში KFEngine.ini
Garry's Modკოლექციას ამაგრებს გაშვებისას+host_workshop_collection და -authkey
ARK: Survival Evolvedსერვერი თავად მართავს-automanagedmods და ActiveMods=
Left 4 Dead 2SteamCMD, შემდეგ addons/workshop_download_item 550 <id>
Arma 3SteamCMD, მფლობელი ანგარიშიworkshop_download_item 107410 <id>, შემდეგ -mod=
DayZSteamCMD, მფლობელი ანგარიშიworkshop_download_item 221100 <id>, შემდეგ -mod=
SquadSteamCMDworkshop_download_item 393380 <id>

დაიმახსოვრე app id-ები ბოლო სვეტში. Workshop-ის კონტენტი ეკუთვნის თამაშს და არა dedicated server-ის ინსტრუმენტს, ამიტომ 107410 არის Arma 3 და არა 233780, რომლითაც სერვერი დააყენე. ეს იგივე განსხვავებაა, რომელიც Steam-ის სერვერის შესვლის ტოკენების შექმნისას ხალხს იჭერს, და იმავე მიზეზით.

ნივთების ჩამოტვირთვა SteamCMD-ით#

ბრძანება იღებს თამაშის app id-ს და ერთ ნივთის id-ს:

bash
$ ./steamcmd.sh +force_install_dir /srv/arma3 \    +login myspareaccount \    +workshop_download_item 107410 463939057 \    +quit

ნივთი ინსტალაციის დირექტორიის შიგნით წინასწარ გასაგებ ადგილას ხვდება:

code
/srv/arma3/steamapps/workshop/  appworkshop_107410.acf              what was fetched, and when  content/107410/463939057/           the item itself

appworkshop_<appid>.acf მანიფესტია. როცა ნივთი Steam-ზე განახლდა და შენი სერვერი ჯიუტად ძველ ასლს ინახავს, ამ ფაილის წაშლა სტანდარტული გამოსავალია: შემდეგ ჩამოტვირთვას შესადარებელი ჩანაწერი არ აქვს და ყველაფერს თავიდან ჩამოიტანს.

სამი რამ ამ ბრძანების შესახებ ღირს ცოდნად, სანამ სკრიპტში ჩასვამ. ანონიმური შესვლა ზოგ თამაშზე მუშაობს და ზოგზე არა, ხოლო თამაშები, რომელთა სერვერის ინსტრუმენტებს მფლობელი ანგარიში სჭირდება, აქაც თითქმის ყოველთვის მას მოითხოვს - შეცდომა ორივე შემთხვევაში No subscription-ია. დიდი ნივთები საკმაოდ ხშირად timeout-ს იღებს და მეორე მცდელობაზე გადის, ამიტომ retry სკრიპტში პარანოია არ არის. და ჩამოტვირთვა საქმის მხოლოდ ნახევარია: Arma 3-სა და DayZ-ს შემდეგ სჭირდება, რომ საქაღალდე სერვერის root-ში @ModName-ად გადაერქვას ან symlink-ით მიება, და ყოველი მოდის .bikey სერვერის keys/ საქაღალდეში დაკოპირდეს, თორემ კლიენტები ხელმოუწერელი addon-ის გამო უარყოფილია. SteamCMD ახსნილი შემომფარგლავ არგუმენტებს აღწერს, ხოლო DayZ სერვერი და მოდები ამ თამაშის სრულ თანმიმდევრობას შეიცავს.

კოლექციები და რასაც SteamCMD მათთან ვერ აკეთებს#

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

SteamCMD კოლექციას ვერ შლის. workshop_download_item ესმის ერთეული ნივთის id-ები და არაფერი სხვა. ამის გვერდის ავლის ორი გზა არსებობს. ზოგი თამაში კოლექციებს თავად შლის - Garry's Mod-ის +host_workshop_collection იღებს კოლექციის id-ს და მის შიგთავსს ჩამოიტანს, რაც აღწერილია Garry's Mod-ის Workshop addon-ებსა და FastDL-ში. ყველაფრისთვის დანარჩენისთვის ჰკითხე Steam-ს:

bash
$ curl -s -X POST \    https://api.steampowered.com/ISteamRemoteStorage/GetCollectionDetails/v1/ \    -d 'collectioncount=1&publishedfileids[0]=2521187158'

პასუხი შეიცავს children მასივს, ერთ ჩანაწერს თითო ნივთზე, თითოეულს საკუთარი publishedfileid-ით. API გასაღები არ არის საჭირო. ეს შედეგი შენს კონფიგურაციის ფაილში ჩასვი და კოლექცია გაშლილია.

უნდა თუ არა ამის გაკეთება, ცალკე კითხვაა. კოლექცია, რომელიც შენი არ არის, სხვისი კონტროლირებადი მოდების სიაა. თუ მფლობელი ნივთს დაამატებს, შენი სერვერი მას შემდეგ restart-ზე აიღებს; თუ ამოიღებს, სერვერი დაკარგავს. სერვერისთვის, რომელსაც მნიშვნელობა აქვს, წაიკითხე კოლექცია ერთხელ და დააფიქსირე ცალკეული id-ები. სერვერისთვის, რომელსაც შენ და მეგობრები ხუთშაბათობით უშვებთ, მოხერხებულობა იმარჯვებს.

დამოკიდებულებები კოლექციის მსგავსი მეორე პრობლემაა. ბევრი ნივთი თავის Workshop გვერდზე აუცილებელ ნივთებს ჩამოთვლის, და არც SteamCMD და არც თამაშების უმეტესობა მათ შენთვის არ წყვეტს. Project Zomboid-ში საერთო ბიბლიოთეკას WorkshopItems-ში საკუთარი ნომერი სჭირდება და Mods-ში საკუთარი სახელი, რაც ორი განსხვავებული სტრიქონია ორი განსხვავებული ადგილიდან - Project Zomboid-ის მოდები და Workshop ამას სათანადოდ შლის. Unturned-ში საზოგადოების რუკა ხშირად რელიეფის ნივთი პლუს asset პაკეტია, და მხოლოდ რელიეფის ჩამოთვლა მოთამაშეებს აძლევს სამყაროს წითელი შეცდომის ტექსტით იქ, სადაც ობიექტები უნდა იყოს.

როგორ აღწევს კონტენტი მოთამაშეს#

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

updateids from your configrequired id list on joinautomatic downloadplayer subscribesMod authorpublishes a new versionSteam WorkshopYour serverpinned copySubscribe by handor a game launcherPlayer's game
ორი გზა, რომლითაც workshop ნივთი მოთამაშემდე მიდის

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

  • Steam თავად უშვებს. Unturned და Project Zomboid კლიენტებს სერვერის აუცილებელი ნივთები დაკავშირებისას ეცნობებათ და ისინი მოთამაშის ჩარევის გარეშე ჩამოიტვირთება. ეს საუკეთესო შემთხვევაა, და სწორედ ამიტომ ტეხავს ამ სერვერებზე ფაილების ხელით ატვირთვა: სერვერს არ აქვს id, რომ გამოაცხადოს.
  • მოთამაშემ თავად უნდა გამოიწეროს. Left 4 Dead 2 მკვეთრი მაგალითია. სერვერს არ შეუძლია კამპანიის მიცემა მოთამაშისთვის, რომელსაც ის არა აქვს, და VPK კამპანიისთვის სწრაფი ჩამოტვირთვის გზა არ არსებობს. ყველა გამოიწერს, ან არავინ ითამაშებს.
  • ლაუნჩერი აკეთებს მათ მაგივრად. DayZ-ის მოთამაშეები იყენებენ DayZ Launcher-ს, რომელიც კითხულობს მოდების სიას, რომელსაც სერვერი აცხადებს, გამოიწერს მას და აწყობს შესაბამის ბრძანების ხაზს. სწორედ ამიტომ უნდა იყოს მოდების რიგი და გასაღებები სერვერზე სწორი: ლაუნჩერი კლიენტის მხარეს ავტომატიზებს და ხმამაღლა ვარდება, როცა ორივე არ ემთხვევა.
  • სერვერი მას თავისთვის ინახავს. მხოლოდ სერვერის კონტენტი - ადმინ ინსტრუმენტები, loot spawner-ები, ლოგირება - ცალკე სიაში მიდის: -serverMod= Arma 3-ში, -servermod= DayZ-ში. მხოლოდ სერვერის მოდი კლიენტის სიაში ჩააგდე და ყოველი შემოსული მოთამაშე ჩამოტვირთავს იმას, რაც არასოდეს გამოადგება.

ამ ოთხიდან გამომდინარე წესი: ყოველი ნივთისთვის გადაწყვიტე, სჭირდება თუ არა კლიენტს, და ჩააგდე სწორ სიაში. „მოთამაშეები შესვლისას იგდებიან" ანგარიშების უმეტესობა ერთი ნივთია არასწორ სიაში.

განახლებები, ვერსიები და სესიის შუაში მომხდარი ავარია#

Workshop-ის ავტორები აქვეყნებენ, როცა უნდათ. არავინ გეკითხება, და უმეტეს თამაშში არაფერი გეუბნება.

რა მოხდება ამის შემდეგ, იმაზეა დამოკიდებული, ვინ განახლდა ჯერ. კლიენტი Steam-ით ავტომატურად ახლდება; სერვერს კი ის ასლი აქვს, რომელიც ბოლოს ჩამოიტვირთა. როცა ორივე განსხვავდება, ზოგი თამაში მოთამაშეს ვერსიის შეცდომით აგდებს და ზოგი შეუშვებს და ჩუმად desync-ს იწვევს, რაც უარესია. რამდენიმე თამაში ამას განზრახ ამუშავებს: Unturned მასპინძლის რუკაზე ცვლილებებს აკვირდება, რადგან სერვერების ბრაუზერი რუკის ვერსიის ნომრებს იყენებს თავსებადობის შესამოწმებლად, სანამ მოთამაშე დაუკავშირდება, და როცა ცვლილებას აღმოაჩენს, ჩატში მოთამაშეებს აფრთხილებს და ტაიმერის შემდეგ სერვერს თიშავს, რომ restart-მა ახალი ვერსია აიღოს.

ორი ჩვევა უმეტეს ამას აგარიდებს:

  1. დააფიქსირე სია და განაახლე ის განზრახ. აიღე ცალკეული ნივთის id-ები და არა ვინმეს კოლექცია, და შეცვალე ისინი, როცა შენ გადაწყვეტ, სასურველია გამოცხადებულ restart-თან ერთად.
  2. შეინახე მომუშავე კონტენტის ასლი. განახლებამდე დააკოპირე steamapps/workshop/content/<appid>/ ხე, ან გააკეთე backup. ეს ასევე ერთადერთი დაცვაა იმისგან, რომ ავტორმა ნივთი, რომელზეც დამოკიდებული ხარ, დამალოს ან წაშალოს - როცა ის Workshop-იდან გაქრება, ახალი მოთამაშე ვეღარ ჩამოიტანს და შენს სერვერსაც შეიძლება ვეღარ ჩამოეტვირთოს. backup, რომელიც არავის აღუდგენია, ჰიპოთეზაა, და ეს არის მთელი არგუმენტი პოსტისა backup-ები, რომლებიც მართლა აღდგება.

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

დისკი, ჩატვირთვის დრო და პირველი გაშვების timeout-ები#

Workshop-ის კონტენტი პატარა არ არის და ცხოვრობს იმავე volume-ზე, რაზეც სერვერი. ერთი დიდი Unturned რუკა რამდენიმე ასეული მეგაბაიტია; Arma 3-ის მოდების ნაკრები ACE-ით, CBA-თი და RHS პაკეტით ათეულობით გიგაბაიტია; Garry's Mod-ის კოლექცია, რომელიც არავის გაუწმენდია, იმდენი, რამდენადაც 2019 წლიდან გაიზარდა.

აქედან სამი შედეგი გამომდინარეობს.

პირველი ჩატვირთვა ნელია და crash-ს ჰგავს. სერვერი იწყება, რამდენიმე გიგაბაიტის ჩამოტანას იწყებს და ამ დროს ძალიან ცოტას ბეჭდავს. თუ supervisor-ს ან პანელს გაშვების timeout აქვს, მას შეუძლია პროცესი ჩამოტვირთვის შუაში მოკლას, რაც მას თავიდან უშვებს, რაც ჩამოტვირთვას თავიდან იწყებს. თუ სერვერი მოდების დამატების შემდეგ პირველ გაშვებაზე crash-loop-ში ჩანს, სანამ რამეს შეცვლი, უყურე კონსოლს - ჩამოტვირთვა ჩვეულებრივ ისევ მიდის. რატომ ირესტარტება შენი გეიმ სერვერი მუდმივად გვასწავლის, როგორ განვასხვაოთ ნამდვილი restart loop ამისგან.

ნივთის ამოღება დისკს არ ათავისუფლებს. id სიიდან ამოიღე და ფაილები განუსაზღვრელი ხნით იქვე რჩება. steamapps/workshop/content/<appid>/-ის დროდადრო გასუფთავება, ან თამაშის საკუთარი cache საქაღალდისა, 20 GB გეგმაზე ნამდვილი საყოფაცხოვრებო საქმეა.

განახლებებს სივრცე სჭირდება. SteamCMD ჩამოტვირთვებს იმავე volume-ზე ამზადებს, რომელსაც ანახლებს, ამიტომ დატოვე 20-30 პროცენტი თავისუფალი. დისკი, რომელიც ზუსტად კონტენტს ეტევა, დისკია, რომლის შემდეგი განახლებაც ჩავარდება.

RE:NODE-ზე ყოველი გეგმა თავის დისკს ასახელებს, და პანელი დისკს ამ ლიმიტთან ერთად გრაფიკზე ასახავს მეხსიერებასა და CPU-სთან ერთად, ამიტომ მოდების სია, რომელიც volume-ს ჩუმად ჭამს, ჩანს მანამ, სანამ გათიშვად იქცევა. მოდებს და პლაგინებს შენ ტვირთავ file manager-ით ან SFTP-ით, ან მათ თამაშის საკუთარი Workshop მხარდაჭერა იღებს - დაშვებული მოდების სია არ არსებობს.

Workshop-ის ნივთი არის კოდი, რომელიც შენ არ დაგიწერია#

რუკებისა და ტექსტურებისთვის ეს განყოფილება არ ეხება. Workshop-ის კონტენტის დიდი ნაწილისთვის ძალიან ეხება. Garry's Mod addon-ები შეიცავს Lua-ს, რომელიც შენს სერვერზე გადის. Arma 3-ის მოდები შეიცავს SQF-ს. Project Zomboid-ის მოდები შეიცავს Lua-ს. ერთის გაშვება ნიშნავს სხვისი კოდის გაშვებას შენი სერვერის უფლებებით, შენი სერვერის მონაცემებზე, შენი სერვერის იდენტობით.

ეს supply chain-ია, და supply-chain-ის ჩვეულებრივი ჰიგიენა მოქმედებს:

  • მიანიჭე უპირატესობა ნივთებს ისტორიით. ავტორი სამწლიანი changelog-ითა და issue tracker-ით სხვა რისკია, ვიდრე გასულ კვირას შექმნილი ანგარიში.
  • სია მოკლე შეინახე. ყოველი ნივთი განახლებაა, რომელსაც უნდა უყურო, და შესაძლო მიზეზი, როცა რამე გატყდება. თორმეტი მოდი, რომელიც შენ აირჩიე, ორმოცს სჯობს, რომელიც სხვამ შეგირჩია.
  • წაიკითხე, რა შეიცვალა. ყოველი ხაზი არა, მაგრამ changelog, სანამ განახლებას ცოცხალ სერვერზე გადმოიტან.
  • დამატებამდე backup გააკეთე. დამატება ადვილი ნაწილია; მოდი, რომელმაც ჩუმად გადაწერა შენი loot ცხრილები, არის ნაწილი, რომელსაც დაბრუნება არა აქვს.
  • გაფრთხილდი, რას აძლევ. თუ მოდს სერვერის მხარის კოდი აქვს, მას შეუძლია წაიკითხოს ყველაფერი, რასაც სერვერი კითხულობს - მათ შორის კონფიგურაციის ფაილში მდებარე შესვლის ტოკენი.

მოდიფიცირებული სერვერის სისუფთავე ოპერაციულ მხარეს უფრო ღრმად შეისწავლის. ჰოსტინგის მხარე მარტივია: ერთი container ერთ სერვერზე, CPU არის მკაცრი შეზღუდვა შეძენილ წილამდე, და მეხსიერების ლიმიტზე container ჩერდება და სუფთად გადაიტვირთება და swap-ში ყოფნა არ უწევს. მოდების სია, რომელიც გეგმას აჭარბებს, ამიტომ ჩანს განმეორებით restart-ებად და არა სერვერად, რომელიც სულ უფრო ნელდება. მაყურებელი ამ ნიმუშს ამჩნევს - საათში სამი restart სერვერის გვერდზე გაფრთხილებას ბადებს და ავტომატურად ხსნის ticket-ს - ამიტომ crash-loop-ში მყოფი მოდის შესახებ მოთამაშისგან არ გაიგებ.

პრობლემების გადაჭრა#

მოთამაშეები შესვლისას შეცდომის ეკრანზე გადაიგდება. აუცილებელი ნივთი სერვერის სიიდან აკლია. ჩვეულებრივ რუკის asset პაკეტი, ან დამოკიდებულება, რომელსაც ნივთის გვერდი ახსენებს და კონფიგურაცია - არა.

სერვერი ახალ ნივთის id-ს უგულებელყოფს. სია თითქმის ყველა თამაშში ჩატვირთვისას იკითხება. გადატვირთე.

ნივთი Steam-ზე განახლდა და სერვერს ისევ ძველი ასლი აქვს. წაშალე steamapps/workshop/appworkshop_<appid>.acf და გადატვირთე, ან წაშალე ამ ნივთის კონტენტის საქაღალდე.

`workshop_download_item` წყდება `No subscription`-ით. ამ თამაშის Workshop-ისთვის ანონიმური შესვლა არ მიიღება. გამოიყენე ანგარიში, რომელსაც თამაში ჰყავს.

`workshop_download_item` წყდება timeout-ით. დიდ ნივთებზე გავრცელებულია. გაუშვი ისევ; მეორე მცდელობა ჩვეულებრივ სრულდება.

მოდი დისკზეა და თამაში ისე იქცევა, თითქოს არ არის. ჩამოტვირთვისა და ჩატვირთვის ნაბიჯები უმეტეს თამაშში ცალკეა. Project Zomboid-ს სჭირდება რიცხვი WorkshopItems-ში და სახელი Mods-ში; Arma 3-ს სჭირდება საქაღალდე -mod=-ში; Garry's Mod-ს სჭირდება ის კოლექციაში, რომელსაც სერვერი ამაგრებს, და არა მხოლოდ კლიენტის ჩამოტვირთვის სიაში.

კოლექცია შეიცვალა და სერვერიც მასთან ერთად შეიცვალა. ასეთია კოლექციები. თუ ეს არ გინდოდა, დააფიქსირე ცალკეული id-ები.

მოთამაშეები ჩამოტვირთავენ მოდს, რომელიც ვერ გამოიყენონ. მხოლოდ სერვერის მოდი კლიენტის სიაშია. გადაიტანე -serverMod=-ში ან ექვივალენტში.

FAQ#

სად ხვდება Workshop-ის ფაილები სერვერზე?

ინსტალაციის დირექტორიის ქვეშ, steamapps/workshop/content/<gameappid>/<itemid>/-ში, მანიფესტით steamapps/workshop/appworkshop_<gameappid>.acf-ზე. თამაშები, რომლებიც კონტენტს თავად ამაგრებენ, ხშირად მას შემდეგ საკუთარ ადგილას აკოპირებენ ან cache-ში ინახავენ, მაგალითად Garry's Mod-ის garrysmod/cache/workshop/.

შეუძლია SteamCMD-ს მთელი კოლექციის ჩამოტვირთვა?

არა. ის მხოლოდ ცალკეული ნივთის id-ებს ესმის. ან თამაში თავად შლის კოლექციას, როგორც Garry's Mod, ან შენ შლი მას საჯარო GetCollectionDetails web API-თი და მიღებულ id-ებს კონფიგურაციაში წერ.

უნდა გამოიწერონ მოთამაშეებმა მოდები, რომლებსაც ჩემი სერვერი იყენებს?

ეს მთლიანად თამაშზეა დამოკიდებული. Unturned და Project Zomboid სიას კლიენტებს შესვლისას ავტომატურად უგზავნის. Left 4 Dead 2 - არა, და ყველა მოთამაშემ თავად უნდა გამოიწეროს. DayZ-ის მოთამაშეებს DayZ Launcher ემსახურება. სანამ შესვლის ინსტრუქციებს დაწერ, შეამოწმე, რომელ მოდელს იყენებს შენი თამაში.

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

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

რომელი app id გამოვიყენო Workshop ჩამოტვირთვებისთვის?

თამაშისა და არა dedicated server-ის ინსტრუმენტისა. Arma 3-ის კონტენტი 107410-ია, თუმცა სერვერი 233780-იდან ინსტალირდება; Left 4 Dead 2-ის კონტენტი 550-ია, თუმცა სერვერი 222860-იდან ინსტალირდება.

რამდენი დისკი დავუტოვო მოდებს?

კონტენტზე მეტი, რადგან განახლებები იმავე volume-ზე მზადდება. შეამოწმე თითოეული ნივთის file_size საჯარო API-ით, სანამ გადაწყვეტ, დაამატე 20-30 პროცენტი სივრცე და გაასუფთავე ამოღებული ნივთების კონტენტი, რადგან ამას შენ მაგივრად არავინ წაშლის.


კომენტარები

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

0/2000