RE:NODE

სახელმძღვანელოები11 წუთის საკითხავი

Garry's Mod Workshop addon-ები და FastDL ახსნილი

როგორ აღწევს Garry's Mod-ის addon-ები მოთამაშეებს: workshop-ის კოლექციები, resource.AddWorkshop, resource.AddFile და FastDL ჰოსტის მოწყობა, რომელიც მართლა მუშაობს.

0 მკითხველი

Garry's Mod-ს ორი სრულიად ცალკე კონტენტის სისტემა აქვს და თითქმის ყველა "ჩემი მოთამაშეები ERROR ნიშნებს ხედავენ" პრობლემა მათ აღრევიდან მოდის. ერთი არის ის, რასაც სერვერი ტვირთავს და უშვებს: addon-ები garrysmod/addons/-ში, ან workshop-ის კოლექცია, რომელიც გაშვებისას მიემაგრება. მეორე არის ის, რასაც კლიენტები ჩამოტვირთავენ, სანამ რამეს დაინახავენ: workshop-ის ნივთები, რომლებსაც Steam მათთვის იღებს, და ცალკეული ფაილები, რომლებიც HTTP-ით FastDL ჰოსტიდან მოდის. addon-ის სერვერზე მიმაგრება მოთამაშეებს მას არ აძლევს, და მოთამაშეებისთვის რაღაცის ჩამოტვირთვის თქმა არ აიძულებს სერვერს მისი გაშვება. როცა ეს ნათელია, დანარჩენი მექანიკაა.

რას უშვებს სერვერი#

სერვერი კონტენტს პრაქტიკაში სამი ადგილიდან ტვირთავს:

  • საქაღალდეები `garrysmod/addons/`-ში. ძველი ტიპის addon არის საქაღალდე, რომელიც ჩვეულებრივ დირექტორიებს შეიცავს - lua/, models/, materials/, sound/, maps/, resource/ - და მიმაგრდება ისე, თითქოს ეს ფაილები თავად garrysmod/-ში იყოს.
  • `.gma` ფაილები `garrysmod/addons/`-ში. შეფუთული ფორმატი. იგივე შედეგი, ხის ნაცვლად ერთი ფაილი. gmad ინსტრუმენტი სერვერის bin/ საქაღალდეში ხსნის ერთს, თუ შიგნით ჩახედვა ან მისი ფაილების სხვაგვარად მიწოდება გჭირდება.
  • Workshop-ის კოლექცია, რომელიც გაშვებისას მიემაგრება +host_workshop_collection გაშვების პარამეტრით. ნივთები garrysmod/cache/workshop/-ში ჩამოიტვირთება როგორც .gma ფაილები და იქიდან მიემაგრება.

ყველაფერი, რაც თავად სერვერს გასაშვებად სჭირდება - ადმინ mod-ები, შენი გეიმმოდი, სერვერის მხარის სკრიპტები - addons/-ში ეკუთვნის, ხელით დაყენებული. ნუ ჩადებ მათ კლიენტის კოლექციაში: ადმინ mod-ის UI-ს უმიზეზოდ გადაუგზავნი ყველა მოთამაშეს, ვინც შემოდის. DarkRP სერვერის გზამკვლევში იგივე გაყოფაა გეიმმოდის მხრიდან.

ყოველი ფაილის გზა პატარა ასოებით უნდა იყოს. Garry's Mod Linux-ზე რეგისტრზე მგრძნობიარეა, და addon, რომელიც Materials/Models/Thing.vmt-ს აწვდის, Windows-ის სატესტო სერვერზე მუშაობს და ნამდვილზე იისფერ-შავ კვადრატებს იძლევა. ეს არის კონტენტის, რომელიც "ჩემთან მუშაობს", ყველაზე გავრცელებული მიზეზი.

Workshop-ის კოლექციები#

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

  1. შექმენი კოლექცია Garry's Mod-ის Steam Workshop-ზე, დაამატე addon-ები, რომლებიც ყველა მოთამაშეს სჭირდება, და დააყენე Public.
  2. აიღე ID URL-იდან - რიცხვი ?id=-ის შემდეგ.
  3. დაამატე +host_workshop_collection 2519472571 გაშვების პარამეტრებში, ან ჩასვი Startup tab-ის ველში, რომელსაც შენი პანელი გთავაზობს.

გაშვებისას სერვერი იღებს კოლექციის ნივთების სიას, ჩამოტვირთავს ყველაფერს, რაც ჯერ არ აქვს, და მიამაგრებს. შემოსულ კლიენტებს ეუბნებიან, რომ იგივე ნივთები ჩამოტვირთონ, და Steam ამას მათ ნაცვლად აკეთებს - შენი გამტარუნარიანობიდან კი არა, მათი Steam workshop-ის cache-ში, სადაც შემდეგისთვის რჩება.

