RE:NODE

Návody12 min čtení

Server Assetto Corsa: konfigurace, auta, tratě

Provozuj dedikovaný server Assetto Corsa: vysvětlení server_cfg.ini a entry_list.ini, sessions, dynamická trať, porty, modový obsah a AssettoServer.

15 čtenářů

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_THREADS existuje, 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_nordschleife znamená „trať ve složce content/tracks/ks_nordschleife u 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 9600 a zavřeným 8081 běží 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štRAMvCPUPoznámky
Až 12 aut2 GB1Trénink a malé ligy
16-24 aut2-3 GB1,5Běžný závodní server
24-32 aut3-4 GB2Víc než hardware omezují pit boxy
AssettoServer s AI provozem4-8 GB2-3AI 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:

bash
$ steamcmd +force_install_dir /home/ac/server +login anonymous \    +app_update 302550 validate +quit$ cd /home/ac/server$ ./acServer

Rozložení je:

code
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ží#

cfg/server_cfg.ini
[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ží
NAMENázev v lobby. Dej do něj třídu a den
CARSNázvy složek z content/cars oddělené středníky
TRACKNázev složky z content/tracks
CONFIG_TRACKLayout u tratí, které jich mají několik. Prázdné pro výchozí
MAX_CLIENTSVelikost roštu. Nesmí překročit počet pit boxů trati
ADMIN_PASSWORDZadává se do chatu jako /admin password pro získání admin práv
PASSWORDHeslo pro připojení
PICKUP_MODE_ENABLED1 dovolí řidičům zabrat libovolné volné místo. 0 je režim rezervací
LOCKED_ENTRY_LIST1 omezí každé místo na GUID uvedené u něj
LOOP_MODE1 restartuje posloupnost sessions donekonečna
START_RULE0 zamčeno do zelené, 1 teleport do boxů, 2 průjezd boxy
ALLOWED_TYRES_OUTKolik kol smí být mimo trať, než se započítá seříznutí. -1 to vypne
DAMAGE_MULTIPLIERProcenta. 0 je bez poškození, 100 plné
FUEL_RATE, TYRE_WEAR_RATEProcenta skutečné spotřeby
ABS_ALLOWED, TC_ALLOWED0 zakázáno, 1 tovární nastavení, 2 vynuceně zapnuto
STABILITY_ALLOWEDStabilizační systém. 0 pro cokoli soutěžního
MAX_CONTACTS_PER_KMVyhodí řidiče, kteří do všeho pořád naráží. 0 to vypne
KICK_QUORUM, VOTING_QUORUMProcento řidičů potřebné k přijetí hlasování
CLIENT_SEND_INTERVAL_HZFrekvence aktualizací klientům. 18 je dodávaná hodnota
REGISTER_TO_LOBBY1 zveřejní server v seznamu

Několik poznámek, které ti ušetří večer:

  • CARS a TRACK jsou názvy složek, ne zobrazované názvy. ks_brands_hatch, ne „Brands Hatch“. Otevři content/tracks a opiš, co tam vidíš.
  • CONFIG_TRACK je 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_CLIENTS nad 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_HZ je 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_PASSWORD se zadává do herního chatu jako /admin následované heslem, po čemž jsou ti dostupné příkazy jako /kick, /ban, /next_session a /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.

ini
[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=15

TIME 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.

cfg/entry_list.ini
[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=0

Práci dělají čtyři pole:

  • MODEL musí být jedno z aut uvedených v CARS a SKIN složka pod adresářem skins daného auta.
  • GUID nech prázdné pro volné místo. Vyplň SteamID64 a při LOCKED_ENTRY_LIST=1 patří toto místo jen tomuto řidiči - tak liga zaručí každému jeho číslo a polepy.
  • BALLAST v kilogramech a RESTRICTOR v 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=1 označí 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í#

PortProtokolÚčel
9600UDPStav aut
9600TCPPřipojení a chat
8081TCPHTTP: registrace do lobby a podrobnosti o serveru
registruje se přes HTTPprocházíentry list a detailypřipojí se a jedeŘidičklient ACHTTP endpointport 8081acServerTCP a UDP 9600Lobby Kunosuveřejný seznam
Jak se řidič dostane na server Assetto Corsa

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 do content/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.

0/2000