Jump to content

Neue Beta-Version 2.1.6.0


Neo

Empfohlene Beiträge

Hallo,

heute gibt es eine neue Beta-Version, mit ein paar sehr interessanten neuen Funktionen:

  • Unterstützung von Signalen mit mehr als 2 Signalbegriffen:
    • Signale können in einem neuen Signal-Editor von den Modellbauern mit bis zu 25 verschiedenen Zuständen (Begriffen) belegt werden
    • Signale können mit anderen Signalen (Vor/Hauptsignal) oder mit Weichen verknüpft werden
  • Neue und verbesserte Sound-Funktionen:
    • Modellbauer können jedes 3D-Modell mit einer beliebigen Anzahl von Sounds aus dem Katalog ausrüsten
    • In der Kategorie "Zusätzlich" steht ein neues Objekt "Geräuschquelle" zur Verfügung, mit dem beliebige Sounds (auch aus externen Dateien) auf der Anlage platzieren werden können
    • Alle Sounds werden korrekt in 3D abgespielt, d.h. bei einem 5.1 Soundsystem kommen die Sounds auch aus der korrekten Richtung. Auch Stereo-Lautsprecher profitieren davon.
    • Es werden WAV, OGG und MP3-Formate unterstützt (OGG wird bevorzugt)
    • Sounds können über die Ereignisverwaltung und die Steuerschnittstelle angesprochen werden (Doku folgt)
    • Die nächsten Tage wird der Online-Katalog mit weiteren Geräuschen bestückt werden
  • Schalter unterstützen nun ebenfalls mehr als 2 Position, falls sie mit einem Signal oder einer Weiche mit mehr als 2 Zuständen verbunden sind
  • Erweiterte Unterstützung von Variablen in der Ereignisverwaltung
    • Alle Objekte können in der Ereignisverwaltung nun optional auch per Name/Variable angesprochen werden. Dazu auf "Benutzerdefiniert" im Selektionsfenster klicken und anschließend den Namen oder die Variable (beginnend mit $) eintragen
    • Die Animations/Countdownbedingungen und -Aktionen unterstützen nun auch Variablen (beginnend mit $)
    • Objektnamen in Objektvariablen können nun selbst aus Variablen stammen, indem der Objektname in Klammern gesetzt wird. Beispiel: (Var).Speed referenziert die Variable "Speed" des Objektes, dessen Name in der Variable "Var" enthalten ist. Diese Logik lässt sich beliebig tief verschachteln, wie z.B. ((Var).Name).Speed - Variable "Speed" des Objektes, dessen Name in der Variable "Name" enthalten ist, wobei diese Variable Teil des Objektes ist, dessen Name in "Var" steht.
  • Verknüpfen von Objekten per EV
  • Das Fenster der Ereignisverwaltung speichert sich die zuletzt geöffneten Ereignisgruppen und das zuletzt selektierte Ereignis
  • Loks drehen sich nun korrekt auf Drehscheiben mit
  • Anpassung der integrierten Prellbockmaßstäbe
  • Bodenplatten, die nicht nach "oben" zeigen, werden bei der automatischen Geländeanpassung ab sofort ignoriert. Das verhindert Probleme wie hier.
  • Problem behoben, bei dem der Rauch bei Loks an der falschen Stelle austrat, nachdem das Lokmodell geändert wurde
  • Ergänzung:
    • Signale und Wechen können nun auch mit den Cursor-Tasten geschaltet werden
    • Für Signale, Weichen und Schalter steht die vordefinierte Objektvariable "_State" zur Verfügung, mit der auf die Signal-, Weichen- bzw. Schalterstellung in der EV zugegriffen werden kann
    • Experimentelle Unterstützung von Linux und Mac OS X, siehe Wiki-Artikel

Während der Beta-Phase wird die Wiki-Dokumentation zu den neuen Funktionen angepasst.

Das Teilen von Inhalten ist bei dieser Version temporär deaktiviert. Enthält die Beta-Version keine größeren Fehler, wird die Version in den nächsten Tagen für alle veröffentlicht, sodass dann auch das Teilen wieder zur Verfügung steht.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

... bei meinen ersten Versuchen mit den Schaltern, die nun (endlich) mehr als 2 Zustände darstellen können ist mir folgendes aufgefallen...

... wenn ich nun einen Schalter mit der 24-gleisige Drehscheibe verbinde habe ich 24 Schaltzustände... mit jedem Leertastendruck komme ich einen Schritt weiter, aber leider keinen Schritt zurück, so daß ich immer einmal ganz durch muß...

... wäre es möglich, daß man z.B. mit Strg+Leertaste einen Schritt zurück kann? (... gilt auch für die Drehscheibe...  Signale und Weichen mit mehr als 2 Zuständen)

Gruß

EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

... danke!

... dafür gibt es aber gleich noch etwas neues...  in der EV kann ich mir mit der Aktion  "Beschriftung setzen" unter anderem auch den Wert einer vordefinierten Objektvariablen anzeigen lassen z.B. als Text: $Lok1._CurrentSpeed "zeigt" mir die aktuelle Geschwindigkeit von "Lok1" an...

Wäre es möglich auch Weichen und Signalen (evtl. Schaltern) eine vordefinierte Variable "._Stellung" (mir fällt gerade kein englischer Begriff ein) mit zu geben?

... so könnte man mit nur einem Ereignis z.B. die Stellung der Drehscheibe auf einem "Steuerpult" (oder neben der Drehscheibe) anzeigen lassen.

Ereignis: Weiche schaltet -> "Drehscheibe" -> jede Position -- Aktion: Beschriftung setzen -> "Drehscheibenpos" -> Text: $Drehscheibe._Stellung

... gleiches für Signale, Weichen (evtl. Schalter)...

Gruß

EASY

     

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

noch eine Idee von mir:

Wenn ich einen Schalter mit der Drehscheibe verbinde und zum Steuern am Schalter die Pfeil auf und Pfeil ab Tasten benutze, ist ja bei Schalterstellung 0 bzw. 23 Schluss.

Es wäre ziemlich nützlich, wenn bei Stellung 23 und nochmaligen Drücken auf Pfeil nach oben wieder auf Stellung 0 gegangen würde. Ebenso wenn ich bei Stellung 0 auf Pfeil nach unten drücke, Scheibe und Schalter auf 23 gehen würden.

Gleiches gilt für Weichen, Dreiwegweichen und DKW, wahrscheinlich auch für mehrbegriffige Signale.

LG

Brummi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

eine Frage zu verschachtelten Variablen

Aufgabenstellung:
FührendeLok._Name - ICE_102
NachlaufendeLok._Name - ICE_102_1
Beide haben eine Objektvariable .Gleis

Nach deiner Ausführung:

Zitat

Alle Objekte können in der Ereignisverwaltung nun optional auch per Name/Variable angesprochen werden.

Zitat

Diese Logik lässt sich beliebig tief verschachteln, wie z.B. ((Var).Name).Speed - Variable "Speed" des Objektes, dessen Name in der Variable "Name" enthalten ist, wobei diese Variable Teil des Objektes ist, dessen Name in "Var" steht.

habe ich versucht den Loknamen der führenden Lok (ICE_102) in die Variable Name zu schreiben - Funktioniert
Dann soll der Inhalt der Objektvariablen .Gleis der nachlaufenden Lok gesetzt werden:
Variable wird gesetzt: $(Name)_1.Gleis - Funktioniert nicht
Alternativ habe ich probiert das "_1" aus einer festen Variable "Name2" einzufügen:
Variable wird gesetzt: $((Name)Name2).Gleis - Funktioniert nicht

Wo ist der Denkfehler? Vielleicht verstehe ich ja was falsch, oder bin ich da auf einen Bug gestoßen?

Gruß
MarkoP

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Marko,

nach der geschlossenen Klammer darf kein weiterer Text kommen, sondern sofort die Eigenschaft des Objektes. Wenn du also auf "ICE_102_1" zugreifen willst, musst du diesen Namen irgendwo in einer Variable speichern. Die technische Auflösung von Namen zu Objekten ist nicht einfach nur ein Ersetzen von Text, weshalb ein "_1" vom "Compiler" nicht interpretiert werden kann.

Wie wär's wenn du den Namen der Partnerlok in der jeweils anderen Lok speicherst? Dann kannst du per $((Name).PartnerLok).Gleis auf das Gleis der Partnerlok zugreifen, die im Objekt "Name" (Objektvariable "Partnerlok") hinterlegt ist.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

da ich unter anderem gerne einen Wechsel der Triebwagen realisieren möchte ist dies nicht wirklich eine Option, da ich ja nicht weiß welche Lok im Verlauf eine andere ersetzt. Mir ist also der Name der Partnerlok nicht dauerhaft bekannt.

Trotzdem eine Nachfrage zum Verständnis und eine Analyse deines Beispieles $((Name).PartnerLok).Gleis

Name beinhaltet den Namen der ersten Lok (ICE_102)
Partnerlok beinhaltet nach deinem Vorschlag den Namen der zweiten Lok (ICE_102_1)
Gleis beinhaltet die Information auf welches Gleis die Lok fahren soll, z.B. im Bahnhof auf Gleis 1

Dann würde $((Name).PartnerLok).Gleis doch ICE_102.ICE_102_1.Gleis beinhalten, oder nicht?
Das ergibt für mich keinen Sinn da ich ja eigentlich nur ICE_102_1.Gleis brauche um die Partnerlok anzusprechen.

