Headless klient/server

From Neos Wiki
Revision as of 03:18, 9 July 2021 by FuzzyBot (talk | contribs) (Updating to match new version of source page)
Jump to navigation Jump to search
Other languages:
English • ‎français • ‎čeština • ‎日本語 • ‎한국어

Headless klienti jsou verze Neosu postrádající grafické uživatelské rozhraní, což jim umožňuje běžet efektivně ve scénářích kde není potřeba renderovat (jako například při použití jako server). Uživatelé Neos Pro a patroni třídy a výše mají přístup k headless klientu. Podívejte se na piny v kanálu #headless-client v Neos Discord serveru, nebo kontaktujte Neos administrátora pro získání vašeho kódu.

Instalace

Metoda 1

Pomocí Steamu:

  • Jděte do Steamu, otevřete vlastnosti Neosu a přejděte na záložku Beta verze
  • Použijte váš kód pro aktivaci beta větve
  • Přepněte na větev headless-client

Metoda 2

Pomocí SteamCMD:

  • Vložte následující příkaz do SteamCMD:
  • app_update 740250 -beta headless-client -betapassword your_code

Konfigurace

Potom co Steam dokončí aktualizaci, otevřte instalační složku. Headless klient najdete v podsložce Headless Client. Můžete použít soubor Config/DefaultConfig.json pro konfiguraci světa po spuštění nebo pro přihlášení serveru do účtu (prosíme, nepoužívejte váš hlavní Neos účet). Zde je ukázková modifikace, kterou můžete použít a modifikovat:

{
 "comment": "",
 "tickRate": 60.0,
 "maxConcurrentAssetTransfers": 4,
 "usernameOverride": null,
 "loginCredential": null,
 "loginPassword": null,
 "startWorlds": [
   {
     "isEnabled": true,
     "sessionName": "",
     "customSessionId": null,
     "description": null,
     "maxUsers": 12,
     "accessLevel": "Anyone",
     "hideFromPublicListing": false,
     "tags": [
       "test1",
     ],
     "mobileFriendly": false,
     "loadWorldURL": "",
     "saveAsOwner": null,
     "loadWorldPresetName": null,
     "forcePort": null,
     "keepOriginalRoles": false,
     "defaultUserRoles": {
       "User": "Admin"
     },
     "autoInviteUsernames": null,
     "autoInviteMessage": null,
     "autoRecover": true,
     "idleRestartInterval": -1.0,
     "forcedRestartInterval": -1.0,
     "saveOnExit": false,
     "autosaveInterval": -1.0,
     "awayKickMinutes": -1.0,
     "autoSleep": true
   }
 ],
 "dataFolder": null,
 "cacheFolder": null,
 "allowedUrlHosts": null,
 "autoSpawnItems": null,
 "metamovieRoles": null
}
  • Atribut loadWorldPresetName načte svět založený na šabloně Neos světa. Dostupné šablony jsou "SpaceWorld", "Basic Empty", "GridSpace", "Microworld", "Testing Scaling", "ScratchSpace", "ScratchSpace (mobile)", "Instancing Test", "Physical Locomotion Test" a "UIX Test".
  • Atribut "defaultUserRoles" definuje uživatele a přístupovou úroveň pro svět. Formát je "USERNAME": "ROLE". Dostupné role jsou "Admin", "Builder", "Moderator", "Guest", and "Spectator".
  • Spusťte spustitelný soubor pro spuštění klienta.
  • The "loginCredential" attribute defines the Neos account to run the server with. It is recommended to create a separate account to run the server as if you wish to join your own server - it is not possible to join a server running with the same account on the client and server.
  • The "customSessionId" attribute accepts the following formatting: S-[userID]:[anything] where [UserID] is the userID of the account running the headless session, and [anything] is whatever you want to put
  • Run the executable to start the client.

Konfigurace pro Lokální nebo Cloudové uložení světa

Ke konfiguraci Headless klienta pro funkci lokálního serveru uložiště, nastavte svět na "saveAsOwner" : "LocalMachine" (bude nahrazeno poprvním spuštění unikátní startWorldURL), "saveOnExit" : true, a váš požadovaný autoSaveInterval.
Pokud chcetet data světa uložit do cloudu (validní dedikovaný Neos účet bude potřeba), nastavte "saveAsOwner" : "CloudUser".
Prosíme používejte příkaz shutdown pro uložení všech neuložených změn při ukončení. Ukázka konfiguračního souboru:

{
 "tickRate": 60.0,
 "usernameOverride": null,
 "loginCredential": null,
 "loginPassword": null,
 "startWorlds": [
   {
     "sessionName": "My World 1",
     "description": null,
     "maxUsers": 32,
     "accessLevel": "LAN",
     "tags": null,
     "mobileFriendly": false,
     "loadWorldPresetName": "BasicEmpty",
     "saveAsOwner" : "LocalMachine",
     "autoRecover": true,
     "saveOnExit" : true,
     "autoSaveInterval" : 240,
     "forcedRestartInterval": -1.0
   }
 ],
 "dataFolder": null,
 "cacheFolder": null
}

Configration using Cloud Variables

For more details for Cloud Variables, see Cloud Variables.

  • The roleCloudVariable allows auto-assigning a role based on a cloud variable.
    • This lets you define a cloud variable and assign value to users to determine their role in given world.
    • The variable needs to be of type string. The value you assign equals the name of the role you want to grant to given user.
    • It is STRONGLY recommended to make sure you're using cloud variable that you can write into on behalf of other users (definition_owner), otherwise users might be able to assign themselves a high permission role.
    • If no value is set for given user, the usual method to determine default role is used
  • The allowUserCloudVariable allows using cloud variable to always allow user into a session.
    • The cloud variable needs to be of type bool and set to true for given user.
    • This is equivalent of the user being sent an invite - they can join regardless of MaxUsers limit and even if the session is set to Private (they need to obtain).
    • Same recommendations as above apply, please make sure you use the right cloud variables that you have proper control over.
  • The denyUserCloudVariable allows denying join access to users via a cloud variable.
    • This functions similarly to allowUserCloudVariable, except when the value for given user is true, they will be denied access
    • This always takes precedence over other variables
  • The requiredUserJoinCloudVariable to world startup configuration, which requires a cloud variable to be set to true for given user so they can join
    • You can set a custom deny message via requiredUserJoinCloudVariableDenyMessage
    • If the variable isn't set to true for given user, they won't be allowed access
    • Setting the variable to true won't automatically grant access (unlike allowUserCloudVariable) and will still need to pass other rules - public access, session user limit and so on
    • allowUserCloudVariable takes precedence over this one, allowing to always allow given user access
    • This variable is useful for controlling access to a session, without bypassing the session max user limit and providing a custom message

Příkazy

Podívejte se na stránku Příkazy Headless klienta pro seznam příkazů.