RE:NODE

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

Left 4 Dead 2-ის dedicated სერვერის მოწყობა და lobby-ს პარამეტრები

L4D2 dedicated სერვერი: დაყენება, server.cfg და Director cvar-ები, lobby-ები და sv_search_key, custom კამპანიები, ოთხზე მეტი მოთამაშე და გამოსწორებები.

განახლებულია

0 მკითხველი

Left 4 Dead 2-ის სესიების უმეტესობა ვინმეს listen სერვერზე მიდის, რაც მუშაობს მანამ, სანამ მასპინძელს ცუდი საღამო არ ექნება და კამპანიას თან არ წაიყოლებს. Dedicated სერვერი აქ ძალიან ცოტა ღირს - თამაში არ არის მომთხოვნი, ოთხი მოთამაშე და AI Director 2 GB-ში ეტევა - და ის აშორებს ყველაზე დიდ მიზეზს, რის გამოც გასვლა ადრე მთავრდება. რასაც ის არ აშორებს, არის L4D2-ის matchmaking, რომელიც lobby-ებისა და ოფიციალური სერვერებისთვის აიგო და სიამოვნებით უგულებელყოფს სერვერს, რომელსაც ახლახან გადაუხადე, სანამ არ ეტყვი, რომ არა. სწორედ ამ ნაწილს ეძღვნება ეს გზამკვლევი ყველაზე დიდ დროს, რადგან ის არის ის, რაც ხალხს ამარცხებს.

Listen სერვერები, dedicated სერვერები და lobby#

Left 4 Dead 2-ს აქვს კამპანიაში ოთხი ადამიანის შეყვანის სამი გზა და ისინი განსხვავებულად იქცევა.

  • Listen სერვერი არის ერთი მოთამაშე, რომელიც საკუთარ თამაშში მასპინძლობს. ეს ნაგულისხმევია, როცა მეგობრებს იწვევ და play-ს აჭერ. მასპინძლის მანქანა უშვებს სიმულაციას და AI Director-ს, მისი upload ყველას ატარებს და მისი crash კამპანიას ამთავრებს.
  • ლოკალური dedicated სერვერი არის srcds იმავე მანქანაზე, კონსოლიდან გაშვებული. უკეთესია, მაგრამ ისევ ერთი ადამიანის ყუთზეა მიბმული.
  • ნამდვილი dedicated სერვერი სადღაც სხვაგან მუშაობს, მუდამ, და არავის alt-tab-ს ფინალი არ უჯდება ჯგუფს.

გართულება ისაა, რომ L4D2-ს co-op-ისთვის მარტივი "შეუერთდი ამ სერვერს" პროცესი არ აქვს. ჯგუფი lobby-ს ქმნის, lobby-ს ლიდერი start-ს აჭერს და matchmaker სერვერს ირჩევს - ჩვეულებრივ Valve-ის ოფიციალურს. სერვერის ფლობა თავისთავად ამას არ ცვლის. ორი cvar ცვლის:

  • sv_search_key სერვერზე და იგივე მნიშვნელობა lobby-ს ლიდერის კონსოლში start-მდე აკრეფილი. შემდეგ matchmaker მხოლოდ იმ სერვერებს განიხილავს, რომლებსაც ეს გასაღები აქვთ, რაც პრაქტიკაში შენს სერვერს ნიშნავს.
  • mm_dedicated_force_servers "203.0.113.10:27015" კლიენტზე, რომელიც lobby-ს კონკრეტულ მისამართზე მიუთითებს.

მესამე გზა პირდაპირია: sv_allow_lobby_connect_only 0 შენს სერვერის კონფიგურაციაში, და შემდეგ ნებისმიერს შეუძლია developer კონსოლიდან connect 203.0.113.10:27015 lobby-ს გარეშე. ნაგულისხმევია 1, რის გამოც სერვერი, რომელიც სრულიად ჯანმრთელად გამოიყურება, ყველა პირდაპირ კავშირს უარყოფს. თუ ამ გზამკვლევიდან ერთ რამეს წაიღებ, ეს ხაზი წაიღე.

მოთხოვნები და რესურსების გამოყენება#

მოწყობაRAMCPUშენიშვნები
4 მოთამაშიანი co-op1-2 GB1 ბირთვიDirector პლუს სამი ან ოთხი bot
8 მოთამაშიანი versus2 GB1 ბირთვიორჯერ მეტი მოთამაშე, ძლივს მეტი დატვირთვა
10-16 მოთამაშე plugin-ებით2-3 GB1-1.5 ბირთვიგანბლოკილი slot-ები და SourceMod
დაყენებული custom კამპანიები2 GB1 ბირთვიხარჯავს დისკს და არა მეხსიერებას

