Ergebnis 1 bis 18 von 18

Thema: [2k3] Probleme mit einem Laufevent

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von BDraw Beitrag anzeigen
    Alternative, aber etwas (für Maker-Verhältnisse) unschöne Idee: Du bindest die Events anstatt sie auf "On Touch" zu stellen direkt in das Rennscript ein, bspw. indem du abfragst, ob der Held sich am auf einem Event befindet und, falls ja, dieses per Call Event aufrufst. Um keine "ungewollten" Events dabei zu aktivieren könntest du entweder mit einer Art Liste an zulässigen Event-IDs arbeiten oder allen Events eine zweite Seite zuweisen, wobei die erste dann speziell für Aufrufe durch das Renn-Event gedacht ist.
    Da ein sehr großes und komplexes (zumindest vom Story- und Questumfang her) Spiel geplant ist denke ich nicht dass ich dieses Problem so lösen kann/will, da dies mit zu viel Aufwand verbunden ist (und darüber hinaus das Ganze sehr kompliziert und fehleranfällig ist). Jeder Teleport und jedes noch so kleine atmosphärische Detail wird per "Player Touch" getriggert (z. B. Raben die krächzen wenn man vorbeit geht etc,). Es sei denn ich verstehe das Ganze falsch, dann korrigiere mich bitte!

    Zitat Zitat von Ghabry Beitrag anzeigen
    EDIT:
    Achja klar, der Trick ist natürlich ein Event z.B. oben links in die Map-Ecke zu legen und von diesem ScreenX/Y abzufragen (funktioniert in den Mapecken dann teilweise nicht zuverlässig, weil die Map nicht mehr scrollt wenn du dich bewegst, da müsste man dann Player ScreenX/Y stattdessen abfragen), dadurch kann man dann mittels Screen-Scrolling ermitteln, ob gerade eine Bewegung stattfindet und ob diese bald auf einem Tile endet. Ein Screen-Tile entspricht 256 wenn ich mich recht entsinne.
    Ich glaube ich verstehe nicht ganz was du meinst (bzw. verstehe ich schon was du meinst, jedoch nicht wie sich das umsetzen ließe).
    Brei hat schon vorgeschlagen den "Player Touch" Trigger durch einen Paralell Process, der die Helden X/Y Koord und die Event Koord abfragt zu tauschen, jedoch ist dies ein doch etwas komplizierter und aufwändiger Weg (im Gegensatz zum Standard "Player Touch" Trigger), also muss ich mir noch gut überlegen ob ich das wirklich so mache. Wenn ich deinen Vorschlag richtig verstehe wäre das scheinbar mit noch viel mehr Arbeit verbunden. Aber kläre mich bitte auf wenn du kannst, ich hab wie gesagt gerade keine Idee im Kopf wie du das umsetzen willst.

    Zitat Zitat von Brei Beitrag anzeigen
    Thread dazu: https://www.multimediaxis.de/threads...ionsf%C3%A4hig
    Ich entnehme daraus:
    Technische Folgen: Wenn du den Patch anwendest würde die Game Engine auf Version 1.08 zurück gehen. (wahrscheinlich wenig relevant für dich)
    Rechtlich Folgen: unklar
    Das entwickelt sich zu einem viel größerem Problem als es eigentlich sein sollte meiner Meinung nach, aber vielleicht setze ich mich wirklich mal mit einem Entwickler oder Beauftragten von Enterbrain in Verbindung und frag da mal genau nach.
    Ich habe jedenfalls nicht vor das Spiel kommerziell zu verbreiten, das würde die rechtlichen Folgen doch schon mal um einiges schmälern (hoffe ich mal )

  2. #2
    Okay das ist jetzt bisschen tricky.
    Also du brauchst auf jeder Map, wo rennen gehen soll, irgendein Paralleles event mit folgendem Code:

    Code:
    @> Control Variables: [0002:Bezug X] = [Bezugspunkt]'s Screen X
    @> Control Variables: [0002:Bezug X] %= 16 
    @> Control Variables: [0002:Bezug X] -= 8 
    @> Control Variables: [0003:Bezug Y] = [Bezugspunkt]'s Screen Y
    @> Control Variables: [0003:Bezug Y] %= 16
    X bzw. Y sind null wenn der Spieler nicht läuft.
    AUSNAHME: Wenn der Spieler in einer der vier Bildschirmecken ist, dann scrollt gar nichts und das funktioniert nicht. (hab ich nicht eingebaut)
    Für den Fall müsstest du die Spielerkoordinaten abfragen, weil sich in den Ecken nicht der Bildschirm bewegt, sondern nur der Spieler.

    Dann Common Event 1 (Rennen durch gedrückt halten hab ich umgesetzt)

    Code:
    @> Conditional Branch: Switch [0001:Wait for speed updat] is ON
      @> End Event Processing
      @>
     : Branch End
    @> Key Input Processing: [0001]
    @> Conditional Branch: Variable [0001] == 7
      @> Conditional Branch: Switch [0002:Schnell] is ON
        @>
       : Else
        @> Control Switches: [0002:Schnell] = ON
        @> Control Switches: [0001:Wait for speed updat] = ON
        @>
       : Branch End
      @>
     : Else
      @> Conditional Branch: Switch [0002:Schnell] is ON
        @> Control Switches: [0001:Wait for speed updat] = ON
        @> Control Switches: [0002:Schnell] = OFF
        @>
       : Branch End
      @>
     : Branch End
    Common Event 2 (Parallel, Switch 1 ist AN)

    Das Event loopt, bis X und Y 0 sind (= Spieler bewegt sich nicht) und dann wartet es 2 Frames, dies ist genug, um Touch events zu triggern und dann wird die move route gesetzt.

    Code:
    @> Loop
      @> Conditional Branch: Variable [0002:Bezug X] == 0
        @> Conditional Branch: Variable [0003:Bezug Y] == 0
          @> Wait: 0.0 seconds
          @> Conditional Branch: Variable [0002:Bezug X] == 0
            @> Conditional Branch: Variable [0003:Bezug Y] == 0
              @> Wait: 0.0 seconds
              @> Break Loop
              @>
             : Branch End
            @>
           : Branch End
          @>
         : Branch End
        @>
       : Branch End
      @> Wait: 0.0 seconds
      @>
     : Repeat Above
      @> Set Move Route: Player, Speed Up, Speed Up
      @>
     : Else
      @> Set Move Route: Player, Speed Down, Speed Down
      @>
     : Branch End
    @> Control Switches: [0001:Wait for speed updat] = OFF

  3. #3
    Mal eine ganz simple Lösung: Laufgeschwindigkeit hochsetzen und das ganze Zeug mit Tastendruck weglassen.
    Wenn es eine Möglichkeit gibt, schneller zu laufen, werden die ohnehin 90% der Spieler permanent nutzen.

  4. #4
    @Ghabry
    Danke dir für die Mühe! Ich weiß zwar wie man die Player Koord speichert, jedoch habe ich keine Ahnung wie man die Screen Koord in Variablen speichert ^^
    Aber so wie es aussieht könnte das tatsächlich klappen, ich versuchs sobald ich das herausgefunden hab

    Zitat Zitat von Liferipper Beitrag anzeigen
    Mal eine ganz simple Lösung: Laufgeschwindigkeit hochsetzen und das ganze Zeug mit Tastendruck weglassen.
    Wenn es eine Möglichkeit gibt, schneller zu laufen, werden die ohnehin 90% der Spieler permanent nutzen.
    Ich weiß nicht ob du mich einfach ärgern willst oder einfach nicht ganz verstanden hast worum es in diesem Thread geht. Ich sag nur ein Wort: Immersion.

  5. #5
    Vielleicht noch eine andere Idee, um die Ebene umzuschalten:
    Setze die Events, die den Hügel umschalten sollen auf "same level". Sobald der switch aktiviert wurde, können sie auf "below" umschalten.
    Hab das grad mal getestet und müsste eigentlich noch flüssig laufen, der Spieler wird also nicht kurz blockiert oder dergleichen, muss aber auf jeden Fall den Switch auslösen, um da durch zu kommen.

    Davon abgesehen muss ich Liferipper ein wenig Recht geben. Ich will dir da nicht reinreden, aber in so gut wie allen Spielen, wo man "gehen" kann benutze ich das nicht und sehe mich schnellstmöglichst nach eine Option um, wie ich das permanent umstellen kann. Spiele, die mich zum drücken einer Taste zum Rennen nötigen, sind da natürlich die schlimmsten. Und auch wenn man sich dran gewöhnt, finde ich es unnötig.
    Aber mach es wie du denkst, wenn du es für deine Immersion für nötig empfindest. Ich weiß ja auch gar nicht, was es für ein Spiel wird.

    Das mit dem Picture wurde auch noch nicht geklärt oder?
    Ich bin nicht sicher, ob du das gelesen hast, was Brei geschrieben hat. Aber genau so würde ichs auch machen.
    Könnte grob so aussehen:
    Code:
    @> Control Variables: [1319:Hero  X] = Player's X Coordinate
    @> Control Variables: [1319:Hero X] -= Variable [1317]
    @> Conditional Branch: Variable [1319:Hero  X] < 0
      @> Control Variables: [1319:Hero X] *= -1 
      @>
     : Branch End
    
    - Bis hier hin ermittelst du quasi den Abstand des Helden zur Statue
    
    @> Conditional Branch: Variable [1319:Hero  X] < 10
      @> Control Variables: [1319:Hero  X] *= 10 
    
    - Ist der Abstand kleiner als 10 tiles, wird die Variable mit 10 multipliziert 
    und ist damit gleichzeitig deine Transparenzvariable
    - bei 9 tiles Abstand wäre die Transparenz dann also 90%
    
      @>
     : Branch End
    @> Move Picture: 1, (160,120), 100%, V[1319]%, @0.3s, Wait
    
    - dann vlt noch ein Move Picture Befehl, um das etwas smooth aussehen zu lassen

    Geändert von IndependentArt (14.02.2019 um 23:40 Uhr)

  6. #6
    Also ich finde den Einwand von Liferipper eigentlich auch gerechtfertigt.

    Bin ja einer der EasyRPG Entwickler (Also dieser 2k/2k3-Engine-Nachbau) und viele sind uns einfach nur dankbar dafür, dass wir eine "Fast Forward"-Funktion (Taste F) eingebaut haben, die das komplette Spiel um Faktor 3 beschleunigt. Insbesondere in Spielen mit viel Backtracking.

    Also ja, wenn es eine Schneller-Taste gibt, werden viele sie wohl regelmäßig verwenden (außer wenn die Umstände erfordern, dass man präzisier laufen muss).

    Ich bin da keine Ausnahme, viele Konsolenspiele kann ich nur noch im Emulator spielen, weil vor allem die Kampfsystem so unglaublich langsam laufen. Wenn man Arbeiten muss hat man halt nur noch ein geringes Kontingent für derartige Freizeitaktivitäten, daher ist dies halt einfach eine Optimierung, um in kürzerer Zeit mehr Spaß zu haben und diese nicht durch warten zu verschwenden.

    Geändert von Ghabry (15.02.2019 um 13:16 Uhr)

  7. #7
    Zum Thema "Laufen komplett aus dem Spiel nehmen":
    Mir ist sehr wohl bewusst, dass die Möglichkeit besteht den Code komplett aus dem Spiel zu nehmen. Mir ist auch sehr wohl bewusst, dass dies natürlich die einfachste Variante wäre. Jedoch muss euch bewusst werden dass ich dieses Feature nur sehr ungern ausbaue, sonst hätte ich den Thread kaum eröffnet. Ich habe mir schon auch einige Gedanken vorm Einbauen gemacht und bin auf die selben Zweifel gestoßen, schließlich bin ich selbst ein leidenschaftlicher Konsolen- und PC-Spieler. Nun bin ich aber zu dem Entschluss gekommen das Laufscript im Spiel zu lassen und spätere Tester bestimmen zu lassen, ob das Feature als nervig erachtet wird oder nicht. Wie IndependentArt so schön angemerkt hat, weiß niemand wie das Spiel aussehen wird (bis auf einen kleinen Screen) und wie es sich spielt.
    Und jemand, der das Spiel sowieso nur "Fast-Forwarden" würde, würde ohnehin keinen Spaß daran haben, Fast-Forward oder nicht (Versteh mich nicht falsch Ghabry, ich selbst benutze die Speed Taste oft in Emulatoren o. ä., nur passt das nicht zu meinem Spiel das u. a. von Details und Environmental Storytelling lebt).

    Zitat Zitat von IndependentArt Beitrag anzeigen
    Vielleicht noch eine andere Idee, um die Ebene umzuschalten:
    Setze die Events, die den Hügel umschalten sollen auf "same level". Sobald der switch aktiviert wurde, können sie auf "below" umschalten.
    Hab das grad mal getestet und müsste eigentlich noch flüssig laufen, der Spieler wird also nicht kurz blockiert oder dergleichen, muss aber auf jeden Fall den Switch auslösen, um da durch zu kommen.
    Hmm. Das könnte tatsächlich funktionieren, das werd ich gleich mal ausprobieren!

    Zitat Zitat von IndependentArt Beitrag anzeigen
    Das mit dem Picture wurde auch noch nicht geklärt oder?
    Ich bin nicht sicher, ob du das gelesen hast, was Brei geschrieben hat. Aber genau so würde ichs auch machen.
    Könnte grob so aussehen:
    Oh ja, Danke dir für die Mühe! Das ist ungeachtet dessen, ob das Laufscript funktioniert oder nicht, ohnehin die bessere Methode meines Erachtens nach. Werd ich gleich einbauen!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •