Dedikovaný server Assetto Corsa je acServer, malý program bez grafického rozhraní, který je součástí hry a zároveň se dá zdarma stáhnout přes SteamCMD. Konfigurují ho dva textové soubory, cfg/server_cfg.ini a cfg/entry_list.ini, potřebuje TCP a UDP na 9600 plus HTTP port 8081 a 2 GB paměti utáhnou plný rošt. Obsah nedistribuuje: každý řidič musí mít už nainstalovaná přesně ta auta a tu trať, které jsi nakonfiguroval, jinak ho server při kontrole checksumu odmítne.
Právě tenhle bod překvapí lidi, kteří přicházejí z jiných her. Stahování při připojení neexistuje. Server s modovanými auty znamená říct řidičům, co si mají nainstalovat a kde to získat, a rozdíl verzí v jediném souboru skončí vyhozením se zprávou, ze které nikdo moudrý není. Když tohle zvládneš, zbytek je příjemné odpoledne nad nastavováním délek sessions.
Co je dedikovaný server Assetto Corsa#
acServer je vlastní serverová binárka od Kunosu. Drží strukturu sessions, sleduje časy kol a pozice, uděluje penalizace a přeposílá stav aut mezi klienty. Fyzika se pořád počítá na počítači každého řidiče; server je autorita v tom, kdo je kde a co se v session děje.
Tři vlastnosti určují, jak se s ním pracuje:
- V praxi je jednovláknový. Nastavení
NUM_THREADSexistuje, ale plný rošt na jednom moderním jádře stačí a další jádra server nezrychlí. - Obsah poskytuje odkazem, ne hodnotou.
TRACK=ks_nordschleifeznamená „trať ve složcecontent/tracks/ks_nordschleifeu každého“. Server má kopii, aby mohl počítat checksumy; nikomu ji neposílá. - HTTP port není volitelný. Prochází jím registrace do lobby i panel s podrobnostmi serveru ve hře. Server s otevřeným
9600a zavřeným8081běží bez chyby a nikdo ho neuvidí.
Assetto Corsa je dost stará hra na to, aby ekosystém kolem ní znamenal stejně jako základní server. Content Manager používá téměř každý k úpravě těchto souborů a ke spouštění a procházení serverů a AssettoServer je plná náhrada acServer, na které běží většina moderních freeroam a traffic serverů. Obojí je popsáno níže, ale nejdřív se nauč původní soubory: na nich je postavené všechno ostatní.
Požadavky a využití zdrojů#
| Rošt | RAM | vCPU | Poznámky |
|---|---|---|---|
| Až 12 aut | 2 GB | 1 | Trénink a malé ligy |
| 16-24 aut | 2-3 GB | 1,5 | Běžný závodní server |
| 24-32 aut | 3-4 GB | 2 | Víc než hardware omezují pit boxy |
| AssettoServer s AI provozem | 4-8 GB | 2-3 | AI auta se simulují na straně serveru |
- CPU: taktovací frekvence přednost před počtem jader, viz výše. Výjimkou je AssettoServer s stovkami AI aut provozu, což je skutečně jiná zátěž a jediný případ, kdy se server Assetto Corsa prodraží.
- Disk: binárka serveru je drobná. Disk zaplňuje obsah - základní instalace jsou pár gigabajtů a modový traffic server s padesáti auty a silniční sítí o 100 km může dosáhnout desítek gigabajtů.
- Síť: stav každého klienta se vysílá každému dalšímu klientovi, takže provoz roste zhruba s druhou mocninou velikosti roštu, násobenou
CLIENT_SEND_INTERVAL_HZ. Server s 24 auty je skutečná, byť skromná zátěž odchozí linky. Řidiči cítí latenci a jitter; viz latence, jitter a ztráta paketů.
Instalace serveru#
Složka serveru už je v instalaci hry v steamapps/common/assettocorsa/server/ a obsahuje acServer.exe a linuxovou binárku acServer. Na stroji bez grafického rozhraní ji stáhni přímo:
$ steamcmd +force_install_dir /home/ac/server +login anonymous \ +app_update 302550 validate +quit$ cd /home/ac/server$ ./acServerRozložení je:
acServercfg/server_cfg.inicfg/entry_list.inicontent/cars/content/tracks/Nakopíruj složky aut a tratí, které chceš používat. U originálního obsahu je můžeš vzít z instalace hry; server potřebuje datové soubory pro checksumy, ne textury ve vysokém rozlišení, ale zkopírovat celou složku je jednodušší a disk je levný. SteamCMD vysvětleno obsahuje obecný postup pro skriptované instalace a aktualizace a SFTP a správce souborů je praktická cesta, jak dostat velkou složku s obsahem na hostovaný server.
server_cfg.ini: nastavení, na kterých záleží#
[SERVER]NAME=Thursday GT3 LeagueCARS=ks_ferrari_488_gt3;ks_mclaren_650_gt3;ks_porsche_911_gt3_r_2016CONFIG_TRACK=TRACK=ks_brands_hatchSUN_ANGLE=16PASSWORD=ADMIN_PASSWORD=change-thisMAX_CLIENTS=20UDP_PORT=9600TCP_PORT=9600HTTP_PORT=8081CLIENT_SEND_INTERVAL_HZ=18REGISTER_TO_LOBBY=1PICKUP_MODE_ENABLED=1LOCKED_ENTRY_LIST=0LOOP_MODE=1RACE_OVER_TIME=180RESULT_SCREEN_TIME=60ALLOWED_TYRES_OUT=2START_RULE=2DAMAGE_MULTIPLIER=50FUEL_RATE=100TYRE_WEAR_RATE=100ABS_ALLOWED=1TC_ALLOWED=1STABILITY_ALLOWED=0AUTOCLUTCH_ALLOWED=1TYRE_BLANKETS_ALLOWED=1FORCE_VIRTUAL_MIRROR=1MAX_CONTACTS_PER_KM=5KICK_QUORUM=85VOTING_QUORUM=80VOTE_DURATION=20BLACKLIST_MODE=1| Klíč | K čemu slouží |
|---|---|
NAME | Název v lobby. Dej do něj třídu a den |
CARS | Názvy složek z content/cars oddělené středníky |
TRACK | Název složky z content/tracks |
CONFIG_TRACK | Layout u tratí, které jich mají několik. Prázdné pro výchozí |
MAX_CLIENTS | Velikost roštu. Nesmí překročit počet pit boxů trati |
ADMIN_PASSWORD | Zadává se do chatu jako /admin password pro získání admin práv |
PASSWORD | Heslo pro připojení |
PICKUP_MODE_ENABLED | 1 dovolí řidičům zabrat libovolné volné místo. 0 je režim rezervací |
LOCKED_ENTRY_LIST | 1 omezí každé místo na GUID uvedené u něj |
LOOP_MODE | 1 restartuje posloupnost sessions donekonečna |
START_RULE | 0 zamčeno do zelené, 1 teleport do boxů, 2 průjezd boxy |
ALLOWED_TYRES_OUT | Kolik kol smí být mimo trať, než se započítá seříznutí. -1 to vypne |
DAMAGE_MULTIPLIER | Procenta. 0 je bez poškození, 100 plné |
FUEL_RATE, TYRE_WEAR_RATE | Procenta skutečné spotřeby |
ABS_ALLOWED, TC_ALLOWED | 0 zakázáno, 1 tovární nastavení, 2 vynuceně zapnuto |
STABILITY_ALLOWED | Stabilizační systém. 0 pro cokoli soutěžního |
MAX_CONTACTS_PER_KM | Vyhodí řidiče, kteří do všeho pořád naráží. 0 to vypne |
KICK_QUORUM, VOTING_QUORUM | Procento řidičů potřebné k přijetí hlasování |
CLIENT_SEND_INTERVAL_HZ | Frekvence aktualizací klientům. 18 je dodávaná hodnota |
REGISTER_TO_LOBBY | 1 zveřejní server v seznamu |
Několik poznámek, které ti ušetří večer:
CARSaTRACKjsou názvy složek, ne zobrazované názvy.ks_brands_hatch, ne „Brands Hatch“. Otevřicontent/tracksa opiš, co tam vidíš.CONFIG_TRACKje podsložka layoutu. Brands Hatch má Indy a GP; Nordschleife jich má několik. Prázdná hodnota u trati, která nemá výchozí layout, je častý důvod, proč se server při startu ukončí.MAX_CLIENTSnad počtem pit boxů trati ti nedá víc aut. Dá ti server, který se na začátku session chová divně. Než nastavíš velikost roštu, zkontroluj trať.CLIENT_SEND_INTERVAL_HZje nejbližší věc nastavení tick rate, kterou tahle hra má. Zvýšení nad dodávanou hodnotu stojí šířku pásma za velmi málo; když řidiči hlásí poskakování, podívej se nejdřív na ztrátu paketů. Co tick rate doopravdy znamená stojí za přečtení dřív, než na tomhle kolečku zatočíš.ADMIN_PASSWORDse zadává do herního chatu jako/adminnásledované heslem, po čemž jsou ti dostupné příkazy jako/kick,/ban,/next_sessiona/restart_session.
Časovací klíče určují, jak se veřejný server chová, když ho nikdo neorganizuje. LOOP_MODE=1 nechá posloupnost sessions opakovat donekonečna, což chceš, pokud není přítomen člověk, který by ji restartoval. RACE_OVER_TIME je doba, kterou mají opozdilci na dojetí poté, co vítěz projede cílem - 180 sekund je štědrých pro sprint a skoupých pro vytrvalostní závod. RESULT_SCREEN_TIME je mrtvý čas na konci každého cyklu, takže na rušném pickup serveru ho nech krátký.
Klíče hlasování stojí za to nastavit záměrně, ne nechat ve výchozím stavu. KICK_QUORUM=85 znamená, že k odstranění někoho je potřeba 85 procent roštu, což na šestiautovém serveru znamená všichni. Pokud je tvůj server veřejný a bez dozoru, sniž ho; pokud je to liga, zvyš ho na 100 nebo hlasování úplně vypni a spoléhej na ADMIN_PASSWORD, protože vyhazov hlasováním je nástroj, který lidé zneužívají, když se závod nepovede.
Existuje také rozhraní pro pluginy - UDP_PLUGIN_LOCAL_PORT, UDP_PLUGIN_ADDRESS a AUTH_PLUGIN_ADDRESS - přes které se k serveru připojují externí nástroje, například sledování časů kol a systémy hodnocení. Pokud žádný nepoužíváš, nech všechny tři prázdné.
Sessions, dynamická trať a počasí#
Posloupnost sessions je dána tím, které sekce existují a v jakém pořadí jsou napsané. Server jen se sekcí [PRACTICE] je otevřený trénink; přidej [QUALIFY] a [RACE] a máš závodní víkend ve smyčce.
[PRACTICE]NAME=PracticeTIME=20IS_OPEN=1[QUALIFY]NAME=QualifyTIME=15IS_OPEN=1[RACE]NAME=RaceLAPS=12WAIT_TIME=60IS_OPEN=1[DYNAMIC_TRACK]SESSION_START=94RANDOMNESS=2LAP_GAIN=30SESSION_TRANSFER=80[WEATHER_0]GRAPHICS=3_clearBASE_TEMPERATURE_AMBIENT=20BASE_TEMPERATURE_ROAD=6VARIATION_AMBIENT=2VARIATION_ROAD=1WIND_BASE_SPEED_MIN=0WIND_BASE_SPEED_MAX=10WIND_BASE_DIRECTION=30WIND_VARIATION_DIRECTION=15TIME jsou minuty pro trénink a kvalifikaci; závod používá místo toho LAPS, nebo TIME pro závod na čas. WAIT_TIME jsou sekundy na roštu, než zhasnou světla. IS_OPEN určuje, zda se mohou opozdilci připojit do rozjeté session - u závodu v lize ho nastav na 0 a u veřejného serveru nech na 1, kde odmítání připojení znamená jen prázdný server.
Dynamická trať je přilnavost v procentech a je to nejméně využívaná funkce v souboru. SESSION_START=94 začíná mírně „zeleně“, LAP_GAIN=30 znamená, že přilnavost se zlepší o jedno procento každých třicet kol odjetých polem a SESSION_TRANSFER=80 přenese osmdesát procent získané přilnavosti do další session. Nastav-li start pod 90, první trénink bude pro každého, kdo je zvyklý na hotlapy offline, připadat rozbitý, takže lidem o tom řekni.
Sekce počasí jsou číslované od nuly a server mezi nimi vybírá. GRAPHICS je id předvolby počasí, což je název složky v herním obsahu počasí, takže modové počasí funguje, pokud ho mají všichni. BASE_TEMPERATURE_ROAD je odchylka nad okolní teplotou, ne absolutní hodnota: okolí 20 se silnicí 6 znamená trať o 26 stupních. Špatné pochopení téhle věci je důvod, proč se server občas chová s pneumatikami bizarně.
entry_list.ini a rošt#
Každé místo na roštu je jeden záznam. Počet záznamů musí být alespoň MAX_CLIENTS a ani jedno nesmí překročit počet pit boxů trati.
[CAR_0]MODEL=ks_ferrari_488_gt3SKIN=rosso_corsaSPECTATOR_MODE=0DRIVERNAME=TEAM=GUID=BALLAST=0RESTRICTOR=0[CAR_1]MODEL=ks_mclaren_650_gt3SKIN=00_mclarenSPECTATOR_MODE=0DRIVERNAME=TEAM=GUID=76561198012345678BALLAST=20RESTRICTOR=0Práci dělají čtyři pole:
MODELmusí být jedno z aut uvedených vCARSaSKINsložka pod adresářemskinsdaného auta.GUIDnech prázdné pro volné místo. Vyplň SteamID64 a přiLOCKED_ENTRY_LIST=1patří toto místo jen tomuto řidiči - tak liga zaručí každému jeho číslo a polepy.BALLASTv kilogramech aRESTRICTORv procentech jsou nástroje vyrovnání pro jednotlivé řidiče. Jsou to poctivý způsob, jak udržet smíšenou ligu těsnou, aplikovaný na záznam, ne na auto.SPECTATOR_MODE=1označí záznam jako místo pro nejezdícího pozorovatele.
Ruční úprava roštu pro 24 aut je únavná a právě tady si Content Manager zaslouží své místo: generuje oba soubory, kontroluje, že modely a skiny existují, a umí zabalit sadu obsahu pro tvé řidiče.
Porty, lobby a připojení#
| Port | Protokol | Účel |
|---|---|---|
9600 | UDP | Stav aut |
9600 | TCP | Připojení a chat |
8081 | TCP | HTTP: registrace do lobby a podrobnosti o serveru |
Všechny tři musí být dosažitelné z internetu. Klasická chyba je otevřít 9600 pro oba protokoly, zapomenout na 8081 a pak nechápat, proč se server, na který se kamarádi připojí přímo, nikdy neobjeví v seznamu. Porty herních serverů vysvětleně popisuje, proč se hra takhle rozdělí na více portů.
Řidiči se připojují přes seznam ve hře, přes prohlížeč Content Manageru nebo přímo na address:9600. Funguje hostname stejně jako adresa - připojení domény k herním serveru popisuje záznam A - a vyplatí se ho nastavit, pokud čekáš, že ho budou lidé psát.
Modový obsah, AssettoServer a CSP#
Modová auta a tratě jsou důvod, proč je Assetto Corsa po deseti letech pořád naživu, a je to zcela problém distribuce. Pravidla:
- Nainstaluj mod na server přesně jako u klienta: složku auta do
content/cars, složku trati docontent/tracks. - Každý řidič potřebuje stejnou verzi téhož modu. Assetto Corsa kontroluje checksumy klíčových souborů a řidič s jiným buildem téhož auta je odmítnut s chybou checksumu. Částečná kompatibilita neexistuje.
- Zveřejni přesný odkaz ke stažení a verzi všeho na serveru a uchovávej tento seznam spolu se zálohami konfigurace. Weby s mody soubory tiše vydávají znovu a „minulý týden to fungovalo“ obvykle znamená, že si někdo stáhl mod znovu.
AssettoServer je open source náhrada acServer. Čte stejné server_cfg.ini a entry_list.ini, přidává vlastní extra_cfg.yml a poskytuje věci, které původní server nikdy neměl: AI provoz na straně serveru, počasí a plynutí času v reálném čase synchronizované přes Custom Shaders Patch, systém pluginů a mnohem lepší nástroje pro správu. Téměř každý freeroam a traffic server, na který ses připojil, ho používá.
Cenou je, že zajímavé funkce potřebují Custom Shaders Patch u klienta, takže na server závislý na CSP se z čisté instalace nepřipojíš. Pro ligu s pevnými sessions na originálním obsahu je původní acServer jednodušší a zcela dostačující. Pro cokoli freeroam je AssettoServer to, co chceš, a AI provoz je ta část, která potřebuje víc paměti a CPU v tabulce velikostí výše.
Řešení potíží#
„Checksum failed“ při připojení řidiče. Jeho kopie auta nebo trati se liší od serverové. Stejný mod, jiná verze, nebo balíček skinů, který přepsal datový soubor. Porovnej verze místo slepé přeinstalace.
Server běží a není v seznamu. REGISTER_TO_LOBBY=1, pak HTTP port. Téměř vždy je to HTTP port.
Server se při startu okamžitě ukončí. Přečti si výstup: pojmenuje složku auta nebo trati, kterou nenašel. Obvykle překlep v CARS, chybějící layout v CONFIG_TRACK nebo obsah zkopírovaný do špatné složky. Čtení konzole je o tom, jak z toho výstupu rychle dostat odpověď.
Auta se objeví na divných místech nebo se session na začátku rozbije. MAX_CLIENTS nebo entry list je větší než počet pit boxů trati.
Všichni dostanou na začátku průjezd boxy. START_RULE=2 a řidiči, kteří se pohnou před zelenou. Buď pravidlo vysvětli, nebo ho nastav na 0.
Řidiči poskakují nebo se „gumově“ vracejí. Ztráta paketů mezi nimi a serverem, ne CLIENT_SEND_INTERVAL_HZ. Ať si zkontrolují trasu, než změníš nastavení serveru, které ovlivní všechny.
Časy kol se mezi sessions neukládají. Původní server zapisuje výsledky do své složky s výsledky a nic dalšího. Trvalé pořadí obstará plugin na rozhraní UDP nebo AssettoServer.
Zálohuj cfg/, seznam obsahu a konfiguraci pluginů. Obsah samotný se dá stáhnout znovu; konfiguraci, na které se liga tři týdny domlouvala, ne, a záloha, kterou jsi nikdy neobnovil, je jen hypotéza - viz zálohy, které se opravdu obnoví.
FAQ#
Musím vlastnit Assetto Corsa, abych mohl provozovat server?
Ne. Dedikovaný server je samostatná bezplatná aplikace s app id 302550 a instaluje se anonymním přihlášením přes SteamCMD. Kopie ve složce hry je totéž.
Kolik aut server pojme?
Tolik, kolik má trať pit boxů, což je u originálních okruhů obvykle mezi 18 a 32. MAX_CLIENTS nad toto číslo způsobuje problémy, ne další místa.
Posílá server mody hráčům?
Ne. Stahování při připojení neexistuje. Každý řidič si nainstaluje stejná auta a tratě sám, ve stejných verzích, jinak ho server při kontrole checksumu odmítne.
Jaký je rozdíl mezi acServer a AssettoServer?
acServer je původní server od Kunosu. AssettoServer je open source náhrada, která čte stejné konfigurační soubory a přidává AI provoz, dynamické počasí a čas přes Custom Shaders Patch a systém pluginů. Freeroam servery používají AssettoServer; ligy s pevnými sessions ho často nepotřebují.
Proč můj server chybí v lobby?
Téměř vždy kvůli zavřenému HTTP portu, ve výchozím stavu 8081. Registrace do lobby jde přes něj, odděleně od herních portů 9600.
Jak si vyhradím místo pro konkrétního řidiče?
Vlož jeho SteamID64 do pole GUID záznamu v entry_list.ini a nastav LOCKED_ENTRY_LIST=1. Toto místo, auto a skin jsou pak jen jeho.




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.