Zum Hauptinhalt springen
Version: bleeding-edge 🩸

Quick Start

Starte einen Server und erstelle dein erstes Paket in weniger als 10 Minuten!

Einführung

Willkommen beim Schnellstart-Leitfaden von nanos world! Nachdem du diesen Leitfaden durchgearbeitet hast, wirst du Folgendes lernen:

  1. Wie du deinen Server einrichtest und ihm beitrittst
  2. Wie du ein einfaches Paket mit grundlegenden Skripten erstellst
  3. Wie du Props und Entities per Scripting spawnst
  4. Wie du Spielereignisse abonnierst
  5. Wie du einen Character übernimmst
tip

Dieses Tutorial richtet sich an alle, die den nanos world Server noch nie zuvor verwendet haben und schnell loslegen möchten!

Schritt 1: Den Server herunterladen

Um zu beginnen, musst du den nanos world Server herunterladen. Dafür gibt es drei Möglichkeiten:

  1. Verwende die ausführbare Datei unter nanos-world/Server/NanosWorldServer.exe (im Basis-Installationsordner des Spiels).
  2. Verwende SteamCMD, um den nanos world™ Dedicated Server herunterzuladen.
  3. Lade das Tool nanos world™ Dedicated Server über den Steam Client herunter.

Schritt 2: Ein einfaches Paket erstellen

Nachdem du den Server heruntergeladen hast, erstellen wir ein einfaches Paket. Ein Paket ist eine Sammlung von Lua-Skripten, die auf dem Client oder Server ausgeführt werden, um mit dem Spiel zu interagieren.

Um ein neues Paket zu erstellen, verwenden wir das praktische CLI-Tool, um den Prozess zu beschleunigen. Öffne ein Terminal in deinem Serverordner und führe den folgenden Befehl aus:

./NanosWorldServer.exe --cli add package my-awesome-package

Dieser Befehl führt die Kommandozeilenschnittstelle (CLI) von nanos world aus, um dein neues Paket interaktiv zu erstellen. Du wirst aufgefordert, einige Informationen zu deinem Paket anzugeben, wie zum Beispiel dessen Namen, Autor, Version und Typ.

NanosWorldServer
INFO Please enter the Package Title: (my-awesome-package)
my-awesome-package
INFO Please enter the Package Author: ()
myself
INFO Please enter the Package Type: (game-mode)
script

Sobald du die Erstellung deines Pakets abgeschlossen hast, findest du einen neuen Ordner namens my-awesome-package/ innerhalb des Ordners Packages/. Dieser Ordner enthält drei weitere Ordner: Server/, Client/ und Shared/, sowie eine Konfigurationsdatei namens Package.toml.

Als Nächstes musst du dem Server mitteilen, dass er dein Paket beim Start laden soll. Öffne dazu die Datei Config.toml im Serverordner und suche den Abschnitt packages = [].

Füge den Namen deines Pakets ("my-awesome-package") zur Liste der Pakete hinzu, die geladen werden sollen.

Schritt 3: Skriptfunktionen hinzufügen

Jetzt, wo du ein Paket hast, ist es Zeit, ihm einige Skriptfunktionen hinzuzufügen. Skripte sind Code-Abschnitte, die vom Server/Client ausgeführt werden können, um benutzerdefinierte Spiellogik hinzuzufügen.

Um dein erstes Skript hinzuzufügen, öffne die Datei my-awesome-package/Server/Index.lua in deinem bevorzugten Editor. Diese Datei ist der Einstiegspunkt für serverseitige Skripte in deinem Paket.

tip

Wir empfehlen die Verwendung des Editors VSCode, da er eine nanos world Extension enthält, die dir beim Programmieren hilft!

Für dieses Beispiel fügen wir etwas Code hinzu, um einige Props in der Spielwelt zu spawnen:

Packages/my-awesome-package/Server/Index.lua
-- Gibt eine Nachricht in der Server-Konsole aus
Console.Log("Loading some Props =D")

-- Spawnt einige Props in der Spielwelt
local prop_table = Prop(Vector(200, 0, 0), Rotator(0, 0, 0), "nanos-world::SM_WoodenTable")
local prop_chair = Prop(Vector(400, 200, 0), Rotator(0, 0, 0), "nanos-world::SM_WoodenChair")
local prop_tire = Prop(Vector(600, 0, 0), Rotator(0, 0, 0), "nanos-world::SM_TireLarge")

Schritt 4: Den Server starten

Jetzt starten wir den Server mit dem Paket, das du gerade erstellt hast! Doppelklicke dazu einfach auf die ausführbare Datei des Servers oder starte ihn über das Terminal:

