RE:NODE

Návody12 min čtení

Workshopové mapy CS2 na dedikovaném serveru

Načítej workshopové mapy CS2 podle id, spusť celou kolekci přes host_workshop_collection, přepínej mapy, postav rotaci a oprav mapy, které se nestáhnou.

0 čtenářů

Server Counter-Strike 2 načítá komunitní mapy podle jejich id ve Steam Workshopu, ne podle názvu souboru. host_workshop_map <id> stáhne jednu mapu a spustí ji; host_workshop_collection <id> změní celou kolekci z Workshopu na pool map serveru a ds_workshop_changelevel <název> přepíná mezi mapami v ní. Hráči nic neinstalují - klient CS2 si mapu stáhne z Workshopu při připojování. Skoro všechno, co se pokazí, pochází ze čtyř míst: chybějícího nebo neplatného tokenu herního serveru, kolekce, která není veřejná, názvu mapy napsaného jinak, než ho zná server, a disku, který se plní, jak kolekce roste. Tento návod pokrývá každé z nich a navíc to, jak postavit rotaci, která přežije restart.

Jak se workshopové mapy dostanou na server CS2#

V CS:GO šlo ještě hodit soubor .bsp do složky maps a načíst ho podle názvu. Mapy pro CS2 jsou zabalené soubory .vpk zkompilované pro Source 2 a podporovaný způsob, jak dostat komunitní mapu na dedikovaný server, je Workshop. Server si od Steamu vyžádá položku, stáhne ji do vlastní workshopové cache, připojí ji a pak načte mapu v ní. Klient dělá totéž ze své strany při připojení.

Z tohoto návrhu plynou tři důsledky, které stojí za to si pamatovat:

  • Id je mapa. Id workshopové položky je dlouhé celé číslo z URL položky (?id=3070596702). Interní název mapy, například de_cache, je znám až po stažení položky.
  • Steam musí serveru důvěřovat. Stahování z Workshopu jde přes přihlášení serveru do Steamu, což je na veřejném serveru Game Server Login Token. Server bez tokenu, s vypršelým nebo zabanovaným tokenem většinou hlásí problém jako „mapa se nestáhla“, ne jako chybu tokenu. Tokeny herních serverů Steam vysvětlují, jak token vydat a vyměnit.
  • Aktualizace sledují autora. Když autor zveřejní novou verzi, server si ji vezme při dalším načtení mapy. To je pohodlné u oprav chyb a občas bolestivé, když aktualizace rozbije spawny večer před turnajem.
PříkazBereCo dělá
host_workshop_mapid položky mapyStáhne (nebo aktualizuje) jednu mapu a přepne na ni
host_workshop_collectionid kolekceStáhne všechny mapy v kolekci a použije je jako pool map
ds_workshop_listmapsnicVypíše názvy map v aktuální kolekci
ds_workshop_changelevelnázev mapyPřepne na mapu z kolekce podle jejího názvu
changelevelnázev mapyPřepne na standardní mapu; ne pro workshopové mapy

Spuštění jedné workshopové mapy#

Nejjednodušší případ je jedna mapa, například tréninkový server, který hraje pořád jen aim mapu, nebo scrim na mapě, kterou Valve vyřadilo z oficiálního poolu. Dej příkaz na spouštěcí řádek místo +map:

bash
$ ./game/bin/linuxsteamrt64/cs2 -dedicated -port 27015 +game_alias competitive \    +sv_setsteamaccount <token> +host_workshop_map 3070596702

Při prvním startu konzole ukáže průběh stahování a pak se mapa načte. Při dalších startech server položku zkontroluje, zjistí, že je aktuální, a načte ji hned. Stejný příkaz zadaný do konzole běžícího serveru mapu stáhne a přepne na ni naráz, což je nejrychlejší způsob, jak mapu vyzkoušet, než se k ní zavážeš.

U hostingu s panelem celý řádek nepíšeš. Spouštěcí argumenty se skládají z polí na záložce Startup a token má vlastní pole; workshopový příkaz buď patří do spouštěcího pole, pokud ho šablona nabízí, nebo ho zadáš do konzole, až server běží. Na RE:NODE se instalace CS2 provede za tebe a na záložce Setup čeká, dokud nevložíš svůj token, což je také token, který používá stahování z Workshopu - server se správným tokenem tedy nemá žádný další krok nastavení Workshopu.

Kolekce jako pool map#

Kolekce je stránka na Workshopu, která vypisuje jiné položky. Vytvoř ji na stránce kterékoli mapy ve Workshopu („Add to collection“), přidej mapy, které chceš, nastav viditelnost na veřejnou a zkopíruj její id z URL. Soukromá kolekce nebo kolekce jen pro přátele je nejčastější důvod, proč server nastartuje bez čehokoli.

bash
$ ./game/bin/linuxsteamrt64/cs2 -dedicated +game_alias casual \    +sv_setsteamaccount <token> +host_workshop_collection 3123456789

Při startu server stáhne všechny mapy v kolekci, než načte první. U tuctu map po několika stovkách megabajtů může první start trvat několik minut a konzole bude ukazovat jedno stahování za druhým. To je normální. Restarty po tom stahují jen položky, které se změnily.

Až to běží, zjisti, jak server mapy nazývá:

code
ds_workshop_listmapsds_workshop_changelevel de_cache

ds_workshop_listmaps vypíše názvy map a ds_workshop_changelevel bere jeden z těchto názvů. Názvy nejsou vždy takové, jaké naznačuje titul ve Workshopu - mapa nazvaná „Cache“ může být de_cache, de_cache_cs2 nebo něco, co autor vymyslel - proto je kopíruj z výstupu, místo abys hádal.

Historicky načtení kolekce na dedikovaném serveru Source vyžadovalo klíč Steam Web API předaný přes -authkey a CS2 chování kolem toho od vydání změnilo víc než jednou. Pokud se kolekce odmítá načíst, zatímco jednotlivé mapy z ní fungují, vygeneruj klíč na stránce Web API svého Steam účtu, přidej -authkey <klíč> na spouštěcí řádek a zkus to znovu. Aktuální stav si ověř v poznámkách Valve k dedikovanému serveru CS2, než kolem kolekcí postavíš velkou rotaci - načítání jednotlivých map bylo po celou dobu stabilní cestou.

Výběr mapy, na které server startuje

Když se kolekce načte, první mapu vybere server sám. Pokud chceš konkrétní startovní mapu, spolehlivou metodou je nechat server nastartovat a pak přepnout na požadovanou mapu příkazem ds_workshop_changelevel z příkazu konzole nebo naplánované úlohy. Některé spouštěcí skripty kombinují +host_workshop_collection s +host_workshop_map, aby nastavily startovní mapu; na některých buildech to fungovalo a na jiných ne, takže to vyzkoušej na své verzi, nespoléhej na to.

Rotace map: engine, skupina map a pluginy#

CS2 má tři překrývající se způsoby, jak rozhodnout, co se bude hrát dál, a server s workshopovými mapami si musí jeden vybrat záměrně.

  1. Kolekce jako skupina map. Když server běží s kolekcí, hlasování o další mapě na konci zápasu (mp_endmatch_votenextmap 1) a logika další mapy čerpají z map kolekce. Je to cesta bez konfigurace a tu používá většina malých komunitních serverů.
  2. `mapcycle.txt` a `gamemodes_server.txt`. Jsou to rotační soubory enginu a vrstvy Valve, popsané v příkazech a cvarech serveru CS2. Pro standardní mapy fungují dobře. U workshopových map je jejich chování méně předvídatelné - položka ve skupině map potřebuje, aby šla mapa najít podle názvu, a to závisí na tom, že už je stažená. Ber je jako nástroj pro standardní mapy.
  3. Mapový plugin. Pluginy pro hlasování a nominace pro CounterStrikeSharp si vedou vlastní seznam map, obvykle název plus workshopové id u každé položky, a mapy mění samotnými workshopovými příkazy. Takhle rotuje většina vytížených komunitních serverů, protože to dává hráčům hlas a tobě seznam, který upravíš bez zásahu do kolekce.

Cvary, které záleží, ať vybereš kteroukoli cestu:

game/csgo/cfg/server.cfg
mp_match_end_changelevel 1   // change map when the match endsmp_endmatch_votenextmap 1    // show the next-map vote at match endmp_match_end_restart 0       // do not replay the same mapmp_timelimit 30              // minutes per map on modes that use itmp_maxrounds 16              // rounds per map; the mode config may override

Pamatuj, že konfigurace herního režimu se při každém načtení mapy spouští po server.cfg a přepisuje všechny cvary kol, které také nastavuje. Pokud se ti na casual serveru pořád resetuje mp_maxrounds, dej ho raději do souboru s přepsáním pro daný režim - u casual gamemode_casual_server.cfg, který běží jako poslední. Metamod a CounterStrikeSharp popisují instalaci pluginové vrstvy, pokud se vydáš třetí cestou.

host_workshop_*stahuje stejnou položkupřipojí seHráčstáhne při připojeníSteam Workshoppoložka nebo kolekceServer CS2přihlášení GSLTCache Workshopu.vpk na diskuNačtená mapads_workshop_changelevel
Jak se workshopová mapa dostane z Workshopu k hráči

Jak postavit kolekci, která se chová slušně#

Kolekce je konfigurace serveru, kterou držíš na Steamu, takže si zaslouží stejnou péči jako server.cfg.

  • Drž ji malou. Deset až patnáct map pro jednu komunitu stačí. Každá mapa stojí disk na serveru a stažení pro každého nového hráče a kolekce o čtyřiceti mapách znamená, že se o většině nikdy nehlasuje.
  • Vlastni kolekci. Vytvoř ji pod účtem, který komunita ovládá, ne pod osobním účtem moderátora. Pokud odejde a smaže ji, server nastartuje bez čehokoli.
  • Sleduj aktualizace map. Odebírej položky sám, aby ti Steam řekl, když autor zveřejní změnu. Aktualizovaná mapa se stáhne při dalším načtení; rozbitá aktualizace se řeší odebráním mapy z kolekce, dokud autor chybu neopraví.
  • Preferuj udržované mapy. Mnoho map bylo při spuštění CS2 rychle portováno a od té doby se jich nikdo nedotkl. Port s chybějícími clip brushi nebo rozbitým osvětlením vypadá na screenshotech dobře a hraje se špatně.
  • Odděl podle režimu. Surfová kolekce, aim kolekce a defuse kolekce na třech serverech jsou lepší než jedna smíšená, kde hlasování nabídne surfovou mapu publiku, které chce defuse. Servery pro surf, bhop a KZ a servery pro retakes a deathmatch mají každý své zvyklosti s mapami.

Disk, první start a cache Workshopu#

Obsah z Workshopu žije uvnitř instalace serveru ve vlastním stromu steamapps/workshop (přesná cesta se mezi buildy CS2 změnila, proto hledej složku content/730, místo abys věřil návodu). Každá mapa je jeden nebo více souborů .vpk plus metadata. Velikosti se enormně liší: malá aim mapa může mít desítky megabajtů, detailní defuse mapa několik set.

KolekceTypický přídavek na diskuPrvní start
1-3 aim nebo tréninkové mapypod 500 MBpod minutu
10-15 defuse map2-5 GBněkolik minut
30+ smíšených map8 GB a víctak dlouho, že to vypadá jako zamrznutí

Základní instalace CS2 je už sama velká, takže velká kolekce na malém tarifu dojde disk dlouho předtím, než dojde paměť. Když se disk zaplní během stahování, server obvykle selže nepříjemným způsobem - mapou, která „neexistuje“, nebo aktualizací, kterou nelze použít - proto při každé náhlé změně chování Workshopu nejdřív zkontroluj volné místo. Odebrání mapy z kolekce ji z cache nesmaže; staré složky položek smaž ručně při zastaveném serveru, pokud je málo místa. Mody ze Steam Workshopu na dedikovaných serverech vysvětlují strukturu cache a proč první starty napříč hrami vypršují.

Paměť je menší starost. Načtená mapa zvětšuje pracovní sadu serveru, dokud je aktuální, ale CS2 nedrží celou kolekci v paměti, takže desetimapová rotace stojí zhruba tolik, kolik stojí největší mapa v ní.

Změna map podle plánu#

Častý požadavek zní „odpoledne aim mapa, večer defuse mapy“ nebo „po nočním restartu vždy začít na stejné mapě“. Obojí jsou příkazy konzole na časovači.

code
ds_workshop_changelevel de_cachehost_workshop_map 3070596702

Na RE:NODE záložka Schedules spouští výraz cron proti uspořádanému seznamu úloh - příkaz konzole, záloha nebo akce napájení, se zpožděním mezi nimi - takže noční restart následovaný o dvě minuty později příkazem ds_workshop_changelevel na tvou oblíbenou mapu je jeden plán. Na vlastním stroji je totéž klient RCON v cronu. Výrazy cron vysvětleně popisují syntaxi a restarty, které pomáhají popisují, kdy má restart vůbec smysl.

Neplánuj změny map v době, kdy lidé hrají zápas. Změna uprostřed kola ho ukončí všem a naplánovaná úloha neví, že běží scrim. Vyber hodinu, kdy je server spolehlivě prázdný, nebo nech plán několik minut předem vypsat varování pomocí say.

Řešení potíží s workshopovými mapami#

Server nastartuje na standardní mapě a kolekci ignoruje. Kolekce je soukromá nebo jen pro přátele, nebo je id od jedné mapy, ne od kolekce. Otevři id v prohlížeči, kde nejsi přihlášený; pokud ho nevidíš ty, nevidí ho ani server.

„Failed to download“ nebo se stahování nikdy nezačne. Nejdřív token: zkontroluj v bootovacím logu přihlášení do Steamu a ujisti se, že je token platný a nepoužívá ho už jiný běžící server. Potom zkontroluj volný disk. Pak zkus jednu mapu z kolekce přes host_workshop_map, abys oddělil problém kolekce od problému stahování.

`ds_workshop_changelevel` hlásí, že mapa nebyla nalezena. Název je špatně. Spusť ds_workshop_listmaps a zkopíruj přesný název; názvy rozlišují velikost písmen a často mají přípony.

`changelevel de_mymap` u workshopové mapy selže. changelevel hledá standardní mapy. Pro mapy z kolekce použij ds_workshop_changelevel nebo host_workshop_map s id.

Hráči jsou vyhozeni nebo uvízli ve stahování. Klient se nemůže dostat k položce na Workshopu, obvykle proto, že ji autor skryl, odstranil nebo nastavil jako soukromou. Server může mít kopii pořád v cache, a proto se u tebe načte a u nich ne. Mapu nahraď.

Mapa se aktualizovala a teď jsou rozbité spawny nebo bombsite. Aktualizace od autora. Odeber položku z kolekce, změň mapu a počkej na opravu. Pokud potřebuješ přesně tu verzi, neexistuje podporovaný způsob, jak připnout starou revizi z Workshopu; veď si poznámky o mapách, které tě už jednou kously.

Pluginy padají na workshopové mapě, ale ne na standardních. Některé pluginy čtou konfigurační soubory pro konkrétní mapu podle názvu a nečekají strukturu složek, kterou workshopové mapy používají. Zjisti v dokumentaci pluginu, jak workshopové mapy pojmenovává, a v jeho logu hledej název mapy, který skutečně viděl.

FAQ#

Musí si hráči moje workshopové mapy odebírat?

Ne. Klient CS2 stáhne mapu z Workshopu při připojení k serveru, který ji hraje. Odběr předem hráčům jen ušetří čekání na stažení při prvním připojení, což se u velkých map vyplatí doporučit.

Můžu na server nahrát soubor mapy místo použití Workshopu?

Pro CS2 je podporovanou cestou Workshop. Volné soubory map pro Source 2 se nenačítají tak, jak se načítaly soubory .bsp z CS:GO, a cokoli, co funguje kopírováním souborů, se při další aktualizaci rozbije. Zveřejni mapu na Workshopu, třeba i jako neveřejnou pro testování, a načítej ji podle id.

Kolik workshopových map může server provozovat?

Pevný malý limit neexistuje, ale praktický ho určují disk a doba stahování. Deset až patnáct map udrží první start krátký a hlasování o mapě smysluplné. Nad třicet se většina map nikdy nevybere a každý restart po aktualizaci od autora je pomalejší.

Proč se mapa změnila, aniž jsem se jí dotkl?

Autor zveřejnil aktualizaci a server si ji stáhl, když se mapa příště načítala. Workshopové mapy vždy sledují nejnovější verzi; pokud se ti nějaká mapa pod rukama pořád mění, nahraď ji lépe udržovanou.

Potřebuje workshopová mapa jiný herní režim?

Často ano. Surfové, KZ, aim a arénové mapy očekávají pravidla custom nebo casual a často plugin. Načti mapu s odpovídajícím game_alias - obvykle custom nebo casual - a s pluginem, pro který byla mapa postavená, jinak hráči zjistí, že na surfové mapě běží časovač kola z defuse.


Komentáře

Zcela anonymně: žádný účet, žádný e-mail, žádné cookie. Ukládáme jen jméno, které napíšeš, text a čas - nic dalšího. Počet odkazů je omezený a značkování se nevykresluje.

0/2000