Framerate issues with Arcade












0














So I'm making a platformer 2D game with Arcade, and for some reason, my game always goes ~30 FPS instead of going 60 FPS.



Not only that, when I press the left arrow key to move my character to the left, it goes down to ~4 FPS.



Code for my movement system (I had to make a camera)



def update(self, x):
# update player
if self.player != None:
self.player.real_x += self.player.movement
self.player.center_y -= gravityConstant


I use 'real_x' variable instead of using 'center_x' because of the camera.
Ignore the fact that the gravity doens't acelerate and always make the character fall at a constant speed (will fix that).



The player will always be in the center of the screen:



    self.player.center_x = self.x / 2;


At first I thought it was that the movement of the Sprite caused lag, but when I added gravity, I noticed that the problem is only with the X axis movement. When the character falls due to gravity, it runs at 30 FPS, but when it is moving in any direction that isn't Y (X, -X) it will slow down the game to ~4 FPS.



My computer is pretty bad though, but I don't think it's the responsable for this framerate issues.



Specs:
Processor: 1.58 GHz
RAM: 3.99 / 4.00 GB



EDIT:
This happens with both left and right movements. The movement is handled through a arcade.Window class.



Code of the functions:



def onKeyDown(self, symbol):
if symbol == arcade.key.LEFT:
self.movement = -self.walk_speed;
elif symbol == arcade.key.RIGHT:
self.movement = self.walk_speed;
elif symbol == arcade.key.UP:
self.jumping = True;

def onKeyUp(self, symbol):
if symbol == arcade.key.LEFT:
self.movement = 0;
elif symbol == arcade.key.RIGHT:
self.movement = 0;
elif symbol == arcade.key.UP:
self.jumping = False;


Code of the on_key_press and on_key_release:



def on_key_press(self, symbol, modifier):
if self.player != None:
self.player.onKeyDown(symbol);

def on_key_release(self, symbol, modifier):
if self.player != None:
self.player.onKeyUp(symbol);


Note: This works with Classes, so these functions are inside a Player Class.