L4D2 2009 წლის Source თამაშია და ეს საუკეთესო გზით ჩანს: მეხსიერების კვალი მცირეა და ერთი ბირთვი საკმარისია. ორი რამ მნიშვნელოვანია.

პირველი დისკია. Dedicated სერვერის install ათ გიგაბაიტს ბევრად სცდება და custom კამპანიები 100-400 MB თითოეულია. დისკი გაზომე და არა RAM-ი.

მეორე ისაა, სად დგას მანქანა. L4D2 წამში 30 tick-ით მუშაობს - Source შუტერების უმეტესობის ნახევარი სიხშირით - და თამაში კლიენტის მხარის prediction-ს ეყრდნობა ამის დასამალად. დაამატე 90 ms დაყოვნება და განსხვავება Charger-ის მოხვედრასა და აცდენას შორის მონეტის აგდებად იქცევა. აირჩიე ლოკაცია შენს ჯგუფთან ახლოს და არა რუკის შუაში, და თუ თამაში ცუდად იგრძნობა, გაზომე, სანამ იყიდი: დაყოვნება, jitter და პაკეტების დაკარგვა ხსნის, რომელი სამიდან გაქვს სინამდვილეში, ხოლო სად დადგეს შენი სერვერი ფარავს კომპრომისს, როცა ჯგუფი გაფანტულია.

სერვერის დაყენება და გაშვების ხაზი#

Dedicated სერვერის app id არის 222860 და ანონიმურად ყენდება:

bash
$ steamcmd +force_install_dir /home/l4d2/server +login anonymous \    +app_update 222860 validate +quit$ cd /home/l4d2/server$ ./srcds_run -game left4dead2 -console -usercon -port 27015 \    +map c1m1_hotel +exec server.cfg

კლიენტის app id არის 550, და სწორედ ის უნდა გამოიყენო Workshop ელემენტების SteamCMD-ით ჩამოსატვირთად - დეტალი, რომელიც იმათ ერევათ, ვისაც სერვერის id ყველგან მუშაობს ჰგონია. SteamCMD ახსნილი ზოგადად ფარავს app id-ებს, validate-სა და განახლების სკრიპტებს.

რამდენიმე კამპანიის საწყისი რუკა, რადგან კონსოლს სათაური კი არა, შიდა სახელი სჭირდება:

კამპანიაპირველი რუკა
Dead Centerc1m1_hotel
Dark Carnivalc2m1_highway
The Parishc5m1_waterfront
No Mercyc8m1_apartment

server.cfg: თამაშის რეჟიმი, სირთულე და Director#

left4dead2/cfg/server.cfg იკითხება გაშვებისას და რუკის ცვლილებისას. მუშა საწყისი წერტილი:

left4dead2/cfg/server.cfg
hostname "Thursday night survivors"rcon_password "long-random-string"sv_password ""sv_lan 0sv_region 3sv_steamgroup ""sv_consistency 1sv_gametypes "coop,realism,survival,versus,teamversus,scavenge"mp_gamemode coopz_difficulty Normalsv_allow_lobby_connect_only 0sv_search_key thursdaycrewsv_alltalk 0sv_allowupload 0sv_allowdownload 1

გასაგებად ღირს და არა გადასაწერად:

  • sv_gametypes არის რეჟიმების სია, რომლის ამ სერვერზე განთავსებაც matchmaker-ს შეუძლია. რეჟიმის გამოტოვება ნიშნავს, რომ ამ რეჟიმის lobby-ები არასოდეს მოვა.
  • mp_gamemode არის რეჟიმი, რომელსაც სერვერი ახლა უშვებს. მისი შეცვლა ძალაში შესასვლელად რუკის ცვლილებას მოითხოვს.
  • z_difficulty იღებს Easy, Normal, Hard ან Impossible-ს. Expert არის Impossible, რაც ყველას პირველად უკვირს.
  • sv_consistency 1 სერვერს აიძულებს, შეამოწმოს, რომ კლიენტის ფაილები მის საკუთარს ემთხვევა. ეს არის განსხვავება იმას შორის, რომ შეუსაბამო add-on გასაგებ kick-ს იწვევს და იმას შორის, რომ ფინალის შუაში აუხსნელ გათიშვას იწვევს.
  • sv_steamgroup ჯგუფის id-ით სერვერს ამ Steam ჯგუფის ქვეშ აჩენს მისი წევრებისთვის, ხოლო sv_steamgroup_exclusive 1 მას მხოლოდ მათზე ზღუდავს. ეს L4D2-ის ყველაზე უმტკივნეულო კერძო სერვერის მექანიზმია.

