რუკების როტაცია ის სიაა, რომელსაც სერვერი მატჩის დასრულებისას მიჰყვება: ითამაშე ეს რუკა, მერე შემდეგი, მერე თავიდან. თითქმის ყველა რაუნდებზე დაფუძნებულ თამაშს აქვს ასეთი, მაგრამ თითოეული სხვანაირად ინახავს - mapcycle.txt Source-ის და GoldSrc-ის თამაშებში, map group-ები და Workshop კოლექციები CS2-ში, layer-ების სიები Squad-ში, მისიების კლასები Arma 3-ში, GameMapCycles Killing Floor 2-ში, MapCycle.txt სცენარებით Insurgency: Sandstorm-ში. მუდმივი სამყაროს თამაშებს, როგორიცაა Minecraft, Rust ან Valheim, როტაცია საერთოდ არ აქვს; მათ ერთი სამყარო აქვთ და მას wipe-ით ცვლიან. ქვემოთ წერია, სად ინახება სია თითოეულ თამაშში, რა ასრულებს რუკას, როგორ ერგება ხმის მიცემა და როგორ შეარჩიო როტაცია, რომელსაც მოთამაშეები შუაში არ მიატოვებენ.
ორი სახის სერვერი: მბრუნავი და მუდმივი#
ფაილებამდე - განსხვავება, რომელიც წყვეტს, ეხება თუ არა ეს ყველაფერი შენს სერვერს.
მბრუნავი სერვერები რუკას მატჩის ან დროის ლიმიტის განმავლობაში თამაშობენ, მერე სხვას ტვირთავენ. შუტერები და რაუნდებზე დაფუძნებული co-op თამაშების უმეტესობა ასე მუშაობს: Team Fortress 2, Counter-Strike ყველა ვერსიაში, Garry's Mod-ის რეჟიმები, როგორიცაა TTT და Prop Hunt, Left 4 Dead 2-ის კამპანიები, Squad, Insurgency: Sandstorm, Killing Floor 2. სერვერის იდენტობა დიდწილად მისი როტაციაა.
მუდმივი სერვერები ერთ სამყაროს ტვირთავენ და ინახავენ. Minecraft, Rust, Valheim, 7 Days to Die, Project Zomboid, DayZ, Palworld და ყველა survival თუ მშენებლობის თამაში აქ არის. "რუკის შეცვლა" ნიშნავს სერვერის გაჩერებას და მის სხვა სამყაროზე ან seed-ზე მიმართვას, ხოლო Rust-ის შემთხვევაში ეს ყოველთვიური wipe-ია. ამ თამაშებსაც აქვთ რუკის არჩევანი - სამყაროს ზომა, seed, custom რუკები, საზოგადოების რელიეფები - მაგრამ ეს გადაწყვეტილებაა, რომელსაც ერთ wipe-ზე ერთხელ იღებ, და არა ციკლი. Rust-ის wipe-ები მოთამაშეების დაკარგვის გარეშე და Minecraft-ის custom სამყაროს გენერაცია ამ მხარეს განიხილავს.
ამ სტატიის დანარჩენი ნაწილი პირველ სახეობას ეხება.
რა ასრულებს რუკას#
როტაციას აზრი მხოლოდ მაშინ აქვს, თუ რაღაც სერვერს ეუბნება, რომ წინ წავიდეს. თამაშები ოთხი ტრიგერის რაიმე კომბინაციას იყენებს:
| ტრიგერი | Source / GoldSrc cvar | რა ხდება |
|---|---|---|
| დროის ლიმიტი | mp_timelimit (წუთები) | რუკა დროის შემდეგ იცვლება, როგორც წესი რაუნდის ბოლოს |
| მოგებების ლიმიტი | mp_winlimit | რუკა იცვლება, როცა გუნდი N მოგებას მიაღწევს |
| რაუნდების ლიმიტი | mp_maxrounds | რუკა N რაუნდის შემდეგ იცვლება |
| მკვლელობების ლიმიტი | mp_fraglimit | Deathmatch-ის ტიპის თამაშები, ვინც პირველი მიაღწევს N-ს |
0 ლიმიტს თიშავს. თუ ყველა ლიმიტი 0-ია, რუკა თავისით არასდროს იცვლება, რაც "ჩემი როტაცია არ მუშაობს"-ის ხშირი მიზეზია: სია კარგადაა, უბრალოდ რუკას არაფერი ასრულებს. TF2-ში გავრცელებული საჯარო კონფიგურაციაა mp_timelimit 30 mp_winlimit 0-თან ერთად; CS-ში რაუნდების და მოგებების ლიმიტები უფრო მნიშვნელოვანია, რადგან მატჩები რაუნდებით ითვლება.
არა-Source თამაშებს საკუთარი ეკვივალენტები აქვთ, ჩვეულებრივ თამაშის რეჟიმის პარამეტრებში - მატჩის ხანგრძლივობა, რაუნდების ან ტალღების რაოდენობა, გამარჯვების პირობა. KF2-ის რუკა სრულდება, როცა ტალღები (და ბოსი) დასრულდება ან გუნდი მთლიანად დაიღუპება; Squad-ის layer სრულდება, როცა ბილეთები ამოიწურება ან დროის ლიმიტი დადგება.
Source და GoldSrc: mapcycle.txt#
Team Fortress 2, Counter-Strike: Source, Garry's Mod, Left 4 Dead 2 და Counter-Strike 1.6 ყველა კითხულობს უბრალო ტექსტურ ფაილს, სადაც თითო ხაზზე თითო რუკის სახელია, გაფართოების გარეშე:
ctf_2fortpl_badwatercp_process_finalkoth_harvest_finalpl_upwardcp_granary_pro_rc8სად ინახება ფაილი, განსხვავდება. TF2-ში ეს არის tf/cfg/mapcycle.txt, და თუ არ შექმენი, mapcycle_default.txt-ზე გადადის. ძველ თამაშებში და CS 1.6-ში ის თამაშის საქაღალდის ძირშია (cstrike/mapcycle.txt). mapcyclefile cvar ასახელებს გამოსაყენებელ ფაილს, ამიტომ შეგიძლია რამდენიმე შეინახო და server.cfg-დან გადართო.
წესები, რომლებზეც ხალხი იბნევა:
- ციკლში არსებული რუკა, რომელიც დისკზე არ არის, გამოტოვებულია (ან ზოგ თამაშში სერვერს რუკის შეცვლას საერთოდ უჩერებს). ყოველი სახელი ზუსტად უნდა ემთხვეოდეს
.bsp-სmapsსაქაღალდეში, Linux-ზე რეგისტრის ჩათვლით. - სერვერი ფაილს რუკის შეცვლისას კითხულობს. რუკის შუაში რედაქტირება ნორმალურია; ცვლილება შემდეგი გადასვლიდან მოქმედებს.
nextmapკონსოლში აჩვენებს, რა მოდის შემდეგ.changelevel <map>მაშინვე გადართავს და მოთამაშეებს დაკავშირებულს ტოვებს.map <map>უფრო მკაცრ გადატვირთვას აკეთებს, რომელიც ყველას აგდებს და თავიდან აკავშირებს.
ხმის მიცემა და ნომინაციები SourceMod-ით და AMX Mod X-ით
ფიქსირებული ციკლი პროგნოზირებადია; ხმის მიცემა ხალხს აჩერებს. Source 1-ზე SourceMod-ს ამისთვის plugin-ები მოყვება, თუმცა რამდენიმე addons/sourcemod/plugins/disabled/-შია დაყენებული და ჩასართავად ერთი საქაღალდით ზემოთ უნდა გადაიტანო:
mapchooser.smx- ლიმიტამდე რამდენიმე წუთით ადრე რთავს რუკის ბოლოს ხმის მიცემას ციკლის (ან custom სიის) რუკებს შორის.rockthevote.smx- მოთამაშეები წერენrtv; თუ საკმარისი რაოდენობა დაეთანხმება, ხმის მიცემა ახლავე იწყება.nominations.smx- მოთამაშეები წერენnominate-ს, რომ რუკა შემდეგ ხმის მიცემაში დაამატონ.nextmap.smx- ნაგულისხმევად ჩართულია; აცხადებს და აკონტროლებს, რა მოდის შემდეგ.randomcycle.smx- შემდეგ რუკას ციკლიდან შემთხვევით ირჩევს.
CS 1.6-ზე AMX Mod X-ს მოყვება mapchooser.amxx და nextmap.amxx, რომლებიც addons/amxmodx/configs/plugins.ini-ში ირთვება, ასევე ადმინის ხმის მიცემის მენიუ, რომელიც addons/amxmodx/configs/maps.ini-ს კითხულობს. თითოეულის plugin-ების მხარე Counter-Strike 1.6-ის AMX Mod X plugin-ებში და Team Fortress 2-ის SourceMod plugin-ებშია.
Garry's Mod-ზე რეჟიმები რუკის დასრულებას თავად მართავს. TTT ttt_round_limit რაუნდის ან ttt_time_limit_minutes-ის შემდეგ სრულდება და მერე რუკას ცვლის; სერვერების უმეტესობა ამატებს map-vote addon-ს (ჩვეულებრივ Willox-ის MapVote-ს), რომელიც ამ მომენტს ებმება. Garry's Mod-ის TTT სერვერი-ში დეტალებია.
CS2: map group-ები და Workshop კოლექციები#
Counter-Strike 2 mapcycle.txt-ს ისე არ იყენებს, როგორც CS:S. მისი როტაცია map group-ებიდან მოდის, რომლებიც game/csgo/gamemodes_server.txt-შია განსაზღვრული (დასაწყებად დააკოპირე თანდართული .example ფაილი). Map group რუკების დასახელებული სიაა; გაშვების ხაზი ირჩევს თამაშის რეჟიმს და ჯგუფს:
$ ./cs2 -dedicated +game_type 0 +game_mode 1 +mapgroup mg_active +map de_infernogame_type 0 game_mode 1-თან ერთად არის Competitive; game_mode 0 არის Casual. ჩაშენებული ჯგუფები, როგორიცაა mg_active, Valve-ის მიმდინარე პულს მიჰყვება, რომელიც ოპერაციებს შორის იცვლება. Custom როტაციისთვის საკუთარ ჯგუფს gamemodes_server.txt-ში განსაზღვრავ და მის სახელს გადასცემ.
Workshop რუკები სხვა გზით მიდის. +host_workshop_collection <id> ტვირთავს Steam Workshop-ის კოლექციას და მასში ატრიალებს; +host_workshop_map <id> ერთ Workshop რუკას ტვირთავს. კოლექცია გაშვებისას ჩამოიტვირთება, ამიტომ 40-რუკიანი კოლექცია ნიშნავს ხანგრძლივ პირველ ჩატვირთვას და ბევრ დისკს. Workshop-იდან ჩამოტვირთვისთვის სერვერს Steam token-ი სჭირდება. CS2-ის Workshop რუკები და კოლექციები ორივეს განიხილავს, ხოლო Counter-Strike 2-ის სერვერის აწყობაში გაშვების ხაზი სრულადაა.
სხვა თამაშები: layer-ები, მისიები და სცენარები#
Squad
Squad რუკებს layer-ებისგან განასხვავებს - layer არის რუკა თამაშის რეჟიმით, ფრაქციებით და ვერსიით (Narva_RAAS_v1). როტაცია layer-ების სიაა SquadGame/ServerConfig/LayerRotation.cfg-ში, ხოლო MapRotationMode Server.cfg-ში წყვეტს, მიჰყვება სერვერი layer-ების სიას თუ level-ების სიას - შენი ვერსიის ფაილის კომენტარებში მისაღები მნიშვნელობებია ჩამოთვლილი. ადმინები layer-ს AdminChangeLayer-ით ცვლიან და შემდეგს AdminSetNextLayer-ით აყენებენ. Layer-ების სახელები რუკების გადაკეთებისას იცვლება, ამიტომ როტაცია, რომელიც გასულ თვეს მუშაობდა, შეიძლება შეიცავდეს სახელებს, რომლებიც აღარ არსებობს; Squad-ის ყოველი განახლების შემდეგ სერვერის ლოგი შეამოწმე. Squad-ის სერვერის კონფიგი და ადმინები-ში სრული ფაილია.
Arma 3
Arma 3 რუკებს "მისიებს" უწოდებს და როტაციას server.cfg-ში კლასებად ინახავს:
class Missions{ class Mission1 { template = "MyCoop.Altis"; difficulty = "Regular"; }; class Mission2 { template = "Invade_Annex.Stratis"; difficulty = "Veteran"; };};template არის მისიის ფაილის სახელი (MPMissions-იდან) .pbo-ს გარეშე. როცა Missions კლასი არსებობს, სერვერი როტაციას თავად უშვებს და არ ელოდება, რომ ადმინმა მისია #missions-ით აირჩიოს. Arma-ს საზოგადოებების უმეტესობა ციკლის ნაცვლად ერთ გრძელ მისიას უშვებს; კლასის განსაზღვრა მაინც ღირს, რომ სერვერი რესტარტის შემდეგ თავისით აღდგეს. მეტი Arma 3-ის server.cfg და მისიები-ში.
Killing Floor 2
KF2 თავის ციკლს KFGame/Config/PCServer-KFGame.ini-ში ინახავს [KFGame.KFGameInfo]-ის ქვეშ:
[KFGame.KFGameInfo]GameMapCycles=(Maps=("KF-BurningParis","KF-Outpost","KF-BioticsLab"))ActiveMapCycle=0შეიძლება რამდენიმე GameMapCycles ხაზი არსებობდეს; ActiveMapCycle ერთ-ერთს ინდექსით ირჩევს. Workshop რუკები სერვერზე გამოწერილი უნდა იყოს - ServerSubscribedWorkshopItems= ხაზები [OnlineSubsystemSteamworks.KFWorkshopSteamworks]-ის ქვეშ PCServer-KFEngine.ini-ში - და ციკლშიც უნდა ჩანდეს. Killing Floor 2-ის სერვერის გზამკვლევი დანარჩენს განიხილავს.
Insurgency: Sandstorm
Sandstorm სცენარებს ატრიალებს და არა რუკებს. Insurgency/Config/Server/MapCycle.txt თითო ხაზზე თითო სცენარს შეიცავს, ან უბრალო სცენარის სახელად, ან ისეთი ოფციებით, როგორიცაა განათება:
Scenario_Farmhouse_Checkpoint_SecurityScenario_Hideout_Checkpoint_Insurgents(Scenario="Scenario_Refinery_Push_Security",Lighting="Night")სცენარის სახელი რუკას, რეჟიმს და მხარეს შეიცავს, ამიტომ Checkpoint სერვერი მხოლოდ Checkpoint სცენარებს ჩამოთვლის. Insurgency: Sandstorm-ის სერვერის გზამკვლევში რეჟიმების სრული სიაა.
Custom რუკები და მათი მიწოდება მოთამაშეებამდე#
სტანდარტული რუკების როტაციას სხვა არაფერი სჭირდება. როგორც კი custom რუკას დაამატებ, მოთამაშეებმა ის უნდა მიიღონ, და როგორ მიიღებენ, ის წყვეტს, დარჩებიან თუ არა.
| თამაში | როგორ იღებენ კლიენტები custom რუკებს |
|---|---|
| TF2, CS:S, GMod, L4D2 | ჩამოტვირთვა სერვერიდან ან FastDL HTTP-ით |
| Garry's Mod | Workshop resource.AddWorkshop-ით ან კოლექციით |
| CS2 | მხოლოდ Steam Workshop |
| KF2, Squad, Sandstorm | Workshop-ის ან mod.io-ს გამოწერა, ავტომატურად შემოსვლისას |
| Arma 3 | მისიის .pbo შემოსვლისას იტვირთება; მოდები წინასწარ უნდა იყოს დაყენებული |
Source 1-ისთვის ჩამოტვირთვის გზაა ის, რაც სწორად უნდა დააყენო. FastDL-ის გარეშე კლიენტი რუკას თავად სათამაშო სერვერიდან შეზღუდული სიჩქარით იღებს, რაც 60 MB-იანი რუკისთვის ნიშნავს წუთებს ჩატვირთვის ეკრანზე და დიდ შანსს, რომ მოთამაშე დანებდება. როცა sv_downloadurl მიუთითებს ვებ-სერვერზე, სადაც იგივე ფაილების .bz2-ით შეკუმშული ასლებია, ჩამოტვირთვა სწრაფია და სათამაშო სერვერი თავის გამტარუნარიანობას თამაშზე ხარჯავს. Garry's Mod-ის Workshop და FastDL აღწერს მის აწყობას და იგივე მეთოდი TF2-სა და CS:S-ზეც მუშაობს.
რუკის ფაილები დისკსაც ხარჯავს. Source-ის რუკები ჩვეულებრივ 20-100 MB-ია თითო, CS2-ის Workshop რუკები შეიძლება რამდენიმე ასეული იყოს, ხოლო Workshop-ზე დაფუძნებული თამაშები ყველაფერს ქეშავენ, რაც ოდესმე ჩამოტვირთეს. 50-რუკიანი როტაცია რამდენიმე გიგაბაიტია, რასაც მცირე გეგმაზე მნიშვნელობა აქვს - იხილე რამდენი დისკი სჭირდება სათამაშო სერვერს.
როტაციის შექმნა, რომლისთვისაც ხალხი რჩება#
ტექნიკური ნაწილი მარტივია. ნაწილი, რომელიც წყვეტს, სავსე იქნება თუ არა შენი სერვერი 21:00-ზე, თავად სიაა.
დაიწყე პოპულარული რუკებით. პირველი რუკა რესტარტის შემდეგ ისაა, რასაც ხალხი ბრაუზერში დათვალიერებისას ხედავს. სერვერს, რომელიც პიკის დროს უცნობ custom რუკაზე დგას, გვერდს უვლიან. პირველად ორი-სამი საყვარელი რუკა დააყენე, ექსპერიმენტები კი შუაში შეინახე.
მოარგე რუკები მოთამაშეების რაოდენობას. დიდი რუკები ათი მოთამაშით ცარიელდება; პატარები ოცდაათით ქაოსია. არსებობს plugin-ები, რომლებიც მოთამაშეების რაოდენობის მიხედვით ორ ციკლს შორის ერთვება, და SourceMod-ის mapchooser შეიძლება სხვადასხვა სიაზე მიმართო. მათ გარეშეც, პატარა რუკების "ღამის" ციკლი, რომელიც სერვერის სიმშვიდისას გამოიყენება, რამდენიმე შემოსულ მოთამაშეს წასვლისგან აკავებს.
ძალიან მალე ნუ გაიმეორებ. მეხსიერების გარეშე ხმის მიცემა ყოველ ჯერზე ერთსა და იმავე საყვარელ რუკას ირჩევს. SourceMod-ის mapchooser ბოლოს ნათამაშებ რუკებს გამორიცხავს (sm_mapvote_exclude აყენებს რამდენს); გამოიყენე.
ამოჭერი მონაცემების მიხედვით. სერვერის ლოგები ყოველ რუკის შეცვლას და მასზე მოთამაშეების რაოდენობას წერს. რუკა, რომელიც ჩატვირთვიდან ხუთ წუთში სერვერის ნახევარს კარგავს, როტაციიდან უნდა წავიდეს, რამდენადაც არ უნდა მოგწონდეს. სათამაშო სერვერის საზოგადოების ზრდაში მეტია ასეთი სიგნალების წაკითხვაზე.
Custom რუკები უმცირესობაში დატოვე. ორი-სამი კარგად გაკეთებული custom რუკა სერვერს იდენტობას აძლევს. თხუთმეტი ნიშნავს, რომ მოთამაშეების უმეტესობა რუკის შეცვლების უმეტესობაზე რაღაცას ჩამოტვირთავს.
რუკის შეცვლის პრობლემების მოგვარება#
რუკა არასდროს იცვლება. დასრულების ყველა პირობა 0-ია, ან plugin-ი შემდეგ რუკას გადაფარავს. შეამოწმე mp_timelimit, mp_winlimit და mp_maxrounds, მერე nextmap.
ყოველთვის ერთსა და იმავე რუკაზე ბრუნდება. ციკლის ფაილი არ იკითხება - არასწორი ადგილი, არასწორი mapcyclefile, ან ყველა სხვა ჩანაწერი არასწორია და გამოტოვებულია. რუკის შეცვლისას კონსოლში "map not found" ხაზებს დააკვირდი.
სერვერი რუკის შეცვლისას გავარდა. Custom რუკა დაზიანებულია ან სჭირდება კონტენტი, რომელიც სერვერს არ აქვს. ჩატვირთე ის ცალკე changelevel-ით და ლოგს უყურე. მეორე ეჭვმიტანილი plugin-ებია, რომლებიც რუკის ობიექტებს ებმება.
მოთამაშეებს "missing map"-ით აგდებს. ჩამოტვირთვა გამორთულია (sv_allowdownload 0), FastDL-ის URL არასწორია, ან .bz2 ვებ-სერვერზე არ ემთხვევა სათამაშო სერვერზე არსებულ რუკას.
Workshop კოლექცია არ იტვირთება. Steam token-ი არ არის, კოლექცია პრივატულია, ან რუკა Workshop-იდან წაშლილია. კონსოლი ჩავარდნილი ელემენტის id-ს ბეჭდავს.
FAQ#
შემიძლია როტაცია Minecraft-ის ან Rust-ის სერვერზე გავუშვა?
იმავე გაგებით - არა. ისინი ერთ მუდმივ სამყაროს ინახავენ. სამყაროს გადართვა შეგიძლია სერვერის გაჩერებით და level-name-ის (Minecraft) ან რუკის პარამეტრების (Rust) შეცვლით, ან რამდენიმე სამყაროს გაშვებით plugin-ით, როგორიცაა Multiverse, მაგრამ მატჩის ბოლოს არაფერი ავტომატურად არ ტრიალებს.
რამდენი რუკა უნდა ჰქონდეს როტაციას?
იმდენი, რომ ერთი და იგივე რუკა ერთი საღამოს განმავლობაში არ დაბრუნდეს, და იმდენად ცოტა, რომ თითოეული ითამაშონ. 30-წუთიანი დროის ლიმიტისთვის რვიდან თორმეტამდე რუკა გონივრული დასაწყისია. ხმის მიცემა საჭირო რაოდენობას ამცირებს, რადგან მოთამაშეები გამოტოვებენ იმას, რაც არ მოსწონთ.
რატომ ირჩევს ჩემი ხმის მიცემა სულ ერთსა და იმავე რუკას?
იმიტომ, რომ არაფერი უშლის ხელს. ბოლოს ნათამაშები რუკები ხმის მიცემიდან გამორიცხე, შეზღუდე, რამდენად ხშირად შეიძლება რუკის ნომინირება, ან საყვარელი რუკა ხმის მიცემიდან ამოიღე და ფიქსირებულ ციკლში გარკვეულ პოზიციაზე ჩასვი.
იწვევს custom რუკები სერვერის ლაგს?
შეიძლება. ცუდად ოპტიმიზებული რუკა ბევრი დინამიური ობიექტით სერვერის CPU-ს ყოველ tick-ზე ხარჯავს, უზარმაზარი კი - მეხსიერებას. ყოველი ახალი რუკა მთავარ როტაციაში დამატებამდე სავსე სერვერით გამოცადე.
სჭირდება როტაციის შეცვლას რესტარტი?
ჩვეულებრივ არა. Source და GoldSrc ციკლს რუკის შეცვლისას კითხულობს, SourceMod კი რუკების სიებს რუკის დაწყებისას თავიდან ტვირთავს. CS2-ის map group-ები და არა-Source თამაშების უმეტესობა როტაციას გაშვებისას კითხულობს, ამიტომ მათ რესტარტი სჭირდება.




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