კოლექციის შიგთავსის წასაკითხად Steam Web API გასაღები გჭირდება, რომელიც ბრძანების ხაზზე -authkey-ით გადაეცემა. ამას Steam-ის დეველოპერის გვერდზე ქმნი საკუთარი ანგარიშით. თუ კონსოლი იტყობინება, რომ კოლექციის მიღება ვერ მოხერხდა, პირველი, რაც უნდა შეამოწმო, ეს გასაღებია, ხოლო Garry's Mod-ის wiki ადგილია მიმდინარე მოთხოვნის დასადასტურებლად, რადგან ეს წლების განმავლობაში შეიცვალა.

bash
$ ./srcds_run -game garrysmod -console -port 27015 \    -authkey XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \    +host_workshop_collection 2519472571 \    +gamemode darkrp +map rp_downtown_v4c_v2 +maxplayers 40

რაში არის კოლექცია კარგი: განახლებებში. როცა addon-ის ავტორი შესწორებას აქვეყნებს, სერვერი მას შემდეგ restart-ზე იღებს და ყოველი კლიენტის Steam ერთვება. ხელით ატვირთული addon-ები ამას არ აკეთებენ, და სერვერი და კლიენტი, რომლებიც არ თანხმდებიან, addon-ის რომელი ვერსიაა დაყენებული, არის გზა შეცდომებისკენ, რომლებსაც ვერავინ იმეორებს.

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

სერვერის ასლიც გროვდება. თუ ნივთს კოლექციიდან ამოიღებ, მისი .gma garrysmod/cache/workshop/-ში სამუდამოდ რჩება. 10 ან 20 GB დისკის გეგმაზე ეს პერიოდულად გასაწმენდად ღირს; წაშალე cache-ის საქაღალდე და სერვერი მხოლოდ იმას ჩამოტვირთავს თავიდან, რასაც კოლექცია ახლა ჩამოთვლის.

resource.AddWorkshop, უფრო ზუსტი კონტროლისთვის#

host_workshop_collection ან ყველაფერია, ან არაფერი. როცა გინდა, რომ კონკრეტული addon კლიენტებმა ჩამოტვირთონ და სერვერის მიმაგრებულ კოლექციას არ დაუკავშირო - ან სია Steam-ის გვერდზე კი არა, ვერსიების კონტროლში გინდა - გამოიყენე resource.AddWorkshop სერვერის autorun ფაილში:

garrysmod/lua/autorun/server/workshop.lua
resource.AddWorkshop("104815552")   -- map packresource.AddWorkshop("2151453461")  -- shared propsresource.AddWorkshop("180530595")   -- weapon base

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

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

ორივე მიდგომა შეიძლება თანაარსებობდეს. გავრცელებული წყობა დიდ სერვერზე არის პატარა კოლექცია იმისთვის, რასაც სერვერი მართლა ამაგრებს, და resource.AddWorkshop სია კლიენტის მხარის კონტენტისთვის, დანარჩენ კონფიგურაციასთან ერთად ფაილში შენახული. Workshop-ის კონტენტის ზოგადი მექანიკა dedicated სერვერებზე, ყველა თამაშისთვის, არის Steam Workshop mod-ები dedicated სერვერებზე.

ცალკეული ფაილები და მათი გაგზავნის ნელი გზა#

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

garrysmod/lua/autorun/server/resources.lua
resource.AddFile("maps/rp_yourmap_v2.bsp")resource.AddFile("materials/logo/banner.vmt")resource.AddFile("materials/logo/banner.vtf")resource.AddSingleFile("sound/ambient/radio_loop.wav")

გზები garrysmod/-ის მიმართ არის. resource.AddFile .mdl-ზე მოდელის თანმხლებ ფაილებსაც რიგში აყენებს; resource.AddSingleFile ამატებს ზუსტად ერთ ფაილს და სხვას არაფერს.

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

ეს არის პრობლემა, რომელსაც FastDL წყვეტს.

საჭირო კონტენტის სიაworkshop addon-ებიფაილები და რუკებიშედის თამაშშიGame serverაგზავნის რესურსების სიასSteam Workshopკოლექციის ნივთებიFastDL hostHTTP, .bz2Playerშემოდის
საიდან იღებს შემოსული მოთამაშე თითოეულ კონტენტს

FastDL-ის მოწყობა#

FastDL უბრალოდ web სერვერია. კონტენტის ასლს დებ დირექტორიაში, რომელიც garrysmod/-ს იმეორებს, და თამაშის სერვერს ეუბნები, სად არის:

garrysmod/cfg/server.cfg
sv_downloadurl "https://files.yourserver.net/gmod"sv_allowdownload 1sv_allowupload 0

