{"id":201,"date":"2015-09-08T23:37:35","date_gmt":"2015-09-08T23:37:35","guid":{"rendered":"http:\/\/morsepower.net\/blog\/?p=201"},"modified":"2015-09-08T23:37:35","modified_gmt":"2015-09-08T23:37:35","slug":"compare-controls-part-2","status":"publish","type":"post","link":"https:\/\/morsepower.net\/?p=201","title":{"rendered":"Compare Controls: Part 2"},"content":{"rendered":"<p>Approximately seven thousand years ago I wrote <a href=\"https:\/\/morsepower.net\/blog\/?p=27\">a post about the different ways we can interact with video games<\/a>.\u00c2\u00a0 I promised more, and didn&#8217;t deliver.\u00c2\u00a0 And since then there have been a few strange and novel additions to the world of gaming peripherals.\u00c2\u00a0 So now is as good a time as ever to pick up where we left off.<\/p>\n<p>Let&#8217;s take a quick moment to review the points from the previous post.<\/p>\n<ol>\n<li>Keyboard keys are binary in nature: on or off, Go 100% or Full Stop.<\/li>\n<li>Analog sticks control the rate of change of a cursor.\u00c2\u00a0 Push harder to go faster.<\/li>\n<li>A mouse controls position directly.\u00c2\u00a0 Move mouse 10 cubits to the left, cursor goes 10 video-cubits to the left.<\/li>\n<\/ol>\n<p>Let&#8217;s extend these lessons and see how they apply to some real-world applications (which seems like the wrong term for video game examples but whatever).<\/p>\n<h5>Needs of an FPS<\/h5>\n<p>In most first-person shooter (FPS) games, you have four degrees of freedom to work with: vertical look, horizontal look, move backwards\/forwards, move left\/right.\u00c2\u00a0 Vertical aim is &#8220;bounded&#8221; to a natural max and min: looking directly up or directly down.\u00c2\u00a0 But horizontally, you can spin indefinitely.<\/p>\n<p>The player in an FPS is generally moving about in a comparatively large environment, so directly mapping movement control would probably be a terrible idea.\u00c2\u00a0 After some initial offerings in the early 90s, FPS gaming on PC settled on a keyboard+mouse paradigm that has dominated for twenty years.\u00c2\u00a0 Console shooters came around later, using dual analog sticks to control all four axes for the past three console generations.<\/p>\n<p>Since then, epic flame wars have been fought over which control method works best.\u00c2\u00a0 With the mouse and keyboard, you have the advantage of directly mapped control for aim.\u00c2\u00a0 This is mathematically superior to aiming by controlling the derivative of cursor position, as per my last post.\u00c2\u00a0 But the oft-overlooked left analog stick give you fine control over your position in space, and recall that movement is already limited to controlling your speed instead of position.\u00c2\u00a0 An analog stick allows you to control your speed, instead of being limited to the Go vs Stop choice offered by a keyboard button.<\/p>\n<p>I used to sit happily in the Keyboard + Mouse Or Die camp, but in recent years I&#8217;ve come to see the situation as more complicated.\u00c2\u00a0 Twitch shooters tend to move at hyper speed all the time, so there&#8217;s no benefit moving at variable speed.\u00c2\u00a0 But there are conditions where variable movement speed and direction are important.\u00c2\u00a0 I&#8217;ll be streaming Dark Souls soon.\u00c2\u00a0 You&#8217;ll see what I mean.<\/p>\n<h5>Stompy Space Robots and Direct-mapped Analog Sticks<\/h5>\n<p>I&#8217;ve posted about <a href=\"https:\/\/morsepower.net\/blog\/?p=49\">MechWarrior<\/a> before.\u00c2\u00a0 Long and short of it is, you are piloting a large humanoid robot.\u00c2\u00a0 It&#8217;s not as fast to respond as a person in a shooter game, but speed and precision are nonetheless vital to survival.\u00c2\u00a0 The choice of how to control it will factor heavily into your performance.\u00c2\u00a0 Let&#8217;s look at how we&#8217;re constrained.<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_206\" aria-describedby=\"caption-attachment-206\" style=\"width: 194px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/morsepower.net\/blog\/wp-content\/uploads\/ScreenShot0003.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-206 size-full\" src=\"https:\/\/morsepower.net\/blog\/wp-content\/uploads\/ScreenShot0003.jpg\" alt=\"\" width=\"194\" height=\"219\" \/><\/a><figcaption id=\"caption-attachment-206\" class=\"wp-caption-text\">Screenshot from MechWarrior: Online by Piranha Games Inc.<\/figcaption><\/figure>\n<p>&#8216;Mechs can only look up and down in a limited arc.\u00c2\u00a0 But, unlike your generic FPS dudebros, they actually have two horizontal axes that can be independently controlled: overall facing (based on leg position), and torso twist (arms, chest and head moving like a turret on a tank).\u00c2\u00a0 Torso twisting is constrained to a limited arc.\u00c2\u00a0 Leg facing can spin indefinitely.\u00c2\u00a0\u00c2\u00a0 Twist and pitch are fairly quick to respond, while movement can be ponderous depending on the size of the &#8216;mech.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Remember from my previous post on the subject that relative input just wouldn&#8217;t be precise enough, due to the problem of continuity of position: in this case, for this game, aiming is fast enough to the point where the d\u00c2\u00a0 ifference is obvious, as in an FPS.\u00c2\u00a0 So at first glance, mouse aiming looks advantageous for pitch and twist.\u00c2\u00a0 But, while keyboard movement might work for legs, its binary nature means you are not taking advantage of the fact that the &#8216;mech can move and turn at a variety of speeds.\u00c2\u00a0\u00c2\u00a0 So what scheme could satisfy performance requirements and take advantage of these specific constraints?<\/p>\n<p>I&#8217;ve theorized that having a joystick to control movement and a mouse to control aim would probably wind up being optimal based on the above consideration.\u00c2\u00a0 But, Reddit user \/u\/cavortingwebeasties provided the major inspiration for this post with his <a href=\"http:\/\/imgur.com\/a\/ixi64\">very novel and highly customized flight stick<\/a>.\u00c2\u00a0 After modifying the stick to remove its ability to re-center itself, he employed commercial software to map the plane of a joystick to a virtual mousing device, using an analog stick as a direct-mapped control.\u00c2\u00a0 Move the stick to position X,Y in its range of motion, and the cursor moves to position X,Y in the game.\u00c2\u00a0 Like a mouse, it will provide faster and more precise control than a typical analog stick.\u00c2\u00a0 To quote <a href=\"https:\/\/www.reddit.com\/r\/mwo\/comments\/1c52od\/mwo_joystick_controls_worth_it\/c9d3nqi\">his post<\/a>&#8230;<\/p>\n<blockquote><p>The stick I built specifically addresses the mechanical shortcomings that all airplane joysticks share plus since it runs TARGET, among many other incredibly useful things, allows me to use absolute inputs and have a very fine degree of control over the axes (including on-the fly sensitivity changes just like any mouse worth it&#8217;s weight) which since my gimbal was designed to utilize from the very start -works out really well. Again I reiterate -this is not the norm- and much effort was required to do this.<\/p><\/blockquote>\n<p>I find this to be an elegant and immersive solution: a joystick that is direct-mapped to control position, instead of its derivative.\u00c2\u00a0 It takes advantage of the fact that in MechWarrior aim is bounded on both axes, thus little is lost by having a constrained range-of-motion.<\/p>\n<h5>Steam Controller<\/h5>\n<figure style=\"width: 325px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/cdn.akamai.steamstatic.com\/store\/promo\/livingroom\/U3NjAxNTgzNw\/01_controller.jpg\" alt=\"\" width=\"325\" height=\"300\" \/><figcaption class=\"wp-caption-text\">Image courtesy of Valve Software<\/figcaption><\/figure>\n<p>We haven&#8217;t talked about trackballs, because it&#8217;s been decades since I&#8217;ve seen one in the wild.\u00c2\u00a0 But when we talk about <a href=\"http:\/\/store.steampowered.com\/universe\/controller\">Valve&#8217;s entry into the controller market<\/a>, it&#8217;s important to know what they are.\u00c2\u00a0 A trackball is just an upside-down mouse (an easier analogy to make when mice had balls in them).\u00c2\u00a0 You flick your hand over a ball, and the cursor moves proportionally to how far the ball span.\u00c2\u00a0 It&#8217;s a direct-mapped control, like a mouse in theory.\u00c2\u00a0 But in practice it&#8217;s harder to control the rotational momentum of a spinning ball than it is to control where your wrist is in space, so trackballs largely fell out of style.<br \/>\nThe Steam Controller doesn&#8217;t have a trackball on it.\u00c2\u00a0 But what it does have is a touchpad, on the right, in place of a second analog stick.\u00c2\u00a0 This touchpad offers them a level of software-controlled freedom to behave in different ways, as evidenced by the variety of controls we see in the mobile gaming world.\u00c2\u00a0 One of the options is to emulate a trackball: slide your finger, and the cursor moves accordingly.\u00c2\u00a0 This is a direct-mapped controls scheme the occupies a position one relegated to derivative-based controls, which has interesting implications on the types of games one can play.\u00c2\u00a0 Can this thing really replace a mouse and keyboard?\u00c2\u00a0 Being that Valve is a PC game developer, it would be to their advantage if this were so.\u00c2\u00a0 Time will tell.<\/p>\n<p>Holy crap this is getting long.\u00c2\u00a0 I think we might actually need a Part Three.\u00c2\u00a0 Coming up:\u00c2\u00a0 head tracking, accelerometers, and virtual reality!\u00c2\u00a0 This is getting exciting.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Approximately seven thousand years ago I wrote a post about the different ways we can interact with video games.\u00c2\u00a0 I promised more, and didn&#8217;t deliver.\u00c2\u00a0 And since then there have been a few strange and novel additions to the world of gaming peripherals.\u00c2\u00a0 So now is as good a time as ever to pick up [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-201","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/morsepower.net\/index.php?rest_route=\/wp\/v2\/posts\/201","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/morsepower.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/morsepower.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/morsepower.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/morsepower.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=201"}],"version-history":[{"count":3,"href":"https:\/\/morsepower.net\/index.php?rest_route=\/wp\/v2\/posts\/201\/revisions"}],"predecessor-version":[{"id":207,"href":"https:\/\/morsepower.net\/index.php?rest_route=\/wp\/v2\/posts\/201\/revisions\/207"}],"wp:attachment":[{"href":"https:\/\/morsepower.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/morsepower.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/morsepower.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}