Missionsziele nicht sichtbar

  • Ich habs endlich bald geschafft mit dem Tutorial, aber mein letztes Problem: obwohl ich den Str-Converter benutze um die Missionsziele zu erstellen, kann ich nur leere Kästen sehen, d. h. da steht nichts hinten dran. [sowohl in-game, als auch bei"Neues Spiel"]
    Das nervt mich ein bisschen, so kurz vorm Ende des tutorials nochmals Fehler zu machen... trotzdem bitte ich euch mir nochmals zu helfen.
    Falls ihr was nicht verstanden habt fragt doch bitte.
    Infos: Kann das spiel sogar schon ganz normal starten -> aber wenn ich dann auf Neues spiel gehe -> nur 4 leere Kästen [bzw. 3 auf normal und hard].... mit der Mission selbst is dank euch alles in Ordnung :D
    Danke schonmal im voraus


    The Niggster

  • Die Missionsziele brauchst du nicht im STR-Converter erstellen, hierfür ist sogar Notepad besser geeignet. Die erstellst du da einfach nach folgendem Muster:


    fiction_0: "Hier kommt dann das erste Missionsziel rein."
    text_0: "Hier kommt die kurze In-Game-Fassung des Missionsziels rein."
    fiction_1: "Hier kommt dein zweites Missionsziel rein."
    text_1: "Kurzfassung des zweiten Missionsziels"
    fiction_2: "Und so weiter und so fort..."


    Stell auch sicher, dass die Datei (goals.str) dann im richtigen Ordner (intrface\miss20) liegt und dass du die Mission-Parameter richtig eingestellt hast (Komag-Tutorial: Kapitel XIV - Punkt 9). Viel Erfolg!

  • na.. was is denn das X( es klappt einfach nicht
    habs mit notepad versucht... naja vergebens ;(
    weiß vllt. noch jemand, was falsch sein könnte?


    Edit: Wartet hab meinen Fehler gefunden: ich glaube das war bis jetzt immer mein Problem:
    immer in den Richtigen Ordner mit den Dateien! [danke Mirko]
    Unterordner/Unterverzeichnisse sind falsch, wenn dann die datei hier rein gebracht wird!
    Genau das war auch mein Problem bei der installation von DromEd... die Exe-Datei muss in das Thief Hauptverzeichnis, und darf in keinem Unterorner sein.


    So das wäre geklärt.... ich bin jetzt endlich mit dem Tutorial fertig und kann mit Bauen beginnen! :D
    Danke nochmal an alle


    The Niggster

  • Zitat


    Stell auch sicher, dass die Datei (goals.str) dann im richtigen Ordner (intrface\miss20) liegt und dass du die Mission-Parameter richtig eingestellt hast (Komag-Tutorial: Kapitel XIV - Punkt 9). Viel Erfolg!


    Und wie geht das bei mehrsprachigen Missionen? Meine kommt auch in französisch und englisch 'raus ... unter intrface\miss20\german usw. ist es auch bei mir nicht sichtbar ... ?(

    Und so sei der Hammer ewiges Symbol unseres Aufstiegs aus dem Schatten des Schwindlers.

  • Also was genau in der goals.str drinsteht, kann ich natürlich hier nicht verraten ... bitte um Verständnis ... :D


    Nee im Ernst, die Datei ist in Ordnung und wird auch eingelesen, wenn sie direkt im Verzeichnis g:\dark2\intrface steht ... nur nicht in den Unterordnern. :(


    In den Missions-Parametern des DromEd steht die entsprechende Syntax ... es ist wirklich nur die Frage der richtigen Ordner. Brauche ich etwa noch eine Pfad-Anweisung in irgendeiner .CFG-Datei wie bei den Texturen? ?(

    Und so sei der Hammer ewiges Symbol unseres Aufstiegs aus dem Schatten des Schwindlers.

  • ... also es funzt doch noch nicht 100%ig, wenn das erste Problem auch nicht allzu wichtig ist:
    Der Inhalt der GOALS.STR wird nun richtig angezeigt, aber im Startmenü steht nur Neues Spiel, eigentlich hatte ich in der NEWGAME.STR etwas eigenes definiert. Die NEWGAME.STR steht mit der GOALS.STR im selben Verzeichnis, also dark2\intrface\miss20\german (bzw. ..french ...english).
    Die Angaben unter Editors->Mission Parameters->Dark Mission Description sind
    Mission Number = 20
    Mission Pathname = miss20 ... richtig?



    Was aber viel übler ist: Meine ansonsten fertiggestellte FM (noch 1-2 Alphatester gesucht) endet entweder nach Beendigung aller Aufträge nicht oder aber vorzeitig.
    D.h. wenn ich nach Beendigung der Aufträge 0-9 den Zielraum erreiche, tut sich nix oder wenn ich vorab im Zielraum bin und neue Aufträge bekomme, sollte das Spiel erst enden, wenn ich nach Beendigung der Aufträge 0-9 in den Zielraum zurückkehre, aber es bricht dann schon mit Auftrag erfüllt ab.


    Der Startpunkt hat die Scripte VictoryCheck und ConvPlayer, der Zielraum die Scripte WelcomeRoom und TrigRoomPlayer.
    Die .CMD-Datei beinhaltet
    quest_create_mis goal_type_10, 4
    quest_create_mis goal_state_10, 0
    quest_create_mis goal_visible_10, 0
    quest_create_mis goal_target_10, 107
    quest_create_mis goal_final_10, 1
    ... eigentlich doch alles richtig? Vielleicht nehme ich am Ende doch einen transferierten BT anstatt dieses speziellen Rooms ..?

    Und so sei der Hammer ewiges Symbol unseres Aufstiegs aus dem Schatten des Schwindlers.

    Einmal editiert, zuletzt von zappenduster ()

  • Zitat

    Original von zappenduster
    ... also es funzt doch noch nicht 100%ig, wenn das erste Problem auch nicht allzu wichtig ist:
    Der Inhalt der GOALS.STR wird nun richtig angezeigt, aber im Startmenü steht nur Neues Spiel, eigentlich hatte ich in der NEWGAME.STR etwas eigenes definiert. Die NEWGAME.STR steht mit der GOALS.STR im selben Verzeichnis, also dark2\intrface\miss20\german (bzw. ..french ...english).


    Das ist falsch, die Newgame.str kommt nur in den intrface-Ordner, nicht in den Missionsornder im intrface-Ordner.
    So stimmt der Pfad: dark2\intrface\Newgame.str


    Zitat

    Original von zappenduster
    Was aber viel übler ist: Meine ansonsten fertiggestellte FM (noch 1-2 Alphatester gesucht) endet entweder nach Beendigung aller Aufträge nicht oder aber vorzeitig.
    D.h. wenn ich nach Beendigung der Aufträge 0-9 den Zielraum erreiche, tut sich nix oder wenn ich vorab im Zielraum bin und neue Aufträge bekomme, sollte das Spiel erst enden, wenn ich nach Beendigung der Aufträge 0-9 in den Zielraum zurückkehre, aber es bricht dann schon mit Auftrag erfüllt ab.


    Was mir bei Dromed aufgefallen ist:
    Wenn nur noch ein Ziel unerfüllt ist, aber noch mind. 1 Ziel unsichtbar ist, dann ist es der sichere Weg, erst die unsichtbaren Ziele via QVar sichtbar zu machen und dann erst das andere Ziel auf erfüllt zu setzen.
    Du solltest am besten mal die Links zu den QVar's überprüfen, zuerst sollten die QVar's getriggert werden, die neue Ziele sichtbar machen und dann die andere QVar. Und überprüfe natürlich auch die DestroyTraps ob dort die Links in der richtigen logischen Reihenfolge stehen.


    Zitat

    Original von zappenduster
    Der Startpunkt hat die Scripte VictoryCheck und ConvPlayer, der Zielraum die Scripte WelcomeRoom und TrigRoomPlayer.


    Warum verpasst du dem Zielraum dieses WelcomeRoom Skript? TrigRoomPlayer reicht vollkommen.



    Sieht für mich auch richtig aus, daran liegts nicht.

  • Danke für die Rea ... :)


    Zitat

    Newgame.str nur in den intrface-Ordner, nicht in den Missionsornder im intrface-Ordner. dark2\intrface\Newgame.str


    Aber was ist bei mehrsprachigen Versionen? ?(


    Zitat

    Wenn nur noch ein Ziel unerfüllt ist, aber noch mind. 1 Ziel unsichtbar ist, dann ist es der sichere Weg, erst die unsichtbaren Ziele via QVar sichtbar zu machen und dann erst das andere Ziel auf erfüllt zu setzen.
    Du solltest am besten mal die Links zu den QVar's überprüfen, zuerst sollten die QVar's getriggert werden, die neue Ziele sichtbar machen und dann die andere QVar. Und überprüfe natürlich auch die DestroyTraps, ob dort die Links in der richtigen logischen Reihenfolge stehen.


    Wie ändere ich so eine Reihenfolge, wenn gleich 5 QVars von einem Auslöser geschaltet werden? Die Links stehen willkürlich in der Liste.


    Mit DTs arbeite ich gar nicht, denn die Ziele werden ausschließlich nach Lesen von Schriftstücken per CD ausgelöst und allenfalls mit Status "2" als unerfüllbar markiert. Das Ziel "Rückkehr zum Ausgangspunkt" wird an einer ganz anderen Stelle der FM aktiviert. Das macht das Problem so schwer verständlich. :(


    Zitat

    Warum WelcomeRoom Skript? TrigRoomPlayer reicht.


    Weil es bei Komags Doku und einigen FMen so drin ist. Ich habe es mal ohne versucht ... gleiches Resultat: Der Zielraum löst das Ende aus, obwohl es nach Defi der Variablen 10 noch gar nicht 'dran' ist. X(

    Und so sei der Hammer ewiges Symbol unseres Aufstiegs aus dem Schatten des Schwindlers.

    Einmal editiert, zuletzt von zappenduster ()

  • Zitat

    Original von zappenduster
    Aber was ist bei mehrsprachigen Versionen? ?(


    Die Lösung ist ganz simpel:
    dark2\intrface\SPRACHE\Newgame.str also z.B.


    D.h. du legst die Newgame.str auch in mehreren Sprachen an und kopierst sie in die entsprechenden Sprachordner.


    Zitat

    Original von zappenduster
    Wie ändere ich so eine Reihenfolge, wenn gleich 5 QVars von einem Auslöser geschaltet werden? Die Links stehen willkürlich in der Liste.


    Wie du ja bereits gemerkt hast, wird die Reihenfolge wie die Links aufgelistet werden, von der Link ID (diese 32 Bit Integer) bestimmt. Wenn du die Links in der falschen logischen / chronologischen Reihenfolge angelegt hast kann man das aber noch beheben.


    Angenommen folgendes Szenario:
    (Link-ID, Flavour, From, To)



    1 CD DefaultRoom(112) QVar(12)
    3 CD Button(4) DestroyTrap(7)
    6 CD DefaultRoom(112) QVar(17)


    Wenn jetzt die DestroyTrap(7) auch die QVar(17) "löschen" würde, könnte diese nie feuern, da sie bevor sie getriggert wird, bereits "gelöscht" wird. Das Problem lässt sich ganz einfach beheben:


    Man muss den CD Link zu der DestroyTrap an das Ende der Liste bekommen, damit diese zum Schluss getriggert wird (da DromEd die Liste der Reihe nach abarbeitet).
    Um das zu erreichen musst du folgendes tun:
    Klicke auf den letzten Link (den mit der größten ID), in dem Fall den Link mit ID "6". Dann klickst du auf "Add" und gibst dort die gleichen Werte ein wie bei Link "3" ein und legst einen neuen Link an. Das Ganze sieht dann so aus:



    1 CD DefaultRoom(112) QVar(12)
    3 CD Button(4) DestroyTrap(7)
    6 CD DefaultRoom(112) QVar(17)
    7 CD Button(4) DestroyTrap(7)


    Nun ist es fast geschafft, du musst jetzt nur noch den Link "3" löschen, damit es so aussieht:



    1 CD DefaultRoom(112) QVar(12)
    6 CD DefaultRoom(112) QVar(17)
    7 CD Button(4) DestroyTrap(7)


    Da DromEd die Links jedoch nicht chronologisch nummeriet (es werden manchmal ID's übersprungen), kann es passieren, das du den Link mehr als 1 mal neu anlegen musst, bis er am Ende der Liste steht und du musst dann entsprechend auch mehr als 1 Kopie des Links aus der Liste löschen, aber das Prinzip bleibt das gleiche.


    Eine andere / schnellere Methode ist mir leider nicht bekannt.


    Zitat

    Original von zappenduster
    Mit DTs arbeite ich gar nicht, denn die Ziele werden ausschließlich nach Lesen von Schriftstücken per CD ausgelöst und allenfalls mit Status "2" als unerfüllbar markiert. Das Ziel "Rückkehr zum Ausgangspunkt" wird an einer ganz anderen Stelle der FM aktiviert. Das macht das Problem so schwer verständlich. :(


    Ich habe gerade bei meinen FM's nochmal geschaut und bei 2 hab ich auch ein "Gehe zu Raum XYZ" als letztes Missionsziel, welches auch zu Beginn unsichtbar ist. Wie ich bereits gesagt habe, ich kann dir nur raten, immer erst ein neues Ziel aufzudecken bevor ein altes erfüllt wird, damit die Mission nicht abrupt endet. Du solltest vlt. den Spieler anders durch dein Level "lotsen", also z.b. verschlossene Türen wo der Schlüssel in der Nähe der Auslöser der Missionsziele versteckt ist etc.


    Zitat

    Original von zappenduster
    Weil es bei Komags Doku und einigen FMen so drin ist. Ich habe es mal ohne versucht ... gleiches Resultat: Der Zielraum löst das Ende aus, obwohl es nach Defi der Variablen 10 noch gar nicht 'dran' ist. X(


    Ok bitte versteh mich hier nicht falsch, ich will mich auf keine Fall über Leute wie Komag stellen, die viel mehr Ahnung haben, die Sache ist nur die, dass es dieses TrigRoomPlayer Skript auch tut und umso mehr man an Skripten hinzufügt umso mehr "Seiteneffekte" kann man sich einhandeln.

  • Das Problem mit der Reihenfolge der Link-Ausführung hat mich auch schon immer etwas irritiert. Habe aber noch nicht die Zeit gefunden es wirklich einmal erschöpfend auszutesten. Eine einfachere Möglichkeit als intruder vorschlägt, ist eine zusätzliche RelayTrap zu verwenden, die als erstes ausgelöst wird (damit alle ihre Links aktiviert) und einen dieser Links auf eine Destroytrap schickt, die dann entweder den Trigger (falls dieser kein Roombrush oder sonst was wichtiges ist) oder den RelayTrap selbst aus der Mission löscht. Die Relaytrap wird zumindest nach meinen Erfahrungen erst komplett abgearbeitet, bevor die nachgeschaltete Destroytrap zum Tragen kommt. Wenn man dieses Verfahren jedoch weiter denkt, müsste auch eine Konstruktion möglich sein, die ohne RelayTrap auskommt (aber das müsste mal jemand ausgiebig testen).

  • Ok, wie DromEd die Links abarbeitet und warum die Nummerierung manchmal scheinbar "willkürlich" erfolgt ist mir jetzt klar.


    Laut einem Paper von Doug Church von einer Game Developer Konferenz zum Thema Object Systems arbeitet DromEd die Links strikt linear nach ihrer ID ab.


    Die Vergabe der ID richtet sich einfach nach dem Zeitpunkt des Erstellens des Links, ähnlich wie die Time-Stamp eines Brushes. Der Unterschied zum Brush / Objekt ist nun der, dass diese Time-Stamp im Nachhinein nicht mehr verändert werden kann, da sie als eine Art Tuple Identifier für das Objekt System der DarkEngine dient.


    SinisterShadow:
    Ich habe deine Idee mit der RelayTrap noch nicht getestet, aber verlagerst du damit das Problem der Linkreihenfolge nicht einfach vom Objekt zur RelayTrap?
    Wenn die Reihenfolge bei der RelayTrap nicht passt, ist das Resultat doch wieder das gleiche...oder?

  • Ich weiß nur, dass ich es schon ein paar mal so gemacht habe und es bisher auch immer funktioniert hatte.


    Was aber eigentlich die entscheidendere Frage ist: Arbeitet Dromed die Links mit dem Verfahren der Tiefensuche oder der Breitensuche ab? Bei Breitensuche wäre die Reihenfolge in diesem Falle egal, da dann die Links auf jeden Fall als erstes in eine Warteschlange eingefügt würden, bevor das erste der verlinkten Objekte überhaupt angefasst würde. Konsequenz wäre dann hier: selbst wenn das erste verlinkte Objekt eine DestroyTrap wäre, würden erst alle verlinkten Objekte des Triggers / RelayTrap in die Warteschlange kommen, dann in der DestroyTrap erkannt werden, dass diese den Trigger/RelayTrap vernichten soll, was ebenfalls als "Auftrag" ans Ende der Warteschlage gestellt würde. Bevor dieser letzte Auftrag dann aber ausgeführt würde, würden erst alle anderen in der Warteschlange davor stehenden Aufträge (was hier alle anderen Links aus dem Trigger / der RelayTrap wären) gestartet. (Ich hoffe, das ist zumindest ein bisschen verständlich beschrieben)


    Und nach einem weiteren Test, bei der ich die Reihenfolge der Links zwischen Button, AlarmLight und Destroytrap variiert habe, zeigt sich eindeutig, dass egal mit welcher Reihenfolge die Links erzeugt wurden (und somit auch egal mit welchen IDs sie versehen wurden), immer alle Links ausgeführt werden, auch wenn dabei das auslösende Objekt zerstört wird.


    Ihr könnt es ja selbst ausprobieren: Einfach ein MechBlueAlarm, einen Button und eine Destroytrap erstellen und die Reihenfolge der Links unten variieren:


    Diese Reihenfolge hier müsste, wenn man davon ausgeht, dass die Links in der Reihenfolge ihrer Erstellung abgearbeitet würden, eigentlich den Button zerstören, bevor dieser das Alarmlight einschalten kann:


    Button -> DestroyTrap
    DestroyTrap -> Button
    Button -> MechBlueAlarm


    Wie aber ein einfacher Testlauf in Dromed zeigt, ist dies nicht der Fall.

  • Das ist in der Tat interessant SinisterShadow. Leider steht in seinem Paper nur, dass die Links einfach nach ID abgearbeitet werden und über die ID referenziert werden (was ja logisch ist).


    Ich hab dein Beispiel mit dem Button und dem Licht mal getestet und es geht wirklich. Meine Vermutung liegt hierbei, dass es nicht wirklich etwas damit zu tun hat, wie die Elemente organisiert werden, sondern dass sämtliche Links eines Objektes, das eine Kill-Message erhalten hat noch abgearbeitet werden.
    Ist allerdings nur eine Vermutung. Wer mehr weiß: her damit :D


    Leider ist in den Papers zum Objekt-System der DarkEngine die ich besitze nicht erwähnt, was mit Objekten passiert die zerstört werden, besser gesagt, was mit deren Links passiert.


    Um aber zum eigentlichen Thema zurückzukommen:
    Ist es nun eine eher zufällige (möglicherweise falsche) Beobachtung meinerseits, dass die DarkEngine eine Mission beendet, wenn zu einem Zeitpunkt X alle Ziele erfüllt sind, aber noch >= 1 unsichtbares Ziel existieren?


    Falls diese Beobachtung stimmen sollte, dann hilft aus meiner Sicht nur die Reihenfolge wie die Ziele auf "erfüllt" bzw. "sichtbar" gesetzt werden zu ändern.

  • In diesem Falle dürfte das stimmen.


    Um ganz sicher zu gehen kann man auch eine RelayTrap zwischen Auslöser des Abhakens und setzen der QuestVarTrap für das erfüllte Ziel hängen, wärend man den QuestVarTrap zum Aufdecken der anderen Missionsziele direkt verlinkt.

  • Zitat

    Original von intruder
    Ist es nun eine eher zufällige (möglicherweise falsche) Beobachtung meinerseits, dass die DarkEngine eine Mission beendet, wenn zu einem Zeitpunkt X alle Ziele erfüllt sind, aber noch >= 1 unsichtbares Ziel existieren?
    Falls diese Beobachtung stimmen sollte, dann hilft aus meiner Sicht nur die Reihenfolge wie die Ziele auf "erfüllt" bzw. "sichtbar" gesetzt werden zu ändern.


    Genau das hat auch geholfen, die Mission läuft nun korrekt weiter.
    DANKE :)
    Die Sache war schon verwirrend, weil der Abbruch eingeleitet wurde und die neuen Ziele (da bis zum Abbruch ja 1-2 Sekunden vergehen) danach noch als sichtbar eingeblendet werden konnten.


    Aber als ob das nicht genug war: Mein Zielraum löst nicht das Ende aus und ich weiß nicht, weshalb. Ich habe es jeweils mit WelcomeRoom oder TrigRoomPlayer versucht, aber nix rührt sich.
    Ich habe allerdings einen merkwürdigen Eintrag in den Mission Quest-Tabelle, der sich sich nicht entfernen läßt - ob es daran liegt?

    Und so sei der Hammer ewiges Symbol unseres Aufstiegs aus dem Schatten des Schwindlers.

  • Normalerweise kann man die Einträge ja löschen, z.B.
    quest_delete goal_state_7


    Aber das hast du ja schon versucht.


    Irgendwie wurde da als Quest-Variablenname ein leerer String angelegt, probier doch einfach mal die 3 Varianten:


    quest_delete+Leerzeichen und dann Enter drücken
    quest_delete \n
    quest_delete \0


    Ich weiß allerdings nicht, ob das was hilft.

  • ... auch mit quest_delete "" tut sich nix. Mit dem Hex-Editor mag ich auch nicht 'rangehen.


    Ich weiß aber auch nicht, ob das der Grund für die Probleme ist.

    Und so sei der Hammer ewiges Symbol unseres Aufstiegs aus dem Schatten des Schwindlers.