URL მიუთითებს დირექტორიაზე, რომელიც შეიცავს models/, materials/, sound/, maps/, resource/ და particles/-ს - იგივე სახელები, იგივე ჩადგმულობა, ყველაფერი პატარა ასოებით. კლიენტი, რომელსაც materials/logo/banner.vtf სჭირდება, ზუსტად ამ გზას ითხოვს შენი URL-ის ქვეშ. დირექტორიის სია საჭირო არ არის და არც უნდა იყოს ჩართული.

HTTPS მუშაობს და სწორედ ის უნდა გამოიყენო. რაც საიმედოდ არ მუშაობს, არის URL, რომელიც გადამისამართებას აკეთებს, ამიტომ მიუთითე რეალურ მდებარეობაზე და არა შემოკლებაზე ან გადამამისამართებელ წინა კარზე.

sv_allowdownload 1 ჩართული უნდა დარჩეს: სწორედ ის იძლევა ნებას ნებისმიერ კლიენტის ჩამოტვირთვაზე, HTTP-ითაც. მისი გამორთვა მოთამაშეებს არ აიძულებს, კონტენტი უკვე ჰქონდეთ, უბრალოდ მის გარეშე ტოვებს.

ყველაფერი შეკუმშე. კლიენტი banner.vtf.bz2-ს ითხოვს, სანამ banner.vtf-ს მოითხოვს, ამიტომ ატვირთე შეკუმშული ასლი და ჩამოტვირთვა ზომის მცირე ნაწილია:

bash
$ cd /var/www/gmod$ find . -type f ! -name '*.bz2' -exec bzip2 -k {} \;

-k ორიგინალს ინახავს, რაც ტესტირებისას ღირს. როცა კონფიგურაციას ენდობი, მარტო .bz2 ფაილები საკმარისია.

სად დადო: ნებისმიერი სტატიკური web ჰოსტინგი გამოდგება და მას დისკი და გამტარუნარიანობა სჭირდება და არა CPU. პატარა web ჰოსტინგის გეგმა დირექტორიას იდეალურად ემსახურება, ფაილებს SFTP-ით ან ფაილების მენეჯერით იღებს და მოიცავს proxy slot-ს - მიუთითე A ჩანაწერი ნაჩვენებ მისამართზე და სერტიფიკატი შენთვის გაიცემა და განახლდება, ამიტომ https://files.yourserver.net მუშაობს certbot-ზე ხელის შეხების გარეშე. შენი დომენი და მისი სერტიფიკატი ფარავს DNS მხარეს.

ერთი გულწრფელი შენიშვნა გამტარუნარიანობაზე: FastDL ჰოსტი, რომელიც დატვირთულ ღამეს 2 GB პაკეტს ყველა ახალ მოთამაშეს აწვდის, რეალურ ტრაფიკს გადაადგილებს. შეუზღუდავი ნიშნავს, რომ გიგაბაიტში არ გიბარებენ, და არა იმას, რომ საერთო არხის გაჯერება მისაღებია - გამტარუნარიანობა და სამართლიანი გამოყენება არის ამ საუბრის ვერსია, რომელიც მოგვიანებით არავის მოსწონს.

რომელი სისტემა რომელი კონტენტისთვის#

კონტენტისერვერი იღებსკლიენტი იღებს
Workshop addon, რომელიც ყველას სჭირდებაკოლექციაSteam
მხოლოდ კლიენტის workshop კონტენტიარ მიემაგრებაresource.AddWorkshop
ადმინ mod, სერვერის სკრიპტებიaddons/არაფერი
საკუთარი რუკა, რომელიც Workshop-ზე არ არისmaps/FastDL
შენი საკუთარი materials და ხმებიaddons/FastDL

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

ჩამოტვირთვის მცირედ შენარჩუნება#

ეს ნაწილი წყვეტს, ხალხი ორჯერ შემოვა თუ არა.

  • კოლექცია შეამოწმე ზომით და არა რაოდენობით. ერთ მაღალი გარჩევადობის ავტომობილების პაკეტს შეუძლია ოცდაათ სკრიპტზე მეტი იწონიდეს. Workshop ყოველი ნივთის გვერდზე ფაილის ზომას აჩვენებს.
  • წაშალე დუბლირებული იარაღის ბაზები. უმეტეს სერვერზე სამი გადამფარავი პაკეტი გროვდება, რადგან ყოველ ახალ addon-ს საკუთარი მოჰყვებოდა.
  • Prop პაკეტები რუკებისთვისაა, რომლებიც მათ იყენებენ. თუ არცერთი რუკა ან პროფესია მას არ იყენებს, ის სუფთა ჩამოტვირთვაა.
  • გადაწყვიტე, რა არის აუცილებელი და რა - სასიამოვნო. მოთამაშეს სათამაშოდ შენი პერსონალის საკუთარი მოდელები არ სჭირდება.
  • გაზომე რეალური რიცხვი. შედი Steam ანგარიშით, რომელიც სერვერზე არასოდეს ყოფილა, ნორმალური კავშირიდან, და დროს გაუმეტე. ორ წუთზე ნაკლები კარგია. ხუთზე მეტი და ხალხს კარგავ.