Der Inhalt einer Variable ist doch ein String, oder? Wenn es möglich wäre diesen String wie in fast jeder Programmiersprache einfach zu bearbeiten (Teile des Strings herausnehmen, Text anfügen, etc.) und in eine neue Variable schreiben zu lassen? Ich meine vor der Verarbeitung im Compiler, so dass dieser direkt den bearbeiteten Variableninhalt übergeben bekommt statt zwei einzelnen Variablen.

Gruß
MarkoP

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Marko,

es handelt sich bei den Variablen nicht um eine String-Verarbeitung, weshalb "$((Name).PartnerLok).Gleis" nicht zu "ICE_102.ICE_102_1.Gleis" wird. Dahinter steckt ein Compiler, vergleichbar mit denen von objektorientierter Programmierung. Der Compiler geht dabei rekursiv vor, und startet mit der innersten Klammer:

  1. ((Name).PartnerLok).Gleis: Name enthält das Objekt "ICE_102" -> (ICE_102.PartnerLok).Gleis
  2. (ICE_102.PartnerLok).Gleis: PartnerLok enthält das Objekt "ICE_102_1" -> ICE_102_1.Gleis

Der Compiler ersetzt also nicht einfach nur Variablen durch den Inhalt, sondern muss diese auch von "innen nach außen" interpretieren. Das Bearbeiten von Strings möchte ich dort heraus lassen, das würde die ganze Sache dann noch weiter verkomplizieren.

Beschreib doch einfach mal kurz, was du mit deinen Partnerloks erreichen willst.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

ok, anhand deiner Erläuterungen habe ich es verstanden. Aber ich finde du denkst hierbei viel zu kompliziert.
Wenn statt deiner Art eine Bearbeitung der Variable auf Stringbasis möglich wäre, bräuchte man diese Verschachtelungen gar nicht erst sondern würde gleich die eine Zielvariable zum Auslesen angeben. Das wäre flexibler und einfacher Verständlich finde ich. Auch würde es die Zahl der Objektvariablen verringern, da man ähnliche Teile aus bestehenden Objektvariablen ableiten könnte.
Vielleicht kannst du ja zukünftig bei einer Überarbeitung mal überlegen ob du ggf. einen Konzeptwechsel in Betracht ziehst.

Ok, Problembeschreibung:

Ich möchte einen möglichst realen Spielbetrieb mit möglichst großer Flexibilität schaffen. Das heißt, Lok's können verschiedene Ziele anfahren, in den Bahnhöfen verschiedene Gleise befahren (beides aus Objektvariablen abgeleitet), oder Züge auch jederzeit anders zusammen gesetzt werden. Das funktioniert soweit sehr gut. Beim Wendezug entsteht hier allerdings das Problem, dass die Informationen der getriebenen Lok zur gezogenen Lok passend sein müssen. Sprich ich muss bei Einfahrt in einen Bahnhof auf die Objektvariablen der gezogenen Lok zugreifen um diese für die Anzeige, Ausfahrt etc. verarbeiten zu können. Die Objektvariablen der getriebenen Lok gelten ja als Ziel für den aktuellen Bahnhof bzw. die Anzeigen für den letzten Bahnhof (Herkunft), und können daher nicht verändert bzw. gebraucht werden. Da auch die Wendezüge nicht in jedem Bahnhof wenden sollenfunktioniert auch das "vertauschen" der Informationen nicht.

Genauer kann ich es leider nicht beschreiben, denn genau in der Unbestimmheit ist das Problem begründet.

Kurz gesagt, ich muss auf die Objektvariablen der Partnerlok zugreifen können, welche aber flexible gewechselt werden kann, weshalb deine Idee mit der Partnerlok nicht greift, da es keine "feste Partnerlok" gibt.

Gruß
MarkoP

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Marko,

einen Konzeptwechsel wird es nicht geben, da die aktuelle Implementierung mächtiger als eine reine Ersetzung von Text ist. Worüber man nachdenken könnte wäre eine Erweiterung, um Objektnamen zu parametrisieren, also in der Art (Name_*).Gleis, wobei das Sternchen dann einem Ersetzungsmuster folgt. Aber hier gibt es noch keine konkreten Gedanken dazu, weshalb ich es mir für zukünftige Erweiterungen notiere.

Zu deinem Problem:
Was ich nicht verstehe ist, wie du überhaupt auf die Partnerlok zugreifen willst, wenn du deren Namen nicht kennst. Was würde dir dann eine Textersetzung von "(Name)_1" bringen, wenn du nicht weiß, ob die Partnerlok überhaupt auf "_1" endet? Irgendwo musst du den Namen der Partnerlok hinterlegen.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