share|improve this question





























    0














    So I'm making a platformer 2D game with Arcade, and for some reason, my game always goes ~30 FPS instead of going 60 FPS.



    Not only that, when I press the left arrow key to move my character to the left, it goes down to ~4 FPS.



    Code for my movement system (I had to make a camera)



    def update(self, x):
    # update player
    if self.player != None:
    self.player.real_x += self.player.movement
    self.player.center_y -= gravityConstant


    I use 'real_x' variable instead of using 'center_x' because of the camera.
    Ignore the fact that the gravity doens't acelerate and always make the character fall at a constant speed (will fix that).



    The player will always be in the center of the screen:



        self.player.center_x = self.x / 2;


    At first I thought it was that the movement of the Sprite caused lag, but when I added gravity, I noticed that the problem is only with the X axis movement. When the character falls due to gravity, it runs at 30 FPS, but when it is moving in any direction that isn't Y (X, -X) it will slow down the game to ~4 FPS.



    My computer is pretty bad though, but I don't think it's the responsable for this framerate issues.



    Specs:
    Processor: 1.58 GHz
    RAM: 3.99 / 4.00 GB



    EDIT:
    This happens with both left and right movements. The movement is handled through a arcade.Window class.



    Code of the functions:



    def onKeyDown(self, symbol):
    if symbol == arcade.key.LEFT:
    self.movement = -self.walk_speed;
    elif symbol == arcade.key.RIGHT:
    self.movement = self.walk_speed;
    elif symbol == arcade.key.UP:
    self.jumping = True;

    def onKeyUp(self, symbol):
    if symbol == arcade.key.LEFT:
    self.movement = 0;
    elif symbol == arcade.key.RIGHT:
    self.movement = 0;
    elif symbol == arcade.key.UP:
    self.jumping = False;


    Code of the on_key_press and on_key_release:



    def on_key_press(self, symbol, modifier):
    if self.player != None:
    self.player.onKeyDown(symbol);

    def on_key_release(self, symbol, modifier):
    if self.player != None:
    self.player.onKeyUp(symbol);


    Note: This works with Classes, so these functions are inside a Player Class.










    share|improve this question



























      0












      0








      0







      So I'm making a platformer 2D game with Arcade, and for some reason, my game always goes ~30 FPS instead of going 60 FPS.



      Not only that, when I press the left arrow key to move my character to the left, it goes down to ~4 FPS.



      Code for my movement system (I had to make a camera)



      def update(self, x):
      # update player
      if self.player != None:
      self.player.real_x += self.player.movement
      self.player.center_y -= gravityConstant


      I use 'real_x' variable instead of using 'center_x' because of the camera.
      Ignore the fact that the gravity doens't acelerate and always make the character fall at a constant speed (will fix that).



      The player will always be in the center of the screen:



          self.player.center_x = self.x / 2;


      At first I thought it was that the movement of the Sprite caused lag, but when I added gravity, I noticed that the problem is only with the X axis movement. When the character falls due to gravity, it runs at 30 FPS, but when it is moving in any direction that isn't Y (X, -X) it will slow down the game to ~4 FPS.



      My computer is pretty bad though, but I don't think it's the responsable for this framerate issues.



      Specs:
      Processor: 1.58 GHz
      RAM: 3.99 / 4.00 GB



      EDIT:
      This happens with both left and right movements. The movement is handled through a arcade.Window class.



      Code of the functions:



      def onKeyDown(self, symbol):
      if symbol == arcade.key.LEFT:
      self.movement = -self.walk_speed;
      elif symbol == arcade.key.RIGHT:
      self.movement = self.walk_speed;
      elif symbol == arcade.key.UP:
      self.jumping = True;

      def onKeyUp(self, symbol):
      if symbol == arcade.key.LEFT:
      self.movement = 0;
      elif symbol == arcade.key.RIGHT:
      self.movement = 0;
      elif symbol == arcade.key.UP:
      self.jumping = False;


      Code of the on_key_press and on_key_release:



      def on_key_press(self, symbol, modifier):
      if self.player != None:
      self.player.onKeyDown(symbol);

      def on_key_release(self, symbol, modifier):
      if self.player != None:
      self.player.onKeyUp(symbol);


      Note: This works with Classes, so these functions are inside a Player Class.










      share|improve this question















      So I'm making a platformer 2D game with Arcade, and for some reason, my game always goes ~30 FPS instead of going 60 FPS.



      Not only that, when I press the left arrow key to move my character to the left, it goes down to ~4 FPS.



      Code for my movement system (I had to make a camera)



      def update(self, x):
      # update player
      if self.player != None:
      self.player.real_x += self.player.movement
      self.player.center_y -= gravityConstant


      I use 'real_x' variable instead of using 'center_x' because of the camera.
      Ignore the fact that the gravity doens't acelerate and always make the character fall at a constant speed (will fix that).



      The player will always be in the center of the screen:



          self.player.center_x = self.x / 2;


      At first I thought it was that the movement of the Sprite caused lag, but when I added gravity, I noticed that the problem is only with the X axis movement. When the character falls due to gravity, it runs at 30 FPS, but when it is moving in any direction that isn't Y (X, -X) it will slow down the game to ~4 FPS.



      My computer is pretty bad though, but I don't think it's the responsable for this framerate issues.



      Specs:
      Processor: 1.58 GHz
      RAM: 3.99 / 4.00 GB



      EDIT:
      This happens with both left and right movements. The movement is handled through a arcade.Window class.



      Code of the functions:



      def onKeyDown(self, symbol):
      if symbol == arcade.key.LEFT:
      self.movement = -self.walk_speed;
      elif symbol == arcade.key.RIGHT:
      self.movement = self.walk_speed;
      elif symbol == arcade.key.UP:
      self.jumping = True;

      def onKeyUp(self, symbol):
      if symbol == arcade.key.LEFT:
      self.movement = 0;
      elif symbol == arcade.key.RIGHT:
      self.movement = 0;
      elif symbol == arcade.key.UP:
      self.jumping = False;


      Code of the on_key_press and on_key_release:



      def on_key_press(self, symbol, modifier):
      if self.player != None:
      self.player.onKeyDown(symbol);

      def on_key_release(self, symbol, modifier):
      if self.player != None:
      self.player.onKeyUp(symbol);


      Note: This works with Classes, so these functions are inside a Player Class.







      python python-3.x






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 11 at 3:04

























      asked Nov 11 at 2:11









      VetraDebesis

      798




      798
























          1 Answer
          1






          active

          oldest

          votes


















          0














          Do you mind putting the part of the code responsible for the movements?



          also, check where you put things on screen, you want to make a variable, set it to the image, and call that var. as for it only happening when moving left , make sure the left script is the same as right but - instead of +.






          share|improve this answer





















          • It doens't only happen to the left movement, it also happens to the right movement. Code of the movement: def onKeyDown(self, symbol): if symbol == arcade.key.LEFT: self.movement = -self.walk_speed; elif symbol == arcade.key.RIGHT: self.movement = self.walk_speed; def onKeyUp(self, symbol): if symbol == arcade.key.LEFT: self.movement = 0; elif symbol == arcade.key.RIGHT: self.movement = 0; elif symbol == arcade.key.UP: self.jumping = False; And this is handled by the Game class, with on_key_press, and on_key_release.
            – VetraDebesis
            Nov 11 at 2:52












          • for your gravity, check the code. also, it may be the library you use, i recomend the "Keyboard" Library, or the one in pygame. your movement should be handled the same, whether it be y or x. make the X code the y code but with if its button is pushed down.
            – idk
            Nov 18 at 1:14












          • also, when you move the char, dont wait to upddate the character to move it. just move it then.
            – idk
            Nov 18 at 1:17











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53245257%2fframerate-issues-with-arcade%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          Do you mind putting the part of the code responsible for the movements?



          also, check where you put things on screen, you want to make a variable, set it to the image, and call that var. as for it only happening when moving left , make sure the left script is the same as right but - instead of +.






          share|improve this answer





















          • It doens't only happen to the left movement, it also happens to the right movement. Code of the movement: def onKeyDown(self, symbol): if symbol == arcade.key.LEFT: self.movement = -self.walk_speed; elif symbol == arcade.key.RIGHT: self.movement = self.walk_speed; def onKeyUp(self, symbol): if symbol == arcade.key.LEFT: self.movement = 0; elif symbol == arcade.key.RIGHT: self.movement = 0; elif symbol == arcade.key.UP: self.jumping = False; And this is handled by the Game class, with on_key_press, and on_key_release.
            – VetraDebesis
            Nov 11 at 2:52












          • for your gravity, check the code. also, it may be the library you use, i recomend the "Keyboard" Library, or the one in pygame. your movement should be handled the same, whether it be y or x. make the X code the y code but with if its button is pushed down.
            – idk
            Nov 18 at 1:14












          • also, when you move the char, dont wait to upddate the character to move it. just move it then.
            – idk
            Nov 18 at 1:17
















          0














          Do you mind putting the part of the code responsible for the movements?



          also, check where you put things on screen, you want to make a variable, set it to the image, and call that var. as for it only happening when moving left , make sure the left script is the same as right but - instead of +.






          share|improve this answer





















          • It doens't only happen to the left movement, it also happens to the right movement. Code of the movement: def onKeyDown(self, symbol): if symbol == arcade.key.LEFT: self.movement = -self.walk_speed; elif symbol == arcade.key.RIGHT: self.movement = self.walk_speed; def onKeyUp(self, symbol): if symbol == arcade.key.LEFT: self.movement = 0; elif symbol == arcade.key.RIGHT: self.movement = 0; elif symbol == arcade.key.UP: self.jumping = False; And this is handled by the Game class, with on_key_press, and on_key_release.
            – VetraDebesis
            Nov 11 at 2:52












          • for your gravity, check the code. also, it may be the library you use, i recomend the "Keyboard" Library, or the one in pygame. your movement should be handled the same, whether it be y or x. make the X code the y code but with if its button is pushed down.
            – idk
            Nov 18 at 1:14












          • also, when you move the char, dont wait to upddate the character to move it. just move it then.
            – idk
            Nov 18 at 1:17














          0












          0








          0






          Do you mind putting the part of the code responsible for the movements?



          also, check where you put things on screen, you want to make a variable, set it to the image, and call that var. as for it only happening when moving left , make sure the left script is the same as right but - instead of +.






          share|improve this answer












          Do you mind putting the part of the code responsible for the movements?



          also, check where you put things on screen, you want to make a variable, set it to the image, and call that var. as for it only happening when moving left , make sure the left script is the same as right but - instead of +.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 11 at 2:37









          idk

          155




          155












          • It doens't only happen to the left movement, it also happens to the right movement. Code of the movement: def onKeyDown(self, symbol): if symbol == arcade.key.LEFT: self.movement = -self.walk_speed; elif symbol == arcade.key.RIGHT: self.movement = self.walk_speed; def onKeyUp(self, symbol): if symbol == arcade.key.LEFT: self.movement = 0; elif symbol == arcade.key.RIGHT: self.movement = 0; elif symbol == arcade.key.UP: self.jumping = False; And this is handled by the Game class, with on_key_press, and on_key_release.
            – VetraDebesis
            Nov 11 at 2:52












          • for your gravity, check the code. also, it may be the library you use, i recomend the "Keyboard" Library, or the one in pygame. your movement should be handled the same, whether it be y or x. make the X code the y code but with if its button is pushed down.
            – idk
            Nov 18 at 1:14












          • also, when you move the char, dont wait to upddate the character to move it. just move it then.
            – idk
            Nov 18 at 1:17


















          • It doens't only happen to the left movement, it also happens to the right movement. Code of the movement: def onKeyDown(self, symbol): if symbol == arcade.key.LEFT: self.movement = -self.walk_speed; elif symbol == arcade.key.RIGHT: self.movement = self.walk_speed; def onKeyUp(self, symbol): if symbol == arcade.key.LEFT: self.movement = 0; elif symbol == arcade.key.RIGHT: self.movement = 0; elif symbol == arcade.key.UP: self.jumping = False; And this is handled by the Game class, with on_key_press, and on_key_release.
            – VetraDebesis
            Nov 11 at 2:52












          • for your gravity, check the code. also, it may be the library you use, i recomend the "Keyboard" Library, or the one in pygame. your movement should be handled the same, whether it be y or x. make the X code the y code but with if its button is pushed down.
            – idk
            Nov 18 at 1:14












          • also, when you move the char, dont wait to upddate the character to move it. just move it then.
            – idk
            Nov 18 at 1:17
















          It doens't only happen to the left movement, it also happens to the right movement. Code of the movement: def onKeyDown(self, symbol): if symbol == arcade.key.LEFT: self.movement = -self.walk_speed; elif symbol == arcade.key.RIGHT: self.movement = self.walk_speed; def onKeyUp(self, symbol): if symbol == arcade.key.LEFT: self.movement = 0; elif symbol == arcade.key.RIGHT: self.movement = 0; elif symbol == arcade.key.UP: self.jumping = False; And this is handled by the Game class, with on_key_press, and on_key_release.
          – VetraDebesis
          Nov 11 at 2:52






          It doens't only happen to the left movement, it also happens to the right movement. Code of the movement: def onKeyDown(self, symbol): if symbol == arcade.key.LEFT: self.movement = -self.walk_speed; elif symbol == arcade.key.RIGHT: self.movement = self.walk_speed; def onKeyUp(self, symbol): if symbol == arcade.key.LEFT: self.movement = 0; elif symbol == arcade.key.RIGHT: self.movement = 0; elif symbol == arcade.key.UP: self.jumping = False; And this is handled by the Game class, with on_key_press, and on_key_release.
          – VetraDebesis
          Nov 11 at 2:52














          for your gravity, check the code. also, it may be the library you use, i recomend the "Keyboard" Library, or the one in pygame. your movement should be handled the same, whether it be y or x. make the X code the y code but with if its button is pushed down.
          – idk
          Nov 18 at 1:14






          for your gravity, check the code. also, it may be the library you use, i recomend the "Keyboard" Library, or the one in pygame. your movement should be handled the same, whether it be y or x. make the X code the y code but with if its button is pushed down.
          – idk
          Nov 18 at 1:14














          also, when you move the char, dont wait to upddate the character to move it. just move it then.
          – idk
          Nov 18 at 1:17




          also, when you move the char, dont wait to upddate the character to move it. just move it then.
          – idk
          Nov 18 at 1:17


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53245257%2fframerate-issues-with-arcade%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          Xamarin.form Move up view when keyboard appear

          Post-Redirect-Get with Spring WebFlux and Thymeleaf

          Anylogic : not able to use stopDelay()