სერვერზე დისკიც მნიშვნელოვანია. Garry's Mod-ის ინსტალაცია რამდენიმე გიგაბაიტია addon-ებამდე, workshop cache კოლექციასთან ერთად იზრდება და demo-ები და ლოგები გროვდება. სწრაფი საცავი ამოკლებს გაშვებისას მიმაგრების დროს, რასაც restart-ზე ყველაზე მეტად გრძნობ - რას ცვლის NVMe რეალურად ამაზე რეალისტურ რიცხვებს იძლევა.

დაკარგული კონტენტის პრობლემების მოგვარება#

იისფერ-შავი კვადრატები. დაკარგული material. ან კლიენტმა ის არ ჩამოტვირთა, ან გზაში რეგისტრი არასწორია Linux სერვერზე, ან addon .vmt-ს .vtf-ის გარეშე აწვდის.

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

მხოლოდ ზოგი მოთამაშე ხედავს. მათი cl_downloadfilter დაყენებულია all-ისგან განსხვავებულზე. none ყველა ჩამოტვირთვას ბლოკავს და nosounds აუდიოს; ორივე ის რამეა, რასაც ხალხი წლების წინ ერთხელ აყენებს და ივიწყებს. მათ ნაცვლად ვერ შეცვლი, მაგრამ შეგიძლია უთხრა.

ყველა სამუდამოდ ჩამოტვირთავს და მერე ვადა გასდის. FastDL-ის გზა არასწორია. ბრაუზერში გახსენი URL ერთი კონკრეტული ფაილისთვის - თუ https://files.yourserver.net/gmod/materials/logo/banner.vtf.bz2 არ იტვირთება, თამაშიც ვერ ჩამოტვირთავს. აქ 404 მთელი პრობლემაა.

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

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

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

RE:NODE-ზე ფაილების მენეჯერი ატვირთულ არქივს ადგილზე ხსნის, ამიტომ .gma ან კონტენტის პაკეტი პირდაპირ addons/-ში მიდის, ხოლო SFTP ბულქ ატვირთვებს ამუშავებს, როცა კოლექცია ბრაუზერში გადასათრევად ძალიან დიდია. კონსოლი გაუფილტრავია, სადაც კოლექციის მიღება და ყოველი დაკარგული ფაილის საჩივარი ჩნდება. Backup slot-ები ყოველ გეგმაზეა, რაც addon-ების აუდიტამდე ღირს გამოყენება და არა მის შემდეგ.

FAQ#

მოთამაშეები addon-ებს ჩემი სერვერიდან ჩამოტვირთავენ თუ Steam-იდან?

Steam-იდან, ყველაფრისთვის, რაც workshop-ის კოლექციაშია ან resource.AddWorkshop-ით დაემატა. მხოლოდ ცალკეული ფაილები - საკუთარი რუკები, შენი materials და ხმები - მოდის შენი სერვერიდან ან FastDL ჰოსტიდან.

საჭიროა FastDL, თუ Workshop-ს ვიყენებ?

მხოლოდ კონტენტისთვის, რომელიც Workshop-ზე არ არის. უმეტეს სერვერს ის საკუთარ რუკასა და რამდენიმე ფაილს სჭირდება და სხვა არაფერი. თუ ყველაფერი, რასაც უშვებ, workshop addon-ია, FastDL შეგიძლია მთლიანად გამოტოვო.

რატომ ამაგრებს სერვერი addon-ებს, რომლებსაც კლიენტები არ იღებენ?

რადგან ისინი ორი სიაა. სერვერი ამაგრებს იმას, რაც addons/-შია და კოლექციაშია; კლიენტები ჩამოტვირთავენ იმას, რასაც კოლექცია და resource.Add გამოძახებები ეუბნება. ადმინ mod განზრახ პირველ სიაშია და მეორეში არა.

რა ზომის უნდა იყოს ჩემი კოლექცია?

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

მჭირდება Steam Web API გასაღები?

host_workshop_collection-ისთვის დიახ - სერვერს სჭირდება კოლექციის ნივთების სიის წასაკითხად და ის -authkey-ით გადაეცემა. addons/-ში ხელით დაყენებულ addon-ებს გასაღები საერთოდ არ სჭირდება.

შემიძლია FastDL თავად გეიმ სერვერზე გავუშვა?

არა. გეიმ გეგმა თამაშს უშვებს და არა web სერვერს. გამოიყენე ნებისმიერი სტატიკური web ჰოსტინგი დირექტორიისთვის, მიუთითე sv_downloadurl მასზე და ფაილები bzip2-ით შეკუმშული გქონდეს.


კომენტარები

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

0/2000