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, რის გამოც სერვერი, რომელიც სრულიად ჯანმრთელად გამოიყურება, ყველა პირდაპირ კავშირს უარყოფს. თუ ამ გზამკვლევიდან ერთ რამეს წაიღებ, ეს ხაზი წაიღე.
მოთხოვნები და რესურსების გამოყენება#
| მოწყობა | RAM | CPU | შენიშვნები |
|---|---|---|---|
| 4 მოთამაშიანი co-op | 1-2 GB | 1 ბირთვი | Director პლუს სამი ან ოთხი bot |
| 8 მოთამაშიანი versus | 2 GB | 1 ბირთვი | ორჯერ მეტი მოთამაშე, ძლივს მეტი დატვირთვა |
| 10-16 მოთამაშე plugin-ებით | 2-3 GB | 1-1.5 ბირთვი | განბლოკილი slot-ები და SourceMod |
| დაყენებული custom კამპანიები | 2 GB | 1 ბირთვი | ხარჯავს დისკს და არა მეხსიერებას |
L4D2 2009 წლის Source თამაშია და ეს საუკეთესო გზით ჩანს: მეხსიერების კვალი მცირეა და ერთი ბირთვი საკმარისია. ორი რამ მნიშვნელოვანია.
პირველი დისკია. Dedicated სერვერის install ათ გიგაბაიტს ბევრად სცდება და custom კამპანიები 100-400 MB თითოეულია. დისკი გაზომე და არა RAM-ი.
მეორე ისაა, სად დგას მანქანა. L4D2 წამში 30 tick-ით მუშაობს - Source შუტერების უმეტესობის ნახევარი სიხშირით - და თამაში კლიენტის მხარის prediction-ს ეყრდნობა ამის დასამალად. დაამატე 90 ms დაყოვნება და განსხვავება Charger-ის მოხვედრასა და აცდენას შორის მონეტის აგდებად იქცევა. აირჩიე ლოკაცია შენს ჯგუფთან ახლოს და არა რუკის შუაში, და თუ თამაში ცუდად იგრძნობა, გაზომე, სანამ იყიდი: დაყოვნება, jitter და პაკეტების დაკარგვა ხსნის, რომელი სამიდან გაქვს სინამდვილეში, ხოლო სად დადგეს შენი სერვერი ფარავს კომპრომისს, როცა ჯგუფი გაფანტულია.
სერვერის დაყენება და გაშვების ხაზი#
Dedicated სერვერის app id არის 222860 და ანონიმურად ყენდება:
$ 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 Center | c1m1_hotel |
| Dark Carnival | c2m1_highway |
| The Parish | c5m1_waterfront |
| No Mercy | c8m1_apartment |
server.cfg: თამაშის რეჟიმი, სირთულე და Director#
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 მათ შიგნიდან არ აყენებს, ამიტომ ბევრ გადაწერილ კონფიგურაციას ჩუმად არანაირი ეფექტი არ აქვს.
პორტები და შენი ჯგუფის სერვერზე შეყვანა#
| პორტი | პროტოკოლი | დანიშნულება |
|---|---|---|
27015 | UDP | თამაშის ტრაფიკი და Steam query-ები |
27015 | TCP | RCON, -usercon-ით |
27005 | UDP | კლიენტზე გამავალი, გასახსნელი არაფერია |
Source query-ს თამაშის იმავე პორტზე აყენებს, ამიტომ ერთი allocation საკმარისია. თუ სერვერი მუშაობს, მაგრამ მას ვერაფერი ხედავს, ეს UDP 27015-ია ან sv_lan. თამაშის სერვერის პორტები ახსნილი ზოგად შემთხვევას ფარავს და თუ RCON ჩართე, RCON უსაფრთხოდ კარგად დახარჯული ხუთი წუთია - პაროლი მთელი ავთენტიფიკაციაა და პროტოკოლი მას არ მალავს.
პრაქტიკაში უთხარი შენს ჯგუფს, რომ ეს ერთხელ გააკეთონ: გახსნან 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-ზე:
$ 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-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.