Animationsproblem mit JGame

    • Gelöst
    • Animationsproblem mit JGame

      EDIT: Mal anders formuliert: hat hier vlt. irgendjemand etwas Erfahrung mit dieser Engine? Bereits alleine damit wäre mir geholfen, denn die Animationen sind bei weitem nicht mein einziges Problem.
      ---

      Da ich vorhabe in Java ein kleines RPG zu programmieren, habe ich mir eine 2D-Spielengine gesucht - und gefunden. Meine Wahl viel auf JGame welche trotz mittelmäßiger Dokumentation (Codestellen in den Tutorials teilweise schon veraltet) von den bisher von mir entdeckten Engines am besten dokumentiert war.

      Ich brauchte zuerst Stunden, nur um ein kleines Sprite mit den Pfeiltasten in dem Programmenster herumbewegen zu können. Um Grafiken, Sounds und Animationen einfacher zu laden, verwendet JGame sogenannte Table-Files.
      Ich wollte eine Geh-Animation erstellen und hab mir die Definitionen für eine Animation aus den JGame-Tutorials auf der Homepage kopiert und an meine Bedürfnisse angepasst. Nur lassen sich jetzt die Animationen nicht abspielen, es wird immer nur das erste Bild der Animation angezeigt. Ich kämpfe schon seit Stunden damit, und langsam vergeht mir dir Lust daran ...
      Stellt sich die Frage ob es letztendlich nicht einfacher wäre, alles selbst zu programmieren ... :rolleyes:

      Kennt sich zufällig jemand mit JGame aus und kann mir bei meinem Problem helfen?
      Das hier ist meine Table-Datei:

      Quellcode

      1. // Define animation sprite sheet.
      2. // The first numbers (0,0) are the topleft coordinates of the sprites.
      3. // The next numbers (16,16) is the size of one sprite.
      4. // The last numbers (0,0) is the number of pixels to skip between sprites.
      5. chrono_front_sheet ../sprites/chrono_front.gif 0 0 20 36 0 0
      6. chrono_back_sheet ../sprites/chrono_back.gif 0 0 21 36 0 0
      7. chrono_side_sheet ../sprites/chrono_side.gif 0 0 22 36 0 0
      8. // Get the sprites from the sprite sheet
      9. // CHRONO FRONT SPRITES
      10. chrono_anim_front01 - 0 chrono_front_sheet 0 -
      11. chrono_anim_front02 - 0 chrono_front_sheet 1 -
      12. chrono_anim_front03 - 0 chrono_front_sheet 2 -
      13. chrono_anim_front04 - 0 chrono_front_sheet 3 -
      14. chrono_anim_front05 - 0 chrono_front_sheet 4 -
      15. chrono_anim_front06 - 0 chrono_front_sheet 5 -
      16. // CHRONO BACK SPRITES
      17. chrono_anim_back01 - 0 chrono_back_sheet 0 -
      18. chrono_anim_back02 - 0 chrono_back_sheet 1 -
      19. chrono_anim_back03 - 0 chrono_back_sheet 2 -
      20. chrono_anim_back04 - 0 chrono_back_sheet 3 -
      21. chrono_anim_back05 - 0 chrono_back_sheet 4 -
      22. chrono_anim_back06 - 0 chrono_back_sheet 5 -
      23. // CHRONO LEFT SPRITES
      24. chrono_anim_left01 - 0 chrono_side_sheet 0 x
      25. chrono_anim_left02 - 0 chrono_side_sheet 1 x
      26. chrono_anim_left03 - 0 chrono_side_sheet 2 x
      27. chrono_anim_left04 - 0 chrono_side_sheet 3 x
      28. chrono_anim_left05 - 0 chrono_side_sheet 4 x
      29. chrono_anim_left06 - 0 chrono_side_sheet 5 x
      30. // CHRONO RIGHT SPRITES
      31. chrono_anim_right01 - 0 chrono_side_sheet 0 -
      32. chrono_anim_right02 - 0 chrono_side_sheet 1 -
      33. chrono_anim_right03 - 0 chrono_side_sheet 2 -
      34. chrono_anim_right04 - 0 chrono_side_sheet 3 -
      35. chrono_anim_right05 - 0 chrono_side_sheet 4 -
      36. chrono_anim_right06 - 0 chrono_side_sheet 5 -
      37. // Define animations from the sprites.
      38. // 1.0 is the animation speed
      39. // the "true" indicates a ping-pong animation
      40. chrono_anim_front chrono_anim_front01;chrono_anim_front02;chrono_anim_front03;chrono_anim_front04;chrono_anim_front05;chrono_anim_front06 0.4
      41. chrono_anim_back chrono_anim_back01;chrono_anim_back02;chrono_anim_back03;chrono_anim_back04;chrono_anim_back05;chrono_anim_back06 0.3
      42. chrono_anim_left chrono_anim_left01;chrono_anim_left02;chrono_anim_left03;chrono_anim_left04;chrono_anim_left05;chrono_anim_left06 0.3
      43. chrono_anim_right chrono_anim_right01;chrono_anim_right02;chrono_anim_right03;chrono_anim_right04;chrono_anim_right05;chrono_anim_right06 0.3
      44. player - 0 ../sprites/player.gif -
      45. // Boden
      46. floor1 - 0 ../sprites/floor1.png -
      47. // Wand
      48. wall1 - 0 ../sprites/wall1.png -
      49. // Items
      50. bett1 - 1 ../sprites/bett.png -
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Christoph ()

    • Ich konnte das Problem jetzt zum Glück selbst lösen (nach zwei vergrübelten Nachmittagen :rolleyes: ).

      Damit die Animationen auch abgespielt werden, ist es erforderlich die Methode doFrame() der Hauptklasse JGEngine zu überschreiben und daraus die Methode moveObjects() aufzurufen. Um zu vermeiden dass die Spielfigur aus dem Spielfeld "getragen" wird, müssen die Variablen xspeed und yspeed des JGObject's der Spielfigur auf 0 gesetzt sein!

      Ferner habe ich endlich herausgefunden wie das Z-Ordering der Spielobjekte funktioniert. Beim Initialisieren eines JGObject muss ein eindeutiger Name an die Instanz vergeben werden. Das Objekt dessen Name alphabetisch am letzten kommt, wird auf der obersten Ebene angzeigt.

      Wenn ich mich einmal besser mit der Engine zurechtgefunden habe, möchte ich gerne ein Tutorial dafür schreiben. JGame bietet relativ viele Möglichkeiten um 2D-Spiele umzusetzen, die Tutorials und Dokumentationen dafür sind hingegen leider ernüchternd. :(

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Christoph ()