Původní acServer neví, co je šampionát. Spouští sessions, které nakonfiguruješ, na požádání je opakuje ve smyčce a po každé session zapíše jeden soubor s výsledky ve formátu JSON - pořadí, body a to, kdo je přihlášen do kterého auta, jsou starost někoho jiného. Tím někým bývá obvykle Assetto Corsa Server Manager (ACSM), bezplatné webové rozhraní, které pro každou událost sestaví server_cfg.ini a entry_list.ini, samo spustí acServer, sesbírá výsledky a promění je v tabulku bodů s třídami, týmy, registracemi a penalizacemi. Pokud nechceš provozovat další program, stejnou ligu zvládneš ze dvou konfiguračních souborů a tabulky a tento článek pokrývá obojí: cestu přes Server Manager i nastavení pod ním, kterému musíš rozumět tak či tak.
Pokud jsi ještě nenastavil základní server, začni průvodcem serverem Assetto Corsa, který prochází server_cfg.ini, sessions, porty a modový obsah klíč po klíči. Tento článek předpokládá, že to funguje, a pokračuje provozem stejného pole řidičů týden po týdnu.
Co původní acServer lize dává a co ne#
Vše, co liga od hry samotné potřebuje, už tam je; jen to není propojené.
- Výsledky. Na konci každé session
acServerzapíše soubor JSON do své složkyresults, pojmenovaný datem, časem a typem session - něco jako2026_10_7_20_45_RACE.json. Obsahuje každé auto, každé kolo, nejlepší kola, celkové časy a kontakty, které server zaznamenal. - Pevná místa.
entry_list.inisGUIDu každého záznamu aLOCKED_ENTRY_LIST=1dá každému řidiči vlastní auto, skin a místo na roštu. - Nástroje vyrovnání.
BALLASTaRESTRICTORu každého záznamu, sMAX_BALLAST_KGvserver_cfg.inijako stropem. - Závodní formáty. Trénink, kvalifikace a závod za sebou, plus druhý závod s obráceným roštem a povinné pit okno, vše nastavené v konfiguraci.
Chybí jí paměť. Nic se nepřenáší z jednoho závodního večera na další: žádné body, žádný ballast za úspěch, žádný záznam, že byl řidič minulý týden potrestán. Každý nástroj pro šampionáty, včetně ACSM, je vrstva, která čte soubory s výsledky, drží stav mezi událostmi a před další událostí zapisuje nové konfigurační soubory. Když to víš, řešení potíží je mnohem snazší, protože téměř každý problém ligy je jeden z těchto tří kroků, který se pokazil.
Assetto Corsa Server Manager ve zkratce#
ACSM je jediná binárka v jazyce Go s rozhraním v prohlížeči, původně vytvořená Emperor Servers a zveřejněná jako open source na GitHubu. Původní repozitář je nyní archivovaný a jen pro čtení, takže provozuješ hotový software, ne něco, co se ti pod rukama změní. To je většinou úleva u hry, která se roky nehýbe, ale znamená to, že chyby se upstream opravovat nebudou a nová práce probíhá ve forcích.
Části, které konfiguruješ, žijí v config.yml vedle binárky:
steam: install_path: assetto executable_path: acServerhttp: hostname: 0.0.0.0:8772 session_key: generate-a-long-random-string server_manager_base_URL: https://league.example.comstore: type: boltdb path: server_manager.dbaccounts: admin_password_override:server: audit_logging: true performance_mode: false persist_mid_session_results: false| Nastavení | K čemu slouží |
|---|---|
http.hostname | Adresa a port webového rozhraní. 8772 je dodávaná výchozí hodnota |
http.session_key | Šifruje přihlašovací sessions. Nastav vlastní náhodnou hodnotu |
server_manager_base_URL | Používá se pro odkazy ve zprávách šampionátu a registracích |
store.type | boltdb drží vše v jednom souboru; json zapisuje jeden soubor na událost |
store.path | Kde ta data leží. Tento soubor zálohuj |
admin_password_override | Nouzový reset hesla uživatele admin |
audit_logging | Zaznamenává, který uživatel co spustil, zastavil nebo smazal |
performance_mode | Vypne živé měření časů, aby šetřil CPU |
První přihlášení je uživatelem admin s heslem servermanager a hned jsi donucen ho změnit. Pokud ho později ztratíš, vlož do admin_password_override dočasnou hodnotu, restartuj, přihlas se s ní a nastav nové. Pro každého komisaře vytvoř samostatný účet místo sdíleného admin přihlášení; audit log je užitečný, jen když jména v něm něco znamenají.
Záleží na tom, kde běží. ACSM acServer sám spouští a zastavuje, takže chce být tím, kdo proces řídí. To sedí na stroj, který ovládáš - vlastní počítač nebo dedikovaný server - kde otevřeš 9600 TCP a UDP, 8081 TCP a webový port. Na herním panelu je správcem procesů panel, takže praktický postup je tam souborový, popsaný níže: panel spouští acServer a ty mezi událostmi vyměňuješ dva konfigurační soubory.
Sestavení šampionátu: třídy, body a události#
Šampionát v ACSM je seznam tříd, seznam účastníků a seznam událostí. Každá událost je trať, layout, posloupnost sessions a čas startu; když událost spustíš, ACSM zapíše konfiguraci pro ni, spustí server a po skončení sessions připojí výsledky k šampionátu.
Třídy
Třída je sada aut plus její vlastní tabulka bodů. Série s jednou značkou potřebuje jednu třídu. Víctřídní vytrvalostní rošt - GT3 a GT4 na jedné trati - potřebuje třídu na každou kategorii, každou hodnocenou zvlášť, což je jediný spravedlivý způsob, jak hodnotit pole, kde pomalejší třída nikdy nemůže vyhrát celkově.
Body
Výchozí tabulka je z Formule 1 a každé pole je upravitelné pro každou třídu:
| Pole | Výchozí hodnota | Co uděluje |
|---|---|---|
| Places | 25, 18, 15, 12, 10, 8, 6, 4, 2, 1 | Body podle pořadí v cíli ve třídě |
| Best lap | 0 | Bonus za nejrychlejší kolo závodu |
| Pole position | 0 | Bonus za první místo v kvalifikaci |
| Collision with driver | 0 | Body odečtené za každý kontakt auto s autem |
| Collision with environment | 0 | Body odečtené za každý kontakt se zdí |
| Cut track | 0 | Body odečtené za každé započítané seříznutí |
| Second race multiplier | 1 | Škáluje body za druhý závod s obráceným roštem |
Odečty za kolize a seříznutí svádějí a obvykle jsou chyba. Server počítá každý dotek, včetně toho, kdy tě někdo vystrčil, takže automatické odečty trestají oběti stejně ochotně jako viníky. Nech je na nule a incidenty řeš komisaři. Malý bonus za nejlepší kolo je v pořádku; velký odměňuje řidiče, kteří v posledních dvou kolech zajedou pro čerstvé pneumatiky, místo aby jeli závod.
Rovnost bodů se rozhoduje podle countbacku - řidič s více vítězstvími je výš, pak s více druhými místy a tak dále - což je konvence, kterou většina lig stejně používá. Zveřejni ji v pravidlech, aby nikoho nepřekvapila v posledním kole.
Události
Události přidávej v pořadí kalendáře a každé dej celou posloupnost sessions: trénink, kvalifikaci, závod a druhý závod, pokud je jedeš. Událost můžeš zkopírovat a změnit jen trať, což drží délky sessions a asistenty v sezóně konzistentní. Měň jednu věc najednou mezi sezónami, ne mezi koly.
Entry listy pro ligu#
Entry list je místo, kde liga buď působí organizovaně, nebo ne. Naplnit ho můžeš třemi způsoby.
Pevný seznam. Každého řidiče přidáš sám s jeho SteamID64 jako GUID, jeho autem, skinem a týmem. Se zamčeným entry listem nemůže jeho místo zabrat nikdo jiný a vždy se objeví ve stejném autě. Je to nejvíc práce a nejméně potíží.
Otevření účastníci. Šampionát přijme každého, kdo se připojí, a automaticky ho přidá do seznamu účastníků. Se zapnutou volbou persist se auto a skin, se kterými se řidič poprvé připojí, stanou jeho na celou sezónu. Hodí se to na veřejnou sérii „čtvrteční večer“ s proměnlivým polem; na ligu s čekací listinou ne.
Registrační formulář. ACSM umí zveřejnit registrační stránku, kde řidiči zadají jméno, Steam GUID, tým a preferované auto a skin, volitelně s vlastními otázkami a ochranou reCAPTCHA nastavenou v sekci championships souboru config.yml. Žádosti lze přijímat automaticky nebo schvalovat ručně. Schválení řidiči se dostanou do seznamu účastníků s vyplněným GUID, což odstraňuje nejnáchylnější krok k chybám - opisování sedmnáctimístných čísel ze zpráv na Discordu.
Ať použiješ kterýkoli, pod ním dál platí pravidla základního serveru:
- Počet záznamů a
MAX_CLIENTSnesmí překročit počet pit boxů trati. Rošt o 32 autech se na trať s 24 boxy nevejde a selhání vypadá jako rozbitá session, ne jako jasná chyba. - Každé
MODELmusí být v seznamu aut události a každýSKINmusí existovat ve složceskinsdaného auta na serveru, jinak server sáhne po náhradě nebo záznam odmítne. - Řidiči potřebují stejnou verzi každého modového auta a trati. Seznam obsahu s odkazy ke stažení zveřejni před prvním kolem - obsah Assetto Corsa, Content Manager a modové tratě popisuje, jak ho zabalit, aby si ho lidé opravdu nainstalovali.
Ballast a restrictor
Dva způsoby použití. Pevné vyrovnání je hodnota u záznamu nastavená na sezónu - třída pro nováčky nebo handicapovaný veterán. Ballast za úspěch se mění každé kolo: lídr šampionátu nese 30 kg, druhý 20 kg a tak dále. Původní acServer neví, kdo vede, takže ballast za úspěch znamená upravit entry list před každým kolem, což úprava účastníků po událostech v ACSM urychlí. Drž MAX_BALLAST_KG nad největší hodnotou, kterou použiješ, jinak ji server tiše ořízne.
Restrictor je procentuální škrcení výkonu a působí jinak než ballast: ballast škodí brzdění a zatáčení, restrictor přímkám. Na vyrovnání různých aut použij restrictor; na zpomalení řidiče, který je prostě rychlejší, je ballast na tratích s dlouhými rovinkami méně trestající.
Závodní formáty: obrácené rošty, pit okna a závodní víkendy#
Většina formátů lig je hrstka klíčů v server_cfg.ini, které ACSM zpřístupňuje jako pole formuláře:
[SERVER]LOCKED_ENTRY_LIST=1PICKUP_MODE_ENABLED=0MAX_BALLAST_KG=100REVERSED_GRID_RACE_POSITIONS=8RACE_PIT_WINDOW_START=10RACE_PIT_WINDOW_END=20RACE_EXTRA_LAP=0QUALIFY_MAX_WAIT_PERC=120[RACE]NAME=RaceLAPS=25WAIT_TIME=90IS_OPEN=0| Klíč | K čemu slouží |
|---|---|
REVERSED_GRID_RACE_POSITIONS | 0 bez druhého závodu; N jede druhý závod s obrácenými prvními N; -1 obrátí celé pole |
RACE_PIT_WINDOW_START / _END | Rozsah kol (nebo minut u závodu na čas), v němž musí proběhnout povinná zastávka |
RACE_EXTRA_LAP | 1 přidá kolo poté, co u závodu na čas vyprší časovač |
QUALIFY_MAX_WAIT_PERC | Jak dlouho server čeká na řidiče na kole, když kvalifikace končí, v procentech nejlepšího kola |
IS_OPEN | 0 uzavře závod pozdním příchozím; 1 je pustí dovnitř; 2 je pustí do 20 sekund před startem |
Obrácený rošt je klasický formát dvou závodů: sprint v pořadí z kvalifikace a pak druhý závod s obrácenou osmičkou nejlepších. Spáruj ho s Second race multiplier pod 1 - běžné je 0,5 - aby o titulu nerozhodoval závod-loterie.
Pit okno promění sprint v závod strategie a je to nejbližší, co původní server nabízí k povinné zastávce. Řidič, který v okně nezastaví, je na konci potrestán. Vysvětli to na briefingu před závodem; někdo na to vždycky zapomene.
ACSM má také závodní víkendy: řetězec sessions, které lze jet v různé časy - kvalifikace ve středu, závody ve čtvrtek - kde se rošt každé session sestavuje z výsledků dřívější s filtry, jako je obrácení nebo rozdělení pole. Je to funkce, po které sáhneš, když je rošt větší než počet pit boxů a potřebuješ rozdělit kvalifikaci na dva závody, nebo když se lidé nemohou zavázat k jednomu dlouhému večeru.
Závodní večer#
Rutina, která udrží večer klidný:
- Před večerem. Potvrď, že seznam obsahu je konečný, entry list odpovídá schváleným řidičům a layout trati události je správný. Spusť událost o hodinu dřív s otevřeným tréninkem, aby se problémy ukázaly dřív, než se rošt sestaví.
- Třicet minut předem. Zveřejni název serveru, heslo a připomínku verzí obsahu. Většina neúspěšných připojení jsou chyby checksumu kvůli něčímu zastaralému modu.
- Během kvalifikace. Sleduj živé časy řidičů, kteří nenajeli čas. Kdo v tuto chvíli chybí, obvykle uvízl na chybě při připojení, není pozdě.
- Během závodu. Jeden komisař sleduje, nikdo jiný na ovládání nesahá. Admin příkazy v chatu -
/admins admin heslem, pak/kick,/next_session,/restart_session- jsou pro nouzové situace, ne pro úpravu výsledků. - Po závodě. Nech výsledky zapsat. Nezastavuj server v okamžiku, kdy vedoucí projede cílem: výsledky se zapisují na konci session, po
RACE_OVER_TIME.
Tento poslední bod pořadatele zaskočí pořád. Server zastavený uprostřed session nezapíše pro tu session nic. Experimentální volba ACSM persist_mid_session_results se před tím pokouší chránit tím, že před zastavením vynutí změnu session, ale bezpečnější zvyk je nechat sessions skončit samy.
Výsledky, penalizace a odvolání#
Soubor JSON s výsledky je zdrojem pravdy. ACSM ho po skončení události automaticky importuje do šampionátu a soubor s výsledky můžeš importovat i ručně - tak obnovíš závod, který se omylem jel mimo šampionát nebo na jiném serveru.
Penalizace se uplatňují v zobrazení výsledků jako přidaný čas nebo ztracené pozice a body se z toho přepočítají. Postup komisařů nastav před začátkem sezóny:
- Lhůta na protesty, například 24 hodin po závodě, s povinným časem ve videozáznamu.
- Malý panel, ne jeden člověk a nikdo, kdo se incidentu účastnil.
- Pevná škála trestů - pět sekund za drobný zbytečný kontakt, ekvivalent průjezdu boxy za vážný - aby rozhodnutí byla konzistentní, ne osobní.
Uchovej kopii každého surového souboru s výsledky i po uplatnění penalizací. Pokud je rozhodnutí zrušeno, chceš mít originál, ze kterého přepočítáš, ne řetěz úprav. Pravidla serveru, moderace a tým pokrývá lidskou stránku podrobněji a události a turnaje na herních serverech obsahuje širší postup pro pořádání organizovaných večerů.
Souborová alternativa
Bez ACSM jsou liga tři složky a rutina. Drž jeden pár server_cfg.ini a entry_list.ini na každé kolo, pojmenovaný podle kola, a před večerem zkopíruj správný pár do cfg/. Po závodě vezmi JSON z results, zapiš pořadí v cíli do tabulky s tvou tabulkou bodů a pravidlem countbacku, penalizace uplatni tam a entry list dalšího kola aktualizuj o případný ballast za úspěch. Je to ruční a pro ligu o dvanácti autech zcela použitelné a má jednu skutečnou výhodu: konfigurace i výsledek každého kola je prostý soubor, který přečteš i za deset let.
Takhle běží liga i na serveru spravovaném panelem. Na RE:NODE oba soubory upravuješ v editoru v prohlížeči nebo nahraješ pár pro dané kolo přes SFTP, složku s výsledky stáhneš ze správce souborů a server restartuješ z konzole. Záznam v Schedules umí restartovat server do další posloupnosti sessions v pevný čas a zálohy lze udělat na požádání těsně před závodním večerem. Pokud chceš webové rozhraní ACSM, je to práce pro stroj, kde procesy spravuješ sám.
Zálohy a ochrana sezóny#
To, co je v lize nenahraditelné, je malé, a právě proto to lidé zapomínají kopírovat:
server_manager.db(nebo složka s úložištěm JSON) - každý šampionát, účastník, událost a výsledek v ACSM.config.yml, včetně klíče session; jeho ztráta všechny odhlásí, ale žádná data nezničí.- Složka
resultszacServer, která je tvou zálohou, kdyby se databáze někdy poškodila. - Tvůj seznam obsahu s přesnými verzemi a odkazy.
Zálohuj po každém kole, ne jednou týdně. Sezóna je jeden soubor, který se mění jednou týdně, takže je to nejsnazší věc na světě k ochraně a nejbolestivější k rekonstrukci z paměti. Zálohy, které se opravdu obnoví vysvětluje, proč má jedna zkušební obnova před začátkem sezóny větší cenu než libovolný počet netestovaných kopií.
Řešení potíží#
Událost začala, ale šampionát neukazuje žádné výsledky. Session byla zastavena dřív, než skončila, takže se nezapsal soubor s výsledky. Zkontroluj složku results; pokud tam soubor je, importuj ho ručně.
Řidič je v šampionátu dvakrát. Připojil se jednou s jiným účtem Steam, nebo ho přidali otevření účastníci dřív než ty. Sluč je tak, že necháš jedno GUID a duplikát před dalším kolem smažeš, protože body nenásledují jméno.
Řidiči jsou vyhozeni hned po připojení. Zamčený entry list s GUID, které se neshoduje, skin, který neexistuje, nebo chyba checksumu. Log serveru řekne, která z nich.
Rošt je kratší než entry list. MAX_CLIENTS nebo pit boxy trati jsou nižší než počet účastníků. Použij závodní víkend s rozdělenou kvalifikací.
Druhý závod nikdy nezačne. REVERSED_GRID_RACE_POSITIONS je 0, nebo závod po RACE_OVER_TIME nemá žádná kola k odjetí. Zkontroluj hodnotu ve vygenerovaném server_cfg.ini, ne ve formuláři.
Webové rozhraní je nedostupné. Webový port není otevřený, nebo je hostname navázán na localhost. Porty herních serverů vysvětleně popisuje testování jednoho portu po druhém; čtení konzole je o hledání řádku v logu, který říká, na jakou adresu se navázal.
FAQ#
Je Assetto Corsa Server Manager stále udržovaný?
Původní open source repozitář je archivovaný a jen pro čtení. Software pořád funguje, protože server Assetto Corsa se roky nezměnil, ale opravy a nové funkce se objevují jen v komunitních forcích.
Mohu vést šampionát bez Server Manageru?
Ano. Drž pár konfiguračních souborů na každé kolo, po každém závodě čti soubory JSON s výsledky a body počítej v tabulce. Je to na kolo pomalejší a mnohem jednodušší na hostování, což se hodí malým ligám na serveru spravovaném panelem.
Jak zabráním cizím lidem zabírat místa v lize?
Vlož SteamID64 každého řidiče do pole GUID jeho záznamu a nastav LOCKED_ENTRY_LIST=1. Přidej také heslo pro připojení, aby se server nezaplnil lidmi, které pak musíš vyhazovat.
K čemu je násobitel druhého závodu?
Škáluje body za druhý závod s obráceným roštem. Hodnota 0,5 dává poloviční body, což drží obrácený závod smysluplný, aniž by šťastný výsledek převážil plnohodnotný hlavní závod.
Mám automaticky odečítat body za kolize?
Obvykle ne. Server počítá každý kontakt bez ohledu na zavinění, takže automatické odečty trestají řidiče, který byl zasažen, stejně jako toho, kdo zasáhl. Spravedlivější jsou komisaři se záznamy.
Kde se ukládají výsledky závodů?
Ve složce results serveru, jeden soubor JSON na session. Server Manager je importuje do vlastní databáze, ale surové soubory stojí za to uchovat jako zálohu a stopu pro audit.




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.