./NanosWorldServer.exe
note

Wenn du ein Playtest-Spiel ausführst, musst du den Server auch mit dem Flag --playtest starten, andernfalls kann er sich nicht mit dem Spiel verbinden.

Nach dem Start zeigt deine Konsole etwa Folgendes an:

NanosWorldServer
INFO nanos world (C) Copyright Go Horse Studios. All Rights Reserved.
INFO Starting Server at Port: 7777. Version: 1.9.0. Unreal Version: 5.7.4. Map: 'default-blank-map'.
INFO Loading Package 'my-awesome-package' (0.0.1)...
SCRIPT Loading some Props =D
INFO Package 'my-awesome-package' (0.0.1) loaded.
INFO Loading Package 'default-blank-map'...
INFO Package 'default-blank-map' (1.0.0) loaded.
SUCCESS Server started!
SUCCESS Server successfully connected to Steam! VAC Secure!

Du kannst sehen, dass dein Paket geladen wurde und den Text Loading some Props =D ausgegeben hat.

Schritt 5: Deinem Server beitreten

Jetzt sehen wir uns die Ergebnisse im Spiel an! Öffne nanos world und verbinde dich mit localhost unter 127.0.0.1:7777.

Nach der Verbindung bist du ein fliegender Bauer und kannst die gespawnten Requisiten sehen! 😁

Extraschritt: Characters spawnen

Du hast vielleicht bemerkt, dass du nur eine umherwandernde Seele bist, die herumfliegt, geben wir dir also etwas Fleisch! Dafür müssen wir mit einigen Spielereignissen interagieren.

Einen Character für den Player spawnen

Fügen wir etwas Code in deiner Server/Index.lua hinzu, um einen Character zu spawnen, wenn ein Player dem Server beitritt:

my-awesome-package/Server/Index.lua
-- Funktion, um einen Character zu spawnen und einem Player zu übergeben
function SpawnCharacter(player)
-- Spawnt einen Character an Position X=0, Y=0, Z=0 mit den Standard-Konstruktorparametern
local new_character = Character(Vector(0, 0, 0), Rotator(0, 0, 0), "nanos-world::SK_Male")

-- Übergibt den neuen Character
player:Possess(new_character)
end

-- Abonniert ein Event, das ausgelöst wird, wenn Players dem Server beitreten
-- (d. h. wenn die Player-Entity spawnt)
Player.Subscribe("Spawn", SpawnCharacter)

-- Wenn dieses Paket geladen wird, haben wir noch keinen gespawnten und übergebenen Character, daher
-- iterieren wir über alle bereits verbundenen Players und geben ihnen ebenfalls einen Character.
-- Dies stellt sicher, dass du auch beim Neuladen des Pakets einen Character erhältst
Package.Subscribe("Load", function()
for k, player in pairs(Player.GetAll()) do
SpawnCharacter(player)
end
end)

Um deine Änderungen anzuwenden, führe den Befehl package reload all in der Server-Konsole aus. Dadurch werden die Pakete per Live-Reload neu geladen und die Änderungen sofort auf alle verbundenen Players angewendet.

Jetzt hast du einen Character übernommen und kannst herumlaufen und mit den Props interagieren!

Den Character zerstören, wenn der Player den Server verlässt

Beachte, dass der Character nicht automatisch zerstört wird, wenn der Player die Verbindung trennt. Dafür müssen wir uns für den Moment, in dem der Player den Server verlässt (Event Destroy), anmelden und den Character dann manuell zerstören.

Füge diesen Code hinzu:

my-awesome-package/Server/Index.lua
-- Wenn der Player den Server verlässt, zerstört dies seinen übernommenen Character
Player.Subscribe("Destroy", function(player)
local character = player:GetControlledCharacter()
if (character) then
character:Destroy()
end
end)

Um deine Änderungen anzuwenden, führe den Befehl package reload all in der Server-Konsole aus.

Conclusion

Herzlichen Glückwunsch! Du hast dein erstes einfaches Paket fertiggestellt und dabei eine Menge gelernt!

Weitere und detailliertere Informationen zu jedem in diesem Leitfaden erwähnten Thema findest du unter folgenden Links:

Server Configurationcore-concepts/server-manual/server-configuration Command-line Interface (CLI)core-concepts/server-manual/command-line-interface Packages Guidecore-concepts/packages/packages-guide Classes Guidecore-concepts/scripting/classes-guide Events Guidecore-concepts/scripting/events-guide