Deadzone Types: Square, Circular, Rounded Square

Поділитися
Вставка
  • Опубліковано 17 жов 2024
  • Recorded With Open Broadcast Software(OBS).
    Antimicro's Rstick window and a graph made with Desmos' Graphing Calculator were overlayed to directly show stick input and deadzone characteristics.
    Customizable Graph Overlay: www.desmos.com...
    Antimicro: github.com/Ant...
    Scene is default Unreal Engine 4 fps template. Controller aiming was all that was modified.
    This video showcases the differences between a square, circular and rounded square deadzone types.
    The green regions indicate regions of diagonal movement, and the blue indicate regions of exclusive cardinal movement. There is some issue with overlap in shading with the graph overlay, but any reddish region indicates the deadzone.
    These deadzones are obtained by simple changes in two values, a one for the square deadzone and one for the circular deadzone. Any amount of either deadzone can be set.
    The full range of diagonal movement occurs in the green regions, and the diagonals are perfectly correct with a fully circular deadzone.
    Not shown, but the graph's bulges in the diagonal regions with the square deadzones are due to the acceleration range(from deadzone to outer threshold) being equal everywhere.

КОМЕНТАРІ • 26

  • @AtomicEko
    @AtomicEko 2 роки тому +1

    I have a question. Please answer if you see this and have time:)
    But, I play on ps5, I play a game called rocket league and I basically need the “diagonal restricted circular type of dead zone, about 25* degrees(I have the x axis problem and I need that x axis to be bigger)
    Is there a way that I can download a program(on pc or Mac) set up my perfect controller deadzone and type, Save it to the controller and then play my game on my ps5 with the settings I put?

    • @EternalDahaka
      @EternalDahaka  2 роки тому +1

      Rocket League's deadzone option should control an axial deadzone, so you could raise it to restrict the amount you like. You may have to play at a larger deadzone that preferable though.
      Unfortunately there's not a program I know of to save anything on the controller itself. There might be some programs to do that specifically for the PC version(reWASD and DS4Windows might have that ability), but for consoles you'd need to buy a separate adapter to set up that deadzones yourself, and those are pricey($100+). My TitanTwo script offers the angular restriction method, but that version is heavy on the device's CPU and may be prone to input latency for PlayStation controllers.
      If the game's still being supported you might request adding a radial deadzone and angular restriction as options.

    • @AtomicEko
      @AtomicEko 2 роки тому

      @@EternalDahaka oh ok, thank you so much man. that explains a lot so i really appreciate it!
      looks like ill have to buy a gaming pc now 🙄 😂

  • @JustA6
    @JustA6 Рік тому

    Hi, sorry to bother u for just asking this.
    I have nowhere to go to ask this specific question.
    Do you know which deadzones 3ds game use? especially monster hunter games.
    Sorry for my bad english, pls respond if u still active on youtube.
    Cheers man.

  • @maiqluvsskooma239
    @maiqluvsskooma239 7 років тому +2

    I have a question. I plan to make games using this engine, so when it comes to designing the deadzone, how do you change it's shape?

    • @EternalDahaka
      @EternalDahaka  7 років тому +1

      The difference between square and circular deadzones is simply what the deadzone is based off of.
      For example, a square deadzone is created from the distance from the X or Y axis, and the circular deadzone
      Unreal Engine 4 creates them by axis, so by default it uses a 25% square(like the beginning of this video shows). These default values can be changed in Edit > Project Settings > Input > Axis Config and change the values.
      I don't know if you can change those settings dynamically in a game, but you can set them up manually.
      This is basically how I set it up in this video
      *An "ideal" square deadzone example:*
      deadzone = .25;
      outerDeadzone = 1;
      if (abs(stickX)>deadzone){
      newX = (stickX -deadzone )/(outerDeadzone - deadzone);
      }
      else { newX = 0; }
      if(stickX < 1){
      newX = (-1)newX;
      }
      if (abs(stickY)>deadzone){
      newY = (stickY -deadzone )/(outerDeadzone - deadzone);
      }
      else { newY = 0; }
      if(stickY < 1){
      newY = (-1)newY;
      }
      accelCurve = sqrt( pow(newX, 2) + pow(newY, 2) );
      if(accelCurve > 1){
      accelCurve = 1;
      }
      *An "ideal" circle deadzone example*
      deadzone = .25;
      outerDeadzone = 1;
      magnitude = sqrt( pow(stickX, 2) + pow(stickY, 2) );
      if(magnitude > deadzone){
      accelCurve = (magnitude - deadzone)/(outerDeadzone - deadzone);
      }
      else { accelCurve = 0; }
      if(accelCurve > 1){
      accelCurve = 1;
      }
      There's a few more steps(angle/acceleration degree) and the blueprints I made are a mess, but that's the logic for it.
      The main difference in the methods is the axes/center thing. The acceleration is only slightly different because of that too. Checking if the value is over 1 is important because it makes the outer deadzone the same distance from the deadzone everywhere.
      The "rounded square" is really easy if you know both of those. All you have to do is take the newX and newY values after creating the square deadzone and use them instead of the stickX/Y values with a circular deadzone. Then it just builds the circles shape around the square. It would be important to remove the "outerDeadzone" values in the circle section and change them with 1, otherwise the outer deadzone will be done twice.
      There's also a "bowtie" deadzone, where you can rescale the angles directly, so you have a circular deadzone with missing diagonal movement(mess with the "d" value in the linked graph), but that's a mess to set up. I'll show that at some point if I get the angles scaled properly.
      Good luck with any games you attempt. I would recommend sticking with circular deadzones for almost anything you do though.

    • @maiqluvsskooma239
      @maiqluvsskooma239 7 років тому

      This will be helpful when I finally get to tinkering with the engine. I plan to make FPS and wanted to make aiming as smooth and responsive as possible. I should probably write this down.

    • @LuisgaWTF
      @LuisgaWTF 5 років тому

      @@EternalDahaka Hi! To do the ideal circle, Did accelCurve multiply it to the input? and so I get the new x and the new y?

    • @EternalDahaka
      @EternalDahaka  5 років тому

      @@LuisgaWTF
      Yes, though if you're doing just a circle you don't need the 'new' values.
      I set the angle up inefficiently(I found the angle with Atan2 and used cos(angle) and sin(angle) for the normalized X/Y inputs), but if you set it up as a normalized vector you also just multiply it with the acceleration.
      So my version was basically:
      outputX = cos(angle)*accelCurve*sensitivity;
      outputY = sin(angle)*accelCurve*sensitivity;
      I haven't worked with vectors so I'm not sure if this is correct(I'm not a competent programmer), but I'd imagine it's something like:
      stickVector = stickVector*accelCurve*sensitivity;
      outputX = stickVector.x;
      outputX = stickVector.y;

    • @LuisgaWTF
      @LuisgaWTF 5 років тому

      @@EternalDahaka Hi, thanks for the answer but I still can not remove the deadzones of unreal and put only the circle.
      I'm using the movement component of unreal to create my own. the variables scaleY and scaleX are the input of gamepad.
      I use the forward vector camera to indicate the forward of the player.
      Then I do if I understood correctly what you told me, I multiplied the acceleration with the
      input of gamepad. But I still have the deadzones on the axes...
      I put my code in case you want to see it.
      Thanks for your answer and for your help!!!
      void UTK_MovementComponent::Movement(float scaleY, float scaleX, AActor *camera)
      {
      camera_direction = camera;
      camera_comp = camera_direction->FindComponentByClass();
      forward = camera_comp->GetForwardVector();
      right = camera_comp->GetRightVector();
      //deadzones
      magnitude = sqrt(pow(scaleX, 2) + pow(scaleY, 2));
      if (magnitude > deadzone)
      {
      accelCurve = (magnitude - deadzone) / (outerDeadzone - deadzone);
      }
      else
      {
      accelCurve = 0;
      }
      if (accelCurve > 1)
      {
      accelCurve = 1;
      }
      stickY = scaleY * accelCurve;
      stickX = scaleX * accelCurve;
      //forward.get
      if (stickY != 0.0f)
      {
      self->AddMovementInput(forward, stickY, false);
      }
      if (stickX != 0.0f)
      {
      self->AddMovementInput(right, stickX, false);
      }
      }

  • @Treblaine
    @Treblaine 2 роки тому +2

    Xbox: makes controller with extremely tight thumbsticks
    Developers: "ahh thumbsticks are real loose and inaccurate, better make a huge deadzone."
    It's like trying to use a computer mouse with a slippery mousemat.

  • @RosieDaCherrie
    @RosieDaCherrie 2 роки тому

    Would it be okay if I used some information from your reddit post and maybe this video in a video I want to make about controller aiming? I am willing to cite and shoutout any social media you would like in the description!

  • @LAN-w-
    @LAN-w- 5 років тому +1

    So which had more precision while stunning on fps games circular or square?

    • @EternalDahaka
      @EternalDahaka  5 років тому +7

      I'd definitely say circular, especially if using larger deadzone sizes like this. Full/correct diagonal movement and acceleration are more intuitive. Of course I can't speak for everyone.

    • @LAN-w-
      @LAN-w- 5 років тому

      @@EternalDahaka i see.

    • @LAN-w-
      @LAN-w- 5 років тому +1

      @@EternalDahaka great work btw.

  • @joshuabustos1125
    @joshuabustos1125 2 роки тому

    Sorry to bother you but I play a game call ñed warface on PlayStation and I was wondering if you could tell me the Deadzone shape in that game

    • @EternalDahaka
      @EternalDahaka  2 роки тому

      It uses circular deadzones.

    • @joshuabustos1125
      @joshuabustos1125 2 роки тому

      @@EternalDahaka is there a better dead zone for fps games and if so how could I possibly change it and use it on console?

    • @EternalDahaka
      @EternalDahaka  2 роки тому

      @@joshuabustos1125
      I personally think circular deadzones are the best.
      If you want to use different deadzones from what the game uses, and use them on console, you need some adapter like the Cronus or Titan devices. You'd have to write a script for the deadzone you want, and effectively cancel the game's deadzones(or set the game's deadzones to 0% if the game offers options).

    • @joshuabustos1125
      @joshuabustos1125 2 роки тому

      @@EternalDahaka thanks for the information. This channel is really neat, keep up the awesomeness!!!