AI Director-ს აქვს საკუთარი cvar-ების ოჯახი - z_common_limit იმისთვის, რამდენი infected არსებობს ერთდროულად, z_mob_spawn_min_size და z_mob_spawn_max_size horde-ის ზომისთვის, director_no_bosses Tank-ებისა და Witch-ების გაჩენის შესაჩერებლად. სანამ რომელიმეს კონფიგურაციაში ჩასვამ, აკრიფე cvar-ის სახელი მარტო სერვერის კონსოლში: ის ბეჭდავს მიმდინარე მნიშვნელობას, მიწოდებულ ნაგულისხმევს და flag-ებს. რამდენიმე Director cvar მონიშნულია, როგორც cheat, და არაფერს აკეთებს, სანამ sv_cheats ჩართული არ არის ან plugin მათ შიგნიდან არ აყენებს, ამიტომ ბევრ გადაწერილ კონფიგურაციას ჩუმად არანაირი ეფექტი არ აქვს.

პორტები და შენი ჯგუფის სერვერზე შეყვანა#

პორტიპროტოკოლიდანიშნულება
27015UDPთამაშის ტრაფიკი და Steam query-ები
27015TCPRCON, -usercon-ით
27005UDPკლიენტზე გამავალი, გასახსნელი არაფერია

Source query-ს თამაშის იმავე პორტზე აყენებს, ამიტომ ერთი allocation საკმარისია. თუ სერვერი მუშაობს, მაგრამ მას ვერაფერი ხედავს, ეს UDP 27015-ია ან sv_lan. თამაშის სერვერის პორტები ახსნილი ზოგად შემთხვევას ფარავს და თუ RCON ჩართე, RCON უსაფრთხოდ კარგად დახარჯული ხუთი წუთია - პაროლი მთელი ავთენტიფიკაციაა და პროტოკოლი მას არ მალავს.

ითხოვს სერვერსფილტრავს კანდიდატებსდამთხვევაპირდაპირ შიგნითLobbyლიდერი აჭერს start-სConsole connectსჭირდება lobby_connect_only Matchmakerირჩევს სერვერსsv_search_keyერთნაირი მნიშვნელობაშენი სერვერიUDP 27015
სამი გზა, რითიც ჯგუფი შენს სერვერზე ხვდება

პრაქტიკაში უთხარი შენს ჯგუფს, რომ ეს ერთხელ გააკეთონ: გახსნან developer კონსოლი, აკრიფონ sv_search_key thursdaycrew, შემდეგ შექმნან lobby და დააჭირონ start-ს. გასაღები სესიის განმავლობაში რჩება. ვინც გვიან უერთდება, ნაცვლად იყენებს connect <ip>:27015-ს, რაც მუშაობს, რადგან დააყენე sv_allow_lobby_connect_only 0.

Add-on კამპანიები და sv_consistency#

Custom კამპანიები .vpk ფაილებია. სერვერზე ისინი left4dead2/addons/-ში მიდის და სერვერი უნდა გადაიტვირთოს, რომ მათ აიღოს. Workshop ელემენტები SteamCMD-ით ჩამოიტვირთება კლიენტის app id-ზე:

bash
$ steamcmd +force_install_dir /home/l4d2/server +login anonymous \    +workshop_download_item 550 <workshop_id> +quit

აქ არის ნაწილი, რომელიც ყველა ჯგუფს ერთხელ მაინც ეჭედება: სერვერს არ შეუძლია კამპანია მოთამაშეს მისცეს, რომელსაც ის არ აქვს. Garry's Mod-ისგან განსხვავებით, არ არსებობს სწრაფი ჩამოტვირთვის გზა, რომელიც VPK კამპანიას კლიენტზე დააყენებს. ყველა ერთსა და იმავე Workshop ელემენტს იწერს, ან არავინ თამაშობს. გამოაქვეყნე კოლექციის ბმული Discord-ში, დარწმუნდი, რომ ყველამ გამოწერის შემდეგ თამაში მართლა გადატვირთა, და შეამოწმე ვერსია - კვირის შუაში განახლებული კამპანია არ დაემთხვევა მოთამაშეებს, რომლებსაც Steam ხელახლა არ გაუშვიათ. Steam Workshop mod-ები dedicated სერვერებზე ფარავს, როგორ იქცევა ეს ჩამოტვირთვები ზოგადად.

ჩატვირთვის რიგი ნაკლებად მნიშვნელოვანია, ვიდრე უმეტეს თამაშში, მაგრამ კონფლიქტური add-on-ები - ორი mutation სკრიპტი, ორი იარაღის reskin, რომელიც ერთსა და იმავე script ფაილს ეხება - შეცდომის ნაცვლად ჩუმ უცნაურობას წარმოქმნის. როცა რაიმე აუხსნელი ხდება, დააცარიელე addons საქაღალდე და დაამატე ნივთები ცოტ-ცოტა. sv_consistency 1-ით, სულ მცირე, ფაილის ნამდვილი შეუსაბამობა ცხადდება kick-ით მიზეზთან ერთად და არა მისტიკური გათიშვით saferoom-ის კართან.

SourceMod, L4DToolZ და ოთხზე მეტი მოთამაშე#

Versus-ს რვა slot სჭირდება, რაც ზომას ძალიან ცოტას ცვლის. Co-op ოთხზე მეტი survivor-ით ბევრად მეტს ცვლის და ეს კონფიგურაციის პარამეტრი არ არის - ლიმიტები კომპილირებულია. ჩვეულებრივი გზაა Metamod:Source SourceMod-ით თავზე, პლუს L4DToolZ, Metamod plugin, რომლის მთელი საქმე მოთამაშეთა ლიმიტის განბლოკვაა. ის ამატებს:

Cvarდანიშნულება
sv_maxplayersადამიანის slot-ები სერვერზე
sv_visiblemaxplayersრამდენ slot-ს აჩვენებს ბრაუზერი
sv_removehumanlimitაქრობს ჩაშენებულ ადამიანების ლიმიტს
sv_force_unreservedსერვერს უშლის lobby-სთვის თავის დაჯავშნას

დააყენე ესენი left4dead2/cfg/sourcemod/sourcemod.cfg-ში, რომ plugin-ების ჩატვირთვის შემდეგ გამოვიყენოთ. პატიოსნად შეხედე, რას აკეთებს ათი survivor თამაშისთვის: Director ოთხისთვის იყო დარეგულირებული, კამპანიები ოთხისთვის აიგო და დაახლოებით რვა მოთამაშის ზემოთ co-op გასეირნებად იქცევა. სახალისოა და ეს სხვა თამაშია.

SourceMod ასევე ის გზაა, რითაც საერთოდ ადმინისტრირებას იღებ. ადმინები მიდის addons/sourcemod/configs/admins_simple.ini-ში, როგორც Steam ID და უფლების flag-ების ნაკრები, sm_admin თამაშში მენიუს ხსნის, ხოლო sm plugins list გეუბნება, რა ჩაიტვირთა რეალურად. დასამახსოვრებელი ერთი რამ იგივეა, რაც ნებისმიერ Source სერვერზე: თამაშის განახლებას შეუძლია Metamod და SourceMod გატეხოს, სანამ ორივე არ განახლდება, ამიტომ plugin-ების ნაკრებს სესიამდე შუადღეს ნუ დააყენებ.

ორი bot cvar-ი ცოდნად ღირს ვანილის სერვერზეც. sb_all_bot_game 1 საშუალებას აძლევს სერვერს კამპანია ადამიანების გარეშე გაუშვას, რაც custom კამპანიის გასატესტად სასარგებლოა. sb_stop 1 bot-ებს ადგილზე ყინავს, რითაც ამოწმებ, არის თუ არა შესრულების პრობლემა bot-ების pathing-ი თუ სხვა რამ.

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

Lobby თამაშს სხვის სერვერზე იწყებს. არ არის შესაბამისი sv_search_key, ან ლიდერმა არ დააყენა. ის კლიენტზე უნდა აიკრიფოს lobby-ს შექმნამდე.

კონსოლიდან `connect` არაფერს აკეთებს. sv_allow_lobby_connect_only ჯერ კიდევ ნაგულისხმევ 1-ზეა.

მოთამაშეები რუკის ჩატვირთვისას ფაილის შეუსაბამობით იგდებიან. add-on, რომელიც სერვერს აქვს და კლიენტს არა, ან პირიქით. ყველას ერთი და იგივე VPK-ები სჭირდება ერთსა და იმავე ვერსიაში.

კამპანია პირველ თავზე თავიდან იწყება, როცა ბოლო ადამიანი გადის. ეს სერვერის lobby მდგომარეობაში დაბრუნებაა. SourceMod plugin-ს შეუძლია რუკის დაჭერა, მაგრამ ქცევა დიზაინითაა.

Survivor bot-ები ადგილზე დგანან ან კედლებს ეჯახებიან. Custom კამპანიები ცუდი navigation mesh-ით. სერვერზე ამას ვერაფერი შეასწორებს; ის რუკაშია ჩაშენებული.

ფინალი ყველასთვის ჭედავს. Tank პლუს სრული horde თამაშის ყველაზე მძიმე მომენტია. შეამოწმე, რომ სერვერი ბირთვს არ იზიარებს რაიმე ხმაურიანთან და რომ არც ერთი plugin ერთ frame-ზე სამუშაოს არ აკეთებს. 30 tick-ზე სათადარიგო ადგილი ბევრი არ არის.

სერვერი ბრაუზერში უხილავია. L4D2-ის ბრაუზერი საუკეთესო შემთხვევაშიც არასანდოა. ჯერ სცადე პირდაპირი connect; თუ ის მუშაობს, სერვერის გასწორება შეწყვიტე.

სად გაუშვა#

Left 4 Dead 2-ს RE:NODE-ის კატალოგში ხაზი არ აქვს, ამიტომ აქ არ არის ერთი დაჭერით L4D2 გეგმა, რომელზეც მიგითითებდი. ორი პატიოსანი ვარიანტია: ზოგადი თამაშის პანელი, რომელიც თამაშს უჭერს მხარს, ან VDS, რომელსაც თავად მართავ - VDS L4D2-სთვის კომფორტულად საკმარისია და ადგილს ტოვებს voice სერვერისთვის ან მეორე თამაშისთვის გვერდით. რამდენიმე თამაშის სერვერი ერთ VDS-ზე ფარავს პორტებს, მომხმარებლებს და პროცესების ცოცხლად შენახვას, ხოლო VDS-სა და თამაშის პანელს შორის არჩევანი თავად გადაწყვეტილებაა: პანელი გაძლევს კონსოლს, backup-ებს და განრიგებს Linux ადმინისტრირების გარეშე, VDS გაძლევს ყველაფერს და მასზე პასუხისმგებლობას.

რომელსაც არ უნდა აირჩევდე, L4D2-ის მოვლის სია მოკლეა. განაახლე სერვერი, როცა თამაში განახლდება, add-on-ების საქაღალდე მოწესრიგებული ჰქონდეს, გადატვირთე ყოველკვირეულად და server.cfg-ის ასლი სადმე შეინახე, სადაც სერვერი არ არის.

FAQ#

მჭირდება dedicated სერვერი ოთხი მეგობრისთვის?

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

რატომ გვათავსებს lobby ოფიციალურ სერვერზე?

იმიტომ, რომ ეს ნაგულისხმევი ქცევაა. დააყენე sv_search_key შენს სერვერზე, lobby-ს ლიდერმა start-მდე იგივე გასაღები აკრიფოს თავის კონსოლში და matchmaker შენსას აირჩევს.

შეიძლება co-op-ში ოთხზე მეტმა ადამიანმა ითამაშოს?

დიახ, L4DToolZ Metamod plugin-ით, რომელიც sv_maxplayers-სა და მასთან დაკავშირებულ cvar-ებს ბლოკავს. თამაში ოთხისთვის იყო დაბალანსებული, ამიტომ უფრო რთულის და არა უფრო მარტივი გავლა ელოდე.

უნდა დააყენონ მოთამაშეებმა custom კამპანიები თავად?

დიახ. სერვერს VPK კამპანიის კლიენტისთვის მიწოდება არ შეუძლია. ყველა ერთსა და იმავე Workshop ელემენტს იწერს და თამაშს გადატვირთავს, სანამ გასვლას დაიწყებ.

რა ღირს L4D2 სერვერის გაშვება?

მეხსიერების თვალსაზრისით ძალიან ცოტა - 2 GB თითქმის ყველაფერს ფარავს - მაგრამ install ათ გიგაბაიტზე მეტია, ამიტომ გეგმა დისკით აირჩიე და არა RAM-ით. 30 tick-ზე ლოკაცია სპეციფიკაციაზე მნიშვნელოვანია.

30 tick არის მიზეზი, რის გამოც ლაგიანად იგრძნობა?

ნაწილობრივ. L4D2 30 tick-ზე აიგო და მისი შეცვლის მხარდაჭერილი გზა არ არსებობს, ამიტომ მოთამაშესა და სერვერს შორის დაყოვნებაა ის, რასაც რეალურად აკონტროლებ. გაზომე მარშრუტი, სანამ დაუშვებ, რომ სერვერი სუსტია.


კომენტარები

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

0/2000