ich hatte es so angedacht, dass die angetriebe Lok jeweils den reinen Namen hat, während die gezogene Lok während des Halts im Bahnhof bzw. beim Zusammenstellen um "_1" erweitert wird. Das heißt das sie die Ergänzung "_1" nicht immer auf die gleiche Lok bezieht, sondern zwischen den beiden Loks hin und her switcht.

Gruß
MarkoP

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Marko,

auch hier kommt bei mir wieder die Frage auf, wie du den Namenszusatz "_1" zur Lok hinzufügst. Statt dem Zusatz kannst du doch einfach eine Objektvariable befüllen. Anders ausgedrückt, wenn du Loks zu einem Zug zuordnest, werden die beiden Loks miteinander "verpartnert". Ob das durch den Namenszusatz "_1" oder durch das Setzen von Objektvariablen geschieht, spielt ja keine große Rolle, das lässt sich ja mittlerweile alles per EV automatisieren.

Bevor dieser Thread hier aber ausartet, wäre es besser, wenn du eine Beispielanlage veröffentlichst, wo das Thema getrennt behandelt werden kann.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Easy und Brummi,

mit der aktuellen Version können nun auch Signal und Weichen noch besser per Tastatur gesteuert werden. Außerdem steht für Signale, Weichen und Schalter die vordefinierte Objektvariable "_State" zur Verfügung.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

"... _State" ist sehr hilfreich bei meinen Versuchen mit den neuen Signalfunktionen... endlich brauche ich nicht immer zu zählen ob die Animationsverteilung "richtig" ist...

@Brummi

... wenn ich eine neue Funktion nicht hinbekomme, bin ich inzwischen dazu übergegangen erst einmal einen Kommentar zu schreiben (-> Frustabbau)... diesen aber noch nicht zu senden... dann versuche ich es noch einmal... erst wenn es dann nicht geht wird abgeschickt... es erspart doch etwas an Arbeit mit dem hinterher durchstreichen (--- jedes mal Monitor putzen, bis ich gemerkt habe, daß die Funktion ja impementiert ist ---)... ... und dem öffentlichen "Zugeben", daß man ungeduldig war...

Gruß

EASY 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Lutz,

wenn du uns eine Anlage zeigen möchtest, die mit der Beta-Version geplant wurde, musst du diese hier an einen Beitrag anfügen. Der Upload in den Online-Katalog ist in der Beta-Version deaktiviert.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo und Marko,

ich hänge mich mal rein:P
ich habe unter "Lokvariable" ein Beispiel in die experimentellen Anlagen gestellt, wie ein Lösungsansatz aussehen könnte...

Dazu habe ich eine "Hilfsvariable" Gleis-Inhalt benutzt.
Lok ranfahren, die Variablen werden gesetzt, wegfahren, Variable werden gelöscht; ist alles nur "Handbetrieb", ging mir aber ums Prinzip.

Gruß- Lutz

 

Tante Edit sagt, zu früh gefreut; das Ereigniss 1a wirkt ja auch auf den ganzen Zug >:(:$, da muss noch nachgebessert werden :(.

Edit 2: Upps, ich dachte der wäre freigeschaltet...trotz des Fehlers (Edit1) hier ist die Zip.

Und noch ein Edit ::) funktioniert wie gedacht.

 

Lokvariable_verbessert.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

@FriLu

Ich habe auch eine für mich bis jetzt passende Lösung gefunden.
Neo hatte mich in einem anderen Zusammenhang darauf aufmerksam gemacht, dass das Studio bei gleichbenannten Objekten probleme mit der Ansprechung durch den Namen hat. Diese Tatsache habe ich ausgenutzt und einfach getriebene und gezogene Lok gleichbenannt. Wenn man nun beim Ereignis "Zug betritt Gleis" den Loknamen in eine Variable ausliest und dann mit dieser Variablen wiederum die Objektvariable dieses benannten Objektes anspricht wirkt sich das setzen der Variable nur auf die hintere Lok aus.

Keine Ahnung ob das gewollt ist oder vielleicht später zu Problemen führen könnte, aber es ist ein Lösungsansatz den ich näher untersuchen werde.

@Neo

Frage, ist das so gewollt oder ein Bug, dass nur die hintere Lok angesprochen wird und nicht beide. Nach welchem Kriterium reagiert das Studio wenn zwei Objekte den gleichen Namen haben und dann per Namen angesprochen werden?

Gruß
MarkoP

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Marko,

Objekte mit gleichen Namen werden auf jeden Fall zu Problemen führen, denn das Verhalten des Studios ist in diesem Fall rein zufällig, je nachdem welches Objekt zuerst im Speicher liegt. Daher grundsätzlich immer individuelle Namen vergeben, wenn Objekte in der EV per Variable angesprochen werden.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...