Patches
Ein Patch ist Verhalten, das Sie zeichnen. Er sitzt sauber zwischen Ereignissen, die einfach sind, aber keinen Wert halten und nicht rechnen können, und Skripten, die alles können, aber verlangen, dass Sie Code schreiben.
Greifen Sie zum Patch, sobald Sie sich zum ersten Mal „…aber nur, wenn der Punktestand über zehn ist" oder „…jedes Mal ein Stück weiter bewegen" wünschen.
Patches werden kompiliert, nicht interpretiert, sie laufen also genau so schnell wie handgeschriebener Code. Das erzeugte Skript können Sie jederzeit im Code-Panel lesen — was zugleich der schnellste Weg ist zu prüfen, ob ein Graph tut, was Sie meinten.
Jeder Knoten mit seinen Ports: Patch-Knoten-Referenz — 203 Knoten in 24 Kategorien.
Vier Arten von Knoten
| Art | Woran Sie sie erkennen | Was sie ist |
|---|---|---|
| Event | nur Ausgänge, einer davon ein Puls | wo der Graph beginnt — beim Start, beim Tippen, jedes Bild |
| Effect | ein Puls hinein und einer hinaus | tut etwas, der Reihe nach |
| Control | teilt oder wiederholt den Puls | Verzweigung, Gate, Wiederholung, For-Each, Once, Verzögerung |
| Data | gar keine Pulse | ein Wert — eine Zahl, eine Summe, das Feld einer Komponente |
Der Puls-Draht ist die Reihenfolge, in der Dinge geschehen. Folgen Sie ihm von einem Ereignisknoten aus, und Sie lesen die Abfolge. Datendrähte tragen nur Werte; sie haben keine Reihenfolge.
Ports und Drähte
Ports sind typisiert (Zahl, Boolean, Zeichenkette, Vektor, Farbe, Objekt), und unpassende Typen verbinden sich nicht — das fängt eine Menge Fehler ab, bevor überhaupt etwas läuft.
Ein Vektor-Port klappt in x, y und z auf, Sie können also einen verdrahten und die
anderen beiden eintippen.
Ein unverbundener Eingang benutzt den Wert, den Sie in den Knoten getippt haben. Das ist meist genau das Richtige: verdrahten Sie nur die Teile, die sich ändern.
Einem Knoten sagen, welches Objekt er meint
Komponentenknoten („get transform", „set material") müssen wissen, welches Objekt.
Lassen Sie die Bindung leer, meint sie dieses Objekt — das, an dem der Patch hängt. Setzen Sie sie, arbeitet der Knoten stattdessen an jenem Objekt.
Zwei Annehmlichkeiten, die man kennen sollte:
- Get-Knoten sind nachsichtig. Eine Komponente zu lesen, die das Objekt nicht hat, liefert nichts, statt den Graphen zu zerreißen.
- Set-Knoten schreiben nur, was Sie ausgefüllt haben. Alles, was Sie in Ruhe gelassen haben, bleibt, wie es war.
Passend zu allem anderen, was Sie sehen können. Denken Sie nur daran, wenn Sie Werte zwischen einem Patch und einem Skript übergeben, wo Rotation in Bogenmaß ist.
Was im Katalog steht
| Kategorie | Was Sie dort finden |
|---|---|
| events | 30 Startpunkte — Start, Bild, Tippen, Tasten, Kollisionen, Tracking |
| components | jede Komponente lesen und schreiben |
| math · vector · logic · string | Arithmetik, Vergleiche, Vektoren, Text |
| flow | Verzweigung, Gate, Wiederholung, For-Each, Once, Verzögerung, Sequenz |
| state | Zähler, Umschalter, Timer, Glättung |
| entities · lifecycle | Objekte finden, erzeugen, spawnen, zerstören |
| physics | Impulse, Kräfte, Geschwindigkeit, Raycast |
| net | Mehrspieler — senden, empfangen, geteilter Zustand, spawnen |
| globals · variables · messaging | Werte, die mit anderen Patches und Skripten geteilt werden |
| ui | die Variablen einer Interface-Karte lesen und schreiben |
| functions | einen anderen Patch oder ein Skript aufrufen |
Einen Patch wiederverwenden
Speichern Sie einen Graphen als Ressource, und Sie können ihn auf andere Flächen ziehen. Wie er sich verhält, hängt davon ab, wie Sie ihn gebaut haben:
| Sie haben gebaut | Sie bekommen |
|---|---|
| keine Ein- oder Ausgangsknoten | ein Verhalten — hineinziehen und es läuft, ohne Verdrahtung |
| Eingänge, Ausgänge und einen Pulseingang | einen Schritt — er läuft, wenn der Puls eintrifft, danach sind die Ausgänge bereit |
| Eingänge und Ausgänge, keinen Puls | eine Funktion — ihre Ausgänge werden dort berechnet, wo sie gelesen werden |
Ihre Buchsen stammen von den Ein- und Ausgangsknoten, die Sie hineingelegt haben: Einen hinzuzufügen lässt ihn bei jedem Aufrufer erscheinen. Bearbeiten Sie den Patch, und alles, was ihn aufruft, aktualisiert sich live.
In einer reinen Funktion gibt es kein „dieses Objekt", Objekt- und Komponentenknoten gehören dort also nicht hin. Halten Sie Funktionen bei Daten, Mathematik und Logik und erledigen Sie die Szenenarbeit beim Aufrufer.
Patches können auch Skripte aufrufen — der übliche Weg, an etwas heranzukommen, das der Katalog nicht abdeckt.
Werte, die den Graphen überdauern
Drei Wege, etwas zu behalten, unterschiedlich weit reichend:
| Speicher | Geteilt mit |
|---|---|
| variables | den Knoten dieses einen Patches |
| globals | jedem Patch, Skript und Ereignis im Projekt |
| messages | allen, die zuhören, als einmalige Benachrichtigung nach Namen |
Globals gibt es in zwei Geltungsbereichen: projektweit (sie überleben den Wechsel zwischen Spaces) und nur für den Space (sie beginnen frisch). Namen werden eingetippt statt verdrahtet, was das Routing vorhersagbar hält.
Die Notluke
Zwei Knoten nehmen JavaScript direkt entgegen: expression liefert einen Wert, action führt Anweisungen aus. Alles, was ein Skript erreichen kann, ist darin verfügbar.
Sie sind für die eine kleine Sache da, die dem Katalog fehlt — nicht als Lebensweise. Wenn Sie merken, dass Sie viel darin schreiben, schreiben Sie ein Skript und rufen es aus dem Graphen auf.
Wenn etwas nicht stimmt
Öffnen Sie das Code-Panel. Ein Graph, der nicht kompiliert — eine Schleife in den Datendrähten, kaputtes JavaScript in einem Action-Knoten — sagt es Ihnen dort.
Und ein kaputter Patch reißt nie die Szene mit sich: Die anderen laufen weiter.
Weiter: Spielsteuerungen — lassen Sie Leute umherlaufen.