Space Engineers Tutorial - Eigene Skripte schreiben? So gehts!

Поділитися
Вставка
  • Опубліковано 12 вер 2024

КОМЕНТАРІ • 56

  • @heroekid
    @heroekid Рік тому +9

    Ich bin begeistert was man mit einem Skript so alles machen kann, natürlich darf davon mehr kommen. Ideen für ein Skript hätte ich wahrscheinlich genug, aber meine Kenntnisse im programmieren sind gleich = null, bis ich da auch nur ein Skript gebastelt hätte, wäre wohl mein Ur-Enkel schon selber Opa. 😂😂
    Es ist aber schön, das es Leute gibt, die sowas können.

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +2

      Naja, die Idee hinter dem Tutorial ist ja durchaus, euch das Handwerkszeug zu geben, um das machen zu können. ;-)

    • @xcaticpepper4193
      @xcaticpepper4193 Рік тому

      ChatGPT könnte vielleicht helfen

  • @cyrill_l3854
    @cyrill_l3854 Рік тому +1

    Tolles Video. ich bin eigentlich Programmierer von CNC-Anlagen und möchte mir C# aneignen...weil warum nicht. Und in SE hab ich einen wunderbare Plattform für meine Übungen gefunden.
    Noch dazu ist die Community wirklich engagiert und Hilfsbereit.
    Mein Abo habt Ihr!

  • @christianosderhase
    @christianosderhase 7 місяців тому +1

    Finally habe ich das Video endlich gefunden, was einmal alles nötige erklärt und wo was zu finden ist. 😅
    Danke jetzt kann ich mich endlich an meinem Skript versuchen. Ich habe mir paar skripts mal vom Workshop runtergeladen, aber ich hatte nach einem gelösten Fragezeichen ein weiteres Fragezeichen, wie und wo holt er sich das her? Wo her weiß er das? wie kriege ich das hin? usw. So paar Kommentar zeilen haben mir gefehlt. ^^'

    • @Nerdzeitalter
      @Nerdzeitalter  7 місяців тому

      Freut mich, dass es weiterhilft =) Manche Skripte im Workshop sind aber auch sehr fortgeschritten, gerade wenn man neu einsteigt, können die erstmal sehr verwirren.

  • @Keschnarf
    @Keschnarf Рік тому +1

    Cooles Tutorial!
    Bin selber Programmierer, aber "nur" für SPS (Step-7, TIA, SCL, falls Dir das was sagt). Habe mich auch vor einiger Zeit mal daran versucht ein Skript in SE zu schreiben, aber das hatte nicht so funktioniert wie ich wollte. Da steckt ja schon einiges drin und wenn man C# kann, dann ist es bestimmt auch recht einfach, aber ich tue mich mit objektorientierter Programmierung noch etwas schwer.
    Dieses Tutorial hilft schon sehr und macht einiges deutlich klarer. Sehr schön finde ich auch, dass Du nicht einfach ein "Schön-Wetter-Programm" zeigst, das nur funktioniert so lange alles passt, sondern auch darauf hinweist was alles sein könnte und wie man damit umgehen kann und was man macht um Fehler abzufangen.
    Vielleicht versuche ich mich doch noch mal daran, aber im Moment habe ich gerade noch andere Projekte am laufen (Satisfactory, Conan Exiles und bald startet auch schon wieder eine neue PoE-League). Der Tag ist einfach zu kurz.😉
    Nichts desto Trotz würde ich mich aber natürlich sehr über ein weiteres, noch tiefer gehendes Tutorial von Dir freuen, Du erklärst das echt gut!👍

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому

      Ja... das mit der Zeit... ich will eigentlich auch noch ein paar weitere Tutorials machen (von dem hier ist ein zweiter Teil angedacht), Ixion weiter aufnehmen und vieles mehr. Kommt aber auf jeden Fall noch.

  • @user-ze1ho5su7v
    @user-ze1ho5su7v 7 місяців тому +1

    Hallo Markus,
    vielen Dank für den gelungenen Einstieg in die Grundlagen. Ich habe direkt das Script für mich abgewandelt. Statt jeweils ein Licht für rot und grün, kann ich ein oder mehrere Lichter haben, die alle entweder rot oder grün leuchten. Naja nur eine Kleinigkeit, aber dafür konnte ich auch gleich mal Listen ausprobieren. Das letzte Mal hab ich vor 15 Jahren (?) was in c# gemacht.

    • @Nerdzeitalter
      @Nerdzeitalter  7 місяців тому

      Ja klar, man kann auch die Lichtfarbe per Skript ändern. Die Idee hinter den Tutorials ist ja, erstmal einen Einstiegspunkt zu geben, den dann auch jeder für sich selbst ausbauen kann. Und es freut mich sehr, dass das für dich offensichtlich funktioniert hat.

    • @user-ze1ho5su7v
      @user-ze1ho5su7v 7 місяців тому

      @@Nerdzeitalter Absolut richtig. Als nächstes kommt noch der Batteriestatus mit auf dem LCD, aber erstmal zweiten Teil des Tutorials gucken :)

  • @3dfxorchid
    @3dfxorchid 9 місяців тому +1

    Hast du wirklich gut erklärt, bloß schön wäre wenn du auch passend das fenster umschalten würdest, das vergißt du immer wieder, ansonsten alles super. Mach weiter so.
    😀😀

    • @Nerdzeitalter
      @Nerdzeitalter  9 місяців тому

      Ja, tut mir leid. Werde ich im zweiten Teil besser machen!

  • @agreenbutterfly777
    @agreenbutterfly777 9 місяців тому +1

    Was toll wär, wenn man beim Blueprint Projektor ein Textfeedback hat, welche/wieviele Blöcke fehlen oder beschädigt sind.
    Das kann aber etwas schwierig werden🤫😅

    • @Nerdzeitalter
      @Nerdzeitalter  9 місяців тому +1

      Ich hab ein Skript im Workshop, das aus dieser Info ne Baufortschrittsanzeige einer Projektion auf LCDs macht.

  • @raudi7896
    @raudi7896 Рік тому +3

    Danke für das Script Tutorial, war sehr interessant was man so alles beachten muss vorallem bei den Namen. Ich suche schon eine Weile ein Script das die O2/H2 Generatoren aus schaltet wenn die Tanks zu >X% gefüllt sind und bei Füllung

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +2

      Im Grunde genommen ist das doch gar nicht weit weg von dem, was ich in dem Skript behandelt habe. Statt dem Connector schnappst du dir den Tank und die Ein / Aus Schaltung der O2 je nach Füllstand anstelle der Lichter.

    • @raudi7896
      @raudi7896 Рік тому +1

      @@Nerdzeitalter Ja das habe ich auch gedacht und bei MDK-SE gesucht, aber leider nichts gefunden was mit dem Füllstand zutun hat ausser voll = 1, leer = 0 und die Kapazität oder ich habe die Beschreibung falsch verstanden. Aber vllt versteckt sich diese angabe auch nur unter einem anderen Punkt so das ich es nicht gefunden habe. Ich mein das Script hat ja mal funktioniert allerdings auf einem Server und jetzt im Solo Spiel nicht mehr(oder gibt es da vllt Unterschiede?). Ich werde mal versuchen das Script von einer anderen Seite aus an zu gehen. Danke für deine schnelle Antwort 😃

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +1

      wenn 0 leer ist und 1 voll, dann ist 0.25 ein Viertel gefüllt und 0.75 drei Viertel. Prozentualer Füllstand.

  • @ouroboros1987
    @ouroboros1987 Рік тому

    Ich freue mich schon das ich das Skript "Isy's Solar Alignment Script" benutzen kann. Solarturm, Schiff Ausrichtung, Anpassung des Anzeigetextes...
    Skripte selber zu schreiben, da hätte ich keine Geduld für XD

  • @iRaptorxHD
    @iRaptorxHD Рік тому

    Bin selbst hauptberuflich Anwendungsentwickler und muss sagen, dass du - gerade wenn jemand gar nichts kennt - es echt gut erklären tust (Abgesehen von manch Aussprach-Probleme wie "null". Aussprache wäre hier "Nall" nicht "Null" , könnte im "Alltag" zu Verwechslung mit der Zahl kommen ^^)
    Aber ansonsten ist das Video sehr gut gelungen - auch wenn ab und an dein Spielbildschirm NICHT sichtbar war, obwohl du im Spiel gecoded hast :)
    Freue mich auf weitere Videos von dir, weiter so.
    PS: Gerade auch für Coop-LP oder sowas, wäre es wohl ein wenig vertrauter, wenn du bei An- und Abmoderation in die Kamera schauen würdest :>

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +1

      Danke für das Feedback! Ja, ich hatte tatsächlich das Rückschalten vergessen. Muss ich nächstes Mal mehr drauf achten. Und danke für den Hinweis mit der Kamera!

  • @rigantom6718
    @rigantom6718 Рік тому +2

    Moin Markus
    Finde ich echt cool wie du die Grundlagen erklärst. Selbst spiele ich erst seit ein paar Tagen. Meine Überlegungen sind aktuell ein vollautomatisierter Bohrturm. Das Bohren versetzt mit Kolben ausfahren habe ich aktuell über Zeitblöcke gelöst. Nun hätte ich gerne auf einer LCD Anzeige angezeigt, welche Kolben bereits ausgefahren sind, sprich in welcher Phase er sich befindet. Das muss ich wenn ich das richtig verstehe über ein Skript machen, das ich eben auf einen LCT ausgebe. Was ich allerdings bei den Zeitblöcken blöd finde, ich kann ja da nur ungenaue Einstellungen vornehmen. Sprich wenn ich die Obergrenze eines Kolbens auf 5 setzen will, dann geht das nur über ein Skript. Sehe ich das richtig? Ach ja, was frisst dann mehr Ressourcen? Zeitblöcke oder Skript?

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому

      Vielleicht hilft dir das hier als Einstiegspunkt dazu weiter: steamcommunity.com/sharedfiles/filedetails/?id=2168894309
      Zeigt jetzt nicht wirklich etwas auf dem LCD an, aber das Piston handling darin könnte dir weiter helfen.
      Skripte sind was Einstellungen angeht genauer und auch vielseitiger als Timer Blöcke. Ich denke was die Performance angeht, wenn du 10 Timerblöcke für etwas brauchst, was du besser mit einem programmierbaren Block abfrühstücken kannst, macht das auch keinen Unterschied mehr. Im Singleplayer sowieso nicht.

  • @Hyperserver
    @Hyperserver Рік тому +3

    AUTSCH !!!! bei 34:40 - Da sagst du als "guter Stil" schreibt man Variablennamen groß. Erstens sind es keine Variablen, sondern Attribute (Wir sind im Bereich OOP - wir haben also Objekte - und diese haben Attribute, keine Variablen). Zweitens: ist das SCHLECHTER STIL, denn Attribute schreibt man immer klein, und KLASSEN schreibt man groß - damit man beides nicht verwechselt bei Namensgleichheit -> Beispiel: Test test = new Test()
    Das erzeugt eine Instanz (Objekt) der Klasse "Test" mit dem Namen "test".
    Ausserdem sollte man Globale Variablen absolut vermeiden. Der Grund, warum es nicht "geknallt hat" ist eigentlich auch die Erklärung dafür, denn es können sehr wohl alle Variablen/Attribute mit Namensgleichheit existieren OHNE zu kollidieren. Das ist ja Sinn und Zweck der verschiedenen "Scopes" (Sichtbarkeiten). Sobald du also aus dem "Programm-Scope" in den "Main-Scope" gehst, hast du zweimal "test1". Nämlich "main test1" und "global test1".
    Selbst wenn du unbedingt Globals verwenden möchtest, dann solltest du diese in eine Klasse packen:
    public static class Globals
    {
    public static int32 variable1 = 123; // kann man verändern
    public const Int32 variable2 = 512; // Unveränderlich
    public static String text1 = "dies ist ein veraenderbarer Text"; // kann man verändern
    public static readonly String text2 = "Dies ist unveraenderlicher Text"; // Unveränderlich
    }
    und diese als solche benutzen:
    Echo(Globals.variable1.ToString());
    Der Modifier "static" bewirkt, dass eine Klasse (und somit alle Attribute (Variablen) und eventuell auch deren Methoden (Funktionen) ) verwendet werden können OHNE vorher eine Instanz (Objekt) erzeugen zu müssen - was wiederum wie eine "Oldschool" "Global Variable" funktioniert.
    Variablen ausserhalb eine Klasse zu definieren ist sehr sehr unsauber. OOP = entweder ganz, oder gar nicht :P
    Vorteil:
    Es werden auch keine Werte "überschrieben" (wie bei dir passiert). In einer Methode könnte es also so aussehen (macht hier keinen Sinn, dient nur als Beispiel):
    public bool isValue1 (int wert1)
    {
    return wert1 == Globals.wert1
    }
    PS:
    Ich habe es an anderer Stelle schon mal erwähnt - bitte sage nicht "NULL" (gesprochen mit "u", wenn du "Null = keinen Wert" meinst. Man spricht es "NALL" (mit a) um Verwechselungen mit dem Wert 0 zu vermeiden! Ich weiß, es klingt "klugscheisserisch", aber als IT Lehrer (Anwendungsentwickler) tut es einfach in der Seele weh, es zu hören. Wenn du solche Tutorials machst, dann ist das eine echt tolle Sache - aber bedenke, dass deine Zuschauer Leute sind, die es erst lernen - und wenn sie es "falsch" lernen, dann bekommt man diese "Unarten" nur sehr schwer wieder aus ihnen heraus.
    Klar könnte man sagen "Hauptsache es funktioniert", aber ich denke, es wäre besser zu sagen "wenn schon lernen, dann gleich richtig". Hoffe, du bist mir nicht böse ;)

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +2

      Ich möchte mich mit dir wirklich ungern über Codekonvention streiten, aber die MS-Dokumentation sieht für Eigenschaften in C# (in dem Fall ist es tatsächlich eine Eigenschaft und keine Variable, den Versprecher darf man mir bei der Aufnahmelänge hoffentlich nachsehen) eine Großschreibung vor. Wenn du Tools wie z.B. ReSharper oder Sonarqube verwendest, würden die eine Kleinschreibung von Eigenschaften direkt anmarkern.
      Attribute sind in C# etwas ganz Anderes, was mir in SE Skripten bisher aber noch nicht begegnet ist.
      Und wenn wir es ganz streng nehmen IST das Script selbst eine Klasse.
      Das mit Null vs. Nall werde ich in einem zweiten Teil aber auf jeden Fall beherzigen. ;-)

    • @Hyperserver
      @Hyperserver Рік тому +1

      @@Nerdzeitalter je - ok - wenn man es von dieser Seite aus betrachtet, dann hast du natürlich Recht. Vielleicht bin ich auch etwas durch Konventionen der anderen "Sprachen" wie zB Python, Java, Go, JavaScript etc zu sehr an die Konvention Klassen = Großbuchstaben, Eigenschaften/Attribute/Variablen und Methoden/Funktionen = Kleinbuchstaben gewöhnt.

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +1

      @@Hyperserver Ja, C# geht da ein bisschen eigene Wege. Das ist mir umgekehrt auch schon auf die Füße gefallen, als ich mal zwischendrin an einem Java-Projekt gearbeitet habe, wo recht viel klein geschrieben wird.

  • @Hyperserver
    @Hyperserver Рік тому +1

    TIP: man kann auch "VS code" (Visual Studio Code - Name der IDE) nutzen. Ist deutlich "Leichtgewichtiger" als VStudio und lizenzfrei. Bietet viel mehr Möglichkeiten als Notepad++ ohne zu mächtig zu sein wie VS. Gerade als Anfänger sollte man nicht unbedingt mit Notepad++ anfangen, da dieses nicht so toll auf "Fehler" bzw deren Verbesserungen hinweist. VScode hat den Vorteil, dass es nicht nur Fehler anzeigt, sondern auch Vorschläge macht, wie es voraussichtlich auszusehen hat. Das hilft besonders Anfängern enorm.

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +1

      Ja, VS Code geht ebenfalls, wenn man es "nur" als besseren Texteditor verwenden will, was natürlich absolut legitim ist. Das MalwareDev SDK funktioniert meines Wissens nach aber nur mit VS2019, das man mittlerweile aber auch in einer kostenlosen Community Edition kriegen kann.

    • @Hyperserver
      @Hyperserver Рік тому

      @@Nerdzeitalter VS gibts schon länger als kostenlose Version. Aber VS ist extrem "mächtig" und braucht viel Platz. Ausserdem gräbt es sich so tief in die Sytemreg ein, dass man es nicht (oder nur sehr schwer) vollständig deinstallieren kann. Wenn man es weiterhin verwenden will, dann ist es eine tolle Sache, aber zum reinen Scripten würde ich es auf keinem Fall empfehlen. Ist wie das Schießen mit Kanonen auf Mücken.
      Abgesehen davon hast Du Recht, Malware-Dev SDK funzt in VScode NICHT!!!

  • @MCNoob-vf4gi
    @MCNoob-vf4gi Рік тому +1

    Hast du dir dein Video selbst mal angeschaut? Dann wäre dir vielleicht aufgefallen, das du so einige Male vergisst, den SE-Bildschirm anzuzeigen. Du bleibst aber auf dem github-Screen.
    Man hört am SE-Geräusch, dass du wohl gerade dort was zeigts, aber man siehts eben nicht und kanns nicht nachvollziehen.

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +1

      Ja habe ich mir angesehen. Bisschen unschön, aber war an den Stellen meiner Ansicht nach jetzt nicht komplett tödlich. Beim zweiten Teil (der kommen wird), pass ich besser auf.

  • @pravum3128
    @pravum3128 Рік тому +3

    Sehr Lehrreich ! Ist es möglich zB einen Rover mit Scanner automatisch in einem vorgesehen Radius nach bestimmten Erzen scannen zu lassen, den naheliegenstem Punkt zu finden und einen und einen Bookmark mit Namen zu erstellen ? Falls ja könntest Du das mal versuchen zu erstellen ?

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +2

      Also einen Rover einfach nur dumm im Kreis fahren zu lassen wäre vermutlich möglich, aber kaum sinnvoll. Der müsste schon mehr Intelligenz besitzen, mit der Umgebung klar zu kommen, was den Aufwand für ein solches Script deutlich nach oben schrauben würde. Zudem erlaubt die API das Erstellen von GPS Koordinaten per Script nicht, vermutlich um Spam zu verbieten.
      Ich muss auch (leider) ganz offen zugeben, dass mein Zeitpensum es im Moment nicht hergibt, jede Anfrage nach einem Skript persönlich umzusetzen. Ich mache aber gerne noch weitere Videos dazu (ein Zweiter Teil zu dem hier ist ohnehin angedacht), um euch hier mehr "Werkzeug" an die Hand zu geben.

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +1

      Was aber alternativ ginge: Du könntest mit den AI Blöcken (Move Controller und Basic Task Controller) eine Drohne bauen, die mit einem Erzdetektor auf niedriger Höhe über dem Boden fliegt. Im Basic Task Controller stellst du "Follow Target" ein, das kannst dann entweder du selbst sein oder ein Beacon, das du im Zentrum des Suchfelds aufstellst (kann auch z.B. an einem Rover befestigt sein). Wenn du im Erzdetektor "Mit Antenne senden" anklickst, dann sollten die Erze in deinem HUD auftauchen, wenn die Drohe drüber fliegt.

    • @pravum3128
      @pravum3128 Рік тому +2

      @@Nerdzeitalter Danke für die schnelle Antwort, ist mir halt eingefallen als ich Dein Video sah und anschließend Gold suchen war ;) . Ich komme noch nicht so richtig klar mit den ganzen Blöcken und deren Handhabung . Trotzdem dankö 😁

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +1

      @@pravum3128 Ging mir in der Beta anfangs nicht anders. Keen hat auf deren Homepage auch einen Guide, vielleicht hilft der dir ja weiter: www.spaceengineersgame.com/new-players/grid-ai-guide/

    • @pravum3128
      @pravum3128 Рік тому

      @@Nerdzeitalter danke, mal reinschauen.

  • @Ricky-pq1co
    @Ricky-pq1co 11 місяців тому +1

    Hallo, ich brauche mal hilfe. Ich habe ein LCD Inventar Skript welches die englischen Bezeichnungen vom Spiel benutzt. Z.B Iron anstatt Eisen. Wie kann man das Skript veranlassen des es die Deutschen Bezeichnungen verwendet ? Gibt es da ein Befehl oder soetwas was man einfügen kann? Und sorry ich hab keine Ahnung von Skripten.

    • @Nerdzeitalter
      @Nerdzeitalter  11 місяців тому +1

      Das Script wird vermutlich die Identifier verwenden, die das Spiel ihm gibt. Ich glaube nicht, dass die in einer anderen Sprache als Englisch in der API vorhanden sind. Welches genau nutzt du denn?

    • @Ricky-pq1co
      @Ricky-pq1co 11 місяців тому

      Das Inventory Content Display Script @@Nerdzeitalter

  • @michaelstellbogen8899
    @michaelstellbogen8899 Рік тому +1

    Hallo, ich habe eine Frage zu Scripte. Hoffendlich kannst Du mir helfen. Im Server ist das Scripen angeschaltet, aber im Programmierbaren Block können keine Scripte unter Bearbeiten- Scripte durchsuchen - ausgesucht werden. was mache ich denn falsch? Ich hoffe Du hast eine Antwort für mich. Dankeschön.

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому

      1. Du musst vermutlich noch den Experimentellen Modus im Server bzw. den Spieloptionen aktivieren
      2. Auf manchen Mulitplayer-Servern ist das Verwenden von Skripten an eine "Skripter-Rolle" gebunden. Da muss dich der Admin dann entsprechend freischalten.

  • @nobody1101
    @nobody1101 Рік тому

    Visual Studio 22 gibt es für Privatanwender auch in ner kostenlosen Version :)

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому

      22 und nicht Code? Gut zu wissen. Aber leider funktioniert das Mod SDK nur bis Version 2019

    • @nobody1101
      @nobody1101 Рік тому +1

      @@Nerdzeitalter ja es gibt die Community edition. Die gibt es auch für 2019, einfach mal googlen :)
      Ich weiß nicht ob die in irgendeiner Form eingeschränkt ist, aber es funktioniert.
      Ich habe vor zwei Wochen angefangen mich etwas mit diesem Thema zu befassen und bin über jedes Tutorial dankbar!
      Sehr schön und verständlich erklärt. Vielen dank und noch schöne Feiertage! :)

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +1

      @@nobody1101 Ah okay, ist vermutlich etwas an mir vorbei gegangen. Freut mich, dass das Video dir hilft, ich denke ich werde zwischen den Jahren noch einen zweiten Teil nachschieben. Dir ebenfalls schöne Feiertage und eine tolle Zeit!

    • @nobody1101
      @nobody1101 Рік тому +1

      @@Nerdzeitalter Das wäre Klasse. Vielleicht kannst du ja auch, in einem zukünftigen Video, auf Block Gruppen eingehen. Ich habe ein kleines Schleußen-Skript geschrieben oder zumindest versucht. Mit jeweils einer Innen und Außentür funktioniert es auch ganz gut. Nur eben Hangartore(mit mehreren Toren in einer Gruppe) lassen sich nicht ansteuern. Also vielleicht kannst du da mal irgendwann noch ein Video dazu machen, falls es deine Zeit und Lust her gibt. :)

    • @Nerdzeitalter
      @Nerdzeitalter  Рік тому +1

      @@nobody1101 Genau sowas wollte ich in Teil 2 behandeln

  • @dennis_lp0074
    @dennis_lp0074 Рік тому

    Auf Konsolen giebt es diese Funktion Leider nicht