I’m a robotics researcher. My interests include cybersecurity, repeatable & reproducible research, as well as open source robotics and rust programing.

  • 114 Posts
  • 76 Comments
Joined 3 years ago
cake
Cake day: June 9th, 2023

help-circle




  • Admittedly, it’s pretty niche software. But for those who grew up using equivalents on gaming consoles such as Xbox or PlayStation, it was (still is) a pivotal accessibility feature.

    And it’s not necessarily only for those with physical disabilities or reflexive motor skill issues. Sometimes you’d like to introduce a really good story based game to a novice player that you know just doesn’t have (yet or never) the coordination or muscle memory to complete it.

    My grandparents never grew up playing videogames, and some of my nieces and nephews in the family are too young to grasp complex game mechanics. However, all of them really enjoyed playing with a control assist, where they could take the initiative in gameplay, like choosing dialogue options, steering saddled horses, flying broomsticks, exploring the world at their discretion, and I could just coast along in the backseat, fixing their camera angles, steering them back on course when lost, rescuing them in high stake combat encounters, etc.

    In some ways, you could think about it as co-oping for single player games, but because it’s per controller, you can do the same thing for multiplayer games as well. Like to help level the age gap in PvP games with your older sister versus your younger brother.

    Before we ever played with control assist, I tried the classic method of tossing around the one controller like a hot potato, but it’s just not the same in a number of ways. For one, having to relinquish a single controller really breaks immersion, as your suddenly fumbling about between living room chairs only your game characters on death’s door from an unexpected boss encounter. It also deprives them of that haptics, where they can learn more easily attack patterns or UX interaction that conventionally telegraph via force feedback.

    There is perhaps some functionality for solo players as well, such as splitting hand control across multiple gamepads. Like if your hands/arms were of different sizes, or you wanted to play other than with the controller on your lap, you could just easily dual wield controllers mux together the left and right sides-in-reach, or mux a regular handheld gamepad with something more like a Xbox Adaptive Controller for when dexterity or convenience demands.

    Although, I think the majority of folks will find the assist co-op scenario for single player games the most appealing aspect. As others have replied on prior release posts, like parents helping their kids through their first playthrough ever, it’s really an underrated feature for game consoles, and bringing that to gaming on Linux was really appreciated.








  • Indeed, I’ve encountered a few games on Steam that gracefully switch multiple controllers, but only by giving exclusive input on a first come-first-serve bases (i.e. which ever controller moves first after some cool down of inactivity from both). Hollow Knight: Silksong being one such example, as I couldn’t necessarily drive separate axis from different controllers simultaneously, thus one such motivation for passing the game only one virtual controller and optionally hiding the rest to avoid input conflicts.

    I’d be happy if Steam were to adopt such an accessibility feature into Steam input directly, much like Xbox and PlayStation. Perhaps they’ll take more of an interest in multi controller configurations with the upcoming refresh of the Steam Controller, given the wireless dongle is meant for multi device pairing.

























  • The comment thread sparked a few new questions for me.

    That will likely soon stop working because steam-run is no longer a grab bag for literally every library out there.

    What recently changed with steam-run?

    Is using pkgs.appimageTools.defaultFhsEnvArgs with pkgs.buildFHSUserEnv a suitable alternative?

       #!/usr/bin/env nix-shell
    
       { pkgs ? import <nixpkgs> { } }:
    
      (
        let base = pkgs.appimageTools.defaultFhsEnvArgs; in
        pkgs.buildFHSUserEnv (base // {
          name = "FHS";
          targetPkgs = pkgs: (with pkgs; [
            /* add additional packages here e.g */
            pcre
            tzdata
          ]);
          runScript = "bash";
          extraOutputsToInstall = [ "dev" ];
        })
      ).env