Steambox Rising, Part 1: The Games

Valve’s latest triumvirate of announcements have caused quite a stir in the gaming world. But lost among most of the analysis and speculation seems to be the fact that we don’t necessarily have to wait for SteamOS. We can start trying this out right now.

We already have the tools to build a home-brewed “Steambox.” First, put together a PC out of commodity hardware, and connect a compatible controller. Then, download and install a GNU/Linux distribution of your choice (it’s free). Once it’s up and running, install Steam for Linux (also free). Configure Steam to start when the computer starts, and to open in Big Picture Mode. Finally, look through your Library for games available under this platform that would play well with a controller.

That last part, however, is currently the limiting factor. The sweet spot for this application will be the intersection between three sets of games. Those available on Steam, those with working Linux clients, and those that have gamepad controller support.

So, as a prelude to setting up my own Steambox, I decided to take a run through my Steam for Linux library and see which games would be most enjoyable in a console setup. My test platform was my gaming desktop, running Xubuntu 13.04. I’m using an X-Box 360 wired USB controller, an almost clairvoyant gift from my awesome brother.

Prologue: The Big Picture Experience Itself

As soon at you hit the Big Picture button, a full screen interface takes over. The menus respond to controller input or mouse clicks. Use of the controller causes the mouse cursor to disappear, and relevant X-box button prompts to pop up, which is a nice tough. There’s a lot of eye candy going on here, and the minimalist in me wonders what the performance impact will be if this pretty little GUI is always open in the background.

Upon entering the Library, the interface presents you with a list of recently played games. This would be a pleasant convenience, but games are presented here regardless of whether or not they are available on Linux. You can break into an “all games” submenu, that lets you filter for Linux games only. There’s also a “Controller supported” filter, but again, it shows purchased games for all platforms, not the current platform. Some usability tweaks here would be appreciated: I don’t care about the games I cannot currently play.

Handy icons in the Big Picture list show you at-a-glance which games have “Full,” “Partial,” or zero support for a game pad. What “Partial” actually means is anybody’s guess; these games seem to either work perfectly fine, or not at all. And as you’ll see, there’s not a lot of correlation between the listed level of controller support and the actual playability contained therein.

Now, let’s get to the games!

 Left 4 Dead 2 (Controller Support Rating: Full)

This was one of the first titles to offer Steam for Linux support. And its profile in the library advertises “Full” controller support. So I went in with pretty high expectations.

But upon starting, I could only navigate the menus with the D pad. Huh, that’s weird. Then, upon starting the game proper, controller input does nothing. Except shooting. Which is not very useful without being able to aim or move.

 

I must admit I was a bit taken aback by this turn of events. This game should have been a slam dunk. It exists on the X-Box 360. It led the charge into Linux. But it’s currently unplayable in a Steambox setting.

 Verdict: Dead on arrival

 

Half Life 2 (Controller Support Rating: Partial)

For the sake of consistency, I thought I’d take a trip back to City 17 to see how this port compares to L4D2, both being Source games. Even though it claims less controller support than its younger brother, this game was actually very playable.

Movement and combat both work fine, for the brief span of play I attempted. Both also felt rather ungainly, but bare in mind I’m a PC gamer at heart. I’ve never been particularly skilled at navigating a first person shooter with dual analog sticks. Clearly I’ve got some learning to do. But I can’t blame the game.

Verdict: Rise and Shine

Mark of the Ninja (Controller Support Rating: Full)

Another recent Humble Bundle purchase, this game was a mixed bag on Big Picture mode. It boast Full controller support in the library, and I’d say that’s about accurate. The game immediately recognized the X-Box controller and gave me accurate instructions in-game on its use. In no time, I was skulking through the shadows and hiding bodies like a true ninja.

 

Then, suddenly, everything sloooowed doooowwwwn. The entire game seemed to start running at half speed (could actually be kind of an advantage, but at a cost of fun). The game would not let me alt-tab or minimize away to diagnose the issue. Only quitting and restarting brought me back to full speed. And a few minutes later, it happened again.

If I launch the game outside of Big Picture mode, there’s no such performance drop-off. Perhaps the eye candy of the UI still gets rendered when the game is in session? No idea. But until that issue is resolved, it’ll be a tough sell for a dedicated Steam Box setup.

Verdict: Mostly Honorable

Thomas was Alone (Controller Support Rating: Partial)

I must admit I was pleasantly surprised by the playability of this quirky minimalist platformer. I had to adjust the options to force it into full screen mode, but beyond that it was seamless.

The game doesn’t show any indication that it was intended for console play: on-screen control hints seemed oblivious to the fact that I was using a game pad. But beyond informing the user, the gamepad functionality is perfectly adequate.

Verdict: Feels

 

Awesomenauts (Controller Support Rating: Full)

A side-scrolling MOBA that got its chops on X-Box Live Arcade seems like a shoe in for a console-like experience. Especially with an X-Box controller. The game boasts “Full” controller support, so it must just work, right?

Wrong.

Another disappointment that caught me off guard. The game client started well enough (after going through a separate window to configure the thing), video and sound work fine, but the game has no clue what to do with my controller. The default button scheme won’t even let you confirm menu choices. Attempts to re-bind the broken controls didn’t work out very well: Awesomenauts was convinced that my left trigger button was the Z axis, and that my right trigger button didn’t actually exist.

This is a pretty addictive game that allows split screen and can work with a dual stick game pad. I know it can. I’ve played it thusly. I would love to try this on my TV, with my friends, on my Steambox. But at present, that’s just impossible.

Verdict: Not even slightly awesome.

 

VVVVVV (Controller Support Rating: None)

The lovely platformer by Terry Cavanagh works perfectly well in Linux. And the fact that there are only three controls (left, right, flip) should mean a gamepad would work just fine compared to a keyboard. But unfortunately, its Big Picture behavior isn’t great.

 

When launched, the player is dumped back to the desktop, and a small window is presented. If you close the window, the Big Picture UI is restored. From that point on, the controller does nothing. This game was advertised as having no controller support, so I got what I was promised. But it seems like a small detail to add for such a simple game.

Verdict: ZZZZZZ

 

Super Hexagon (Controller Support Rating: Full)

Another Terry Cavanagh game, this one involves only two buttons (clockwise, counter clockwise). The experience was identical to the previous title: good Linux support on paper, dumped from Big Picture to desktop, small window, no controller response.

 

What’s baffling here is, the game was listed as having “Full” controller support. But it actually doesn’t work with a controller at all. I’ve got nothing.

Maybe it’s for the best. Playing this game on a big screen might be seizure-inducing.

Verdict: Super Hexa-don’t

 

 Bastion (Controller Support Rating: Partial)

The kid picked up an old favorite from the library. Thought he’d take one more stroll along the Rippling Walls, for old time’s sake. A lotta’ fine works didn’t make it this far, you see. And truth be told, he woulda’ been mighty disappointed if this one didn’t pan out. But luck has a way o’ changin’ her pace, just when she needs to. And wouldn’t ya’ believe it, this old tome stood the test o’ time real well. The good ones always do.

 

Ahem. Anyhow, I did notice some minor performance issues with this title. They certainly weren’t severe enough to hamper gameplay.

Verdict: A proper story

 

Fez (Controller Support Rating: Full)

More good news from the land of Humble Bundle platformers. Fez worked flawlessly. There were no performance issues, no control misdirection, no interface oddities. The game saw my X-Box controller and instructed me appropriately.

 

 

Really, there’s not much else to say here.  The game just worked.  If all of the games I checked went this smoothly, this post would have been much shorter.

Verdict: Sweet Headgear

 

Hotline Miami (Controller Support Rating: Partial)

I originally hadn’t intended to review this one. Then I saw the Partial support icon under it, and was confused. I can’t fathom playing this game without a mouse, but I guess people do?

Upon launch, the program dumps you out of Big Picture mode into the Hotline Miami Launcher, wherein you have to pick your resolution. Full screen mode is available from this point on, but the interruption still breaks the cohesive Big Picture user experience.

Once you get through the launcher, it’s smooth sailing. I’m still not sure what Partial support means, because this game played just fine with the controller after I got the hang of it.

Verdict: Katana

 

The Suspiciously Absent

I mentioned above that the ideal Big Picture game would involve a combination of Steam availability and Linux compatibility. Maybe I should narrow that down further. It has to be available on Steam for Linux. Three games in my library made clear how important that distinction is. Braid, Super Meat Boy, and The Binding of Isaac all have Linux versions (made available via various Humble Indie Bundles). All three are available on Steam. But none of them are available Steam for Linux.

Three games wouldn’t be such a big deal normally, but these are darlings of the indie gaming world. And they function beautifully with a controller (arguably better than with a keyboard+mouse). Gamers are going to be very disappointed if they put together or buy a Steam Machine of some sort and find they are absent. I know I was, for damned sure.

Final Thoughts

I’d classify the results of this little experiment as “mixed.” There were multiple sighs of relief in there, some surprising positive turnouts, and a few disappointments. Although I could certainly have fun with the collection currently available to me, I’m not sure if an average Windows gamer would go out of their way to have this experience.

Most troubling are the number of games promising much better controller support than they actually deliver. When an X-Box user picks up a game at Gamestop with the intent to buy and play it, he doesn’t stop and think “I wonder if I can actually play this on my console, with my controller.” It’s just a given. But a Steam console user currently needs to do more background checking before making a purchase, or risk disappointment. Valve seems to think their own controller solution will bridge the gap a bit, so they seem to be aware of the coming problems they’ll face in their strange foray into the console world.

Stay tuned for the next post, in which I actually set up a proper Steambox and see how this experience translates from the computer desk to the couch.

PAX East 2013 Wrap-up

I’m not going to do a full explanation of all the experiences I had at this years iteration of the east coast’s gaming pilgrimage. But I will jot down a few notes to broadcast some interesting or novel items.

Underexposed

Now go find interesting things in there!

I spent relatively little time in the expo hall, but I managed to gather enough noteworthy items to create a short bulleted list.

  • 3D printers are neat! I’d never heard of Maker Gear but hey had a few freshly minted toys on display.
  • I can think of a few Battlemech-related things to do with a Stinkyboard. Man, that’s an awful name, though.
  • Guncraft is a thing that exists. I’m not sure how I feel about this.
  • I didn’t see this booth close up, but the guys at Supergiant Games (of Bastion fame) are making a cyberpunk action RPG called Transistor. I’m going to buy it, because Bastion was amazing, so I suppose seeing them was optional.
  • Speaking of booths I didn’t see, Rise of the Triad’s upcoming reboot was also on display.  I’m kind of bummed I didn’t get to see it in person, or meet the demented individuals who would do such a thing.

None of the PC component vendors were doing much interesting besides the occasional Twitter giveaway. I suppose I’m not entirely to free shit, but what is Corsair going to tell me about RAM that I don’t already know?

Dressup

As I don’t have a camera strapped to my face at all times (waiting on you, Glass), I didn’t get very many pictures of cosplayers. Except this one.

I… sure. I guess that counts.

 

But fortunately the folks at Ars Technica were a little more diligent.  PAX isn’t just a cosplay convention, but the folks who do go that extra mile tend to do it right.

 

Light up the Night

I’ve been through these dog and pony shows four times now, and the experience changes every time: the people I’m with, the panels I attend, etc. But one aspect that remains consistent from year to year is that the Protomen melt my face off with their show, every time. And this time was no different.

You will fall from a height most men will never reach.

The hits were thrown down with great justice, with a splendid Queen cover and an Act III preview. During the meet and greet, The Gambler was very disappointed that I didn’t know that Act III was a thing, so I’m passing that on.  That’s a 2012 PAX Prime recording, because I can’t find recordings of 2013 yet.

It’s a this point that I’d like to note that Stephanie was a trooper through this whole expedition. She went to her own panels, conducted board game outings, and really made PAX her own. And then all of a sudden, she surprises me with this thing. Not regretting putting a ring on this one.

Bonus Points

Some people apparently don’t know about Extra Credits still. Now you do!

They’ve been consistently putting out an episode a week for a couple of years now, so there’s a lot of content there. But they’re in easily digestible chunks, ready for your cerebral consumption.

The way it’s meant to be grayed

The Nvidia panel was one of the larger ones I attended, occupying the main hall, and I’m not sure how I felt about it. You could tell, just sitting there, that the folks conducting it did this for a living. The free noisemakers and copious prize giveaways made the whole event seem more like a pep rally than an info session. I’m enough of a hardware geek that I don’t need loud lotteries to keep my attention. But I suppose when you’re pushing the bracket in a potentially flat industry, you need to keep the team spirit going.  I’m so disillusioned I’m not even going to post links or images here.  Well, that and I’m lazy.

I didn’t know that much about TITAN before, and I still don’t, because apparently a single teaser slide with some hilariously large numbers is all the technical info we were smart enough to digest. Wrong audience, I guess. Also, I don’t care if you re-invented DVFS with a mildly attractive interface. The take-home from this was the old “bigger is better.”

I’m going to come out and say it, I do not understand Project SHIELD. I do not foresee a time where I will want to take my PC game, shrink it down to a smaller screen, and play it on a console controller. The novelty of playing on my couch doesn’t justify the purchase of yet another portable device. The marketing is aggressive, and I’m sure it’ll sell, but I feel out of touch here.

Still clocking

It’s great to know that OC Remix is still going strong. Apparently someday the website is going to be overhauled. It’ll look great when that happens! Totally rad! Someday.

Eidos Montreal and Alex Brandon are collaborating with the site to release a Deus Ex remix album. That tickles me right in the awesomebone, but the downside is they’re choosing to drip-feed it to us via facebook. Expect two tracks a week.

Freemium

PGI, Hi-Rez, and Chris Roberts did a great panel on the stewardship of long-standing IP and the inexporable rise of the free-to-play model. I asked a panel question for the first time ever (regarding exposing metrics through an API), and I didn’t swoon or freeze up. Baby steps.

I didn’t know who Chris Roberts was until yesterday. Apparently the same guy was behind Wing Commander, Freelancer, and Privateer. And he’s making a new space sim that went kind of okay on kickstarter (to the tune of about $2 million).

I still feel slightly taken advantage of when developers tap into my nostalgia like a teeming maple tree. But at least this one seems to be putting real effort in there, unlike some other recently announced ventures.

As I’m already waiting patiently for a few donations to ripen into actual projects, I do have some skin in this increasingly popular game. But I think I’ll wait for this one to mature before investing.

I’m beat and need to decompress, so I’ll leave you folks with just one more image of the scale of this thing event.  If you’ve never been, keep your eyes out for next year’s recurrence, and maybe I’ll see you there.  Among these other blurry folks.

 

Games and evolutionary systems: a robotic case study

I’ve had the idea for this post kicking around since I first started playing DotA. A funny thing seems to happen when you put a large number of people in the closed system of a video game. Patterns start to emerge. Strategies begin to form. As players gain experience, they stop simply consuming the game and begin to make choices on a higher level. These planning-stage decisions can vary wildly but generally are formed from a limited set of possible values.

As more and more matches are played, emergent methodologies begin to spread. It’s occurred to me that what we witness in these games is an artificially constructed model of Darwinian evolution. This idea intrigued me enough that I thought I’d pick out a single game to dig into this intersection between the virtual world and the natural world.

Rock ’em, Sock ’em

There are a plethora of games which lend themselves well to deep metagame analysis, but I’m going to focus particularly on a game I’ve been enjoying lately: Piranha Game’s MechWarrior Online. I have a special love for the MechWarrior series: the original is one of the first games I have conscious memory of playing, and I’ve watched it grow over its many iterations over the past two decades. It’s heart lifting to see this series finally undergo new development, and based on the Beta thus far, the franchise is in good hands.

The metagame for MechWarrior Online centers around the Battlemechs themselves: which ‘mech the pilot chooses to field, and how it is configured. The number of ‘mech and slew of available weapons and equipment make this a massive solution set. Add in the variables of individual play style, team dynamics, and counter-play, and the problem of picking the “optimal” ‘mech as a closed-form solution becomes seemingly impossible. And it probably is.

So what do players do? Beginners try new builds, largely at random, maybe with a little preexisting BattleTech experience guiding their way. Experienced players watch opponents, read forums or reddit threads, and glean knowledge to inform their choices. Across thousands of players,

A Quick Look at Basic Genetics

But before we go too much farther, let’s look at how evolutionary systems behave more generally (Darwin forgive me for the oversimplifications I’ll likely throw down).

Evolution explains. Source: wikimedia commons

In natural selection, a gene is the unit of evolution. “New” genes are introduced through mutations incrementally altering existing ones. A “good” gene benefits the host organism by increasing its fitness in its environment, allowing it to reproduce, propagating the gene. This process repeats continuously over countless organisms, as existing genes are slowly tweaked through mutation, and constantly tested by the ecosystem in which they exist.

Robotic Reproduction

So, how can we apply this science to games, and specifically to MechWarrior Online? Simply swapping nouns gives us a good foundation. The “gene” of our system, the unit of evolution, is a build: a specific configuration of given ‘mech. An “organism” in this case is player and the ‘mech, or possibly even the team (since MWO is team game), and its “life” is one match. The “fitness” of an organism is easy to measure: player score, a gauge of performance in that match, combined with the ultimate outcome (win or loss). A mutation can be thought to occur when a player tries a different build. And the “environment” is the game itself, specifically the programmed mechanics that determine how these giant fighting machines interact with one another (generally, with LASERs).

Of course, there are other factors that will determine a player’s performance in a match: pilot skill, team synergy, opponent skill, and occasional old fashioned chance. But this isn’t a very distant departure from the natural world either. An animal can die for plenty of reasons besides having depth perception or not. But if depth perception provides an advantage, after a large number of organisms, the advantage will become pronounced, and those organisms lucky enough to be born with it will be more likely to reproduce and pass it on.

So, a strong build does well in a match, and most likely propagates on to other matches relatively unchanged. A weak build sends the player back to the ‘mech lab. Darwinism selects out these configurations, making them increasingly rare. Repeat this process across thousands of players playing thousands of matches (forgive my vagueness, I honestly don’t know how many players are online at any given time), and we have millions of “lifetimes” of evolutionary pressure. This pressure might not create a “perfect” build, but it will certainly limit the set of possible solutions down to a few very popular, very successful builds.

It’s worth noting that from a the point of view of a game designer, such convergence is a bad thing. PGI, the developers of MWO, invested time, effort, and money into creating a variety of resources to build a game with depth. A few select builds taking over creates a less compelling game experience, and may drive players away. So, how do developers shake up a stale metagame? Change the ecosystem.

Climate Change

Developers (good ones, at least), are constantly patching their games, changing the mechanics to address bugs, remove unintended exploits, or just tweak the effectiveness of certain items in order to maintain balance. When PGI does so, the act of patching creates a shift in the underlying rules which have been thus far determining the fitness of these builds. A build that dominated one day could be rendered obsolete the next.

For example, early versions of MWO had a bug known, derisively, as the “lag shield.” Due to unoptimized net code, ‘mechs in game would actually occupy a different location (according to the server) than they actually appeared to the players. This problem was exacerbated if a ‘mech moved quickly. Predictably, this bug made fast-moving ‘mechs very popular, because they became difficult to successfully damage. The Jenner in particular became a feared fighting machine, being the heaviest light ‘mech available at the time.

But as time passed, PGI was able to slowly resolve the “lag shield” issue after a series of patches. Combined with the addition of new exciting equipment that the Jenner couldn’t carry, and the once feared light ‘mech became an endangered species. Today, heavier short-ranged configurations are in vogue, most likely due to the small size of the current maps (4 of the 5 available are close-combat settings).

The idea of applying natural selection to the artificial world isn’t new. The study and design of genetic algorithms is an important facet of computer science. But the fact that this system is both artificial and unintentional is particularly fascinating.  I’d like to enhance this post with some actual metrics, but currently I don’t have any means of procuring them until PGI opens up their statistics databases.

A little home nonsense

In my previous post, I created a chart without axis labels. Such an action is a breach of Intergalactic Science Law, and I’m going to have to solve the problem of converting these values into real sensor readings eventually. So for my next task in this home sensor project/obsession, I set about to do exactly that. It should have been a fairly simple task. It was not.

Let’s explore. The temperature sensor is a fairly simple device which outputs a voltage proportional to the ambient temperature. The analog voltage output is fed directly to a microcontroller on the sensor node. The microcontroller performs a process of analog-to-digital conversion (ADC) and translates the voltage to an 8-bit binary number. That byte is shoved into a packet of other bytes and beamed via radio to the receiver, which is attached to my trusty Arduino. So, we wind up with decimal values like these, taken during the shower (the values “peaked” at the 5 minute mark, probably when I shut the water off).

Time ADC value
0:00 96
2:00 107
3:00 120
4:00 153
5:00 161

So, the task of recovering the real sensor value involves translating those ADC output bytes into the original units of measurement being read; in this case, degrees Celsius.The math should just involve a couple of straightforward equations.

Vout = Vcc * (ADCout / ADCmax)
T = 100 * Vout – 50

The value Vcc is a constant, the source voltage for the microcontroller: 5 Volts. ADCmax is 255, which is the largest number 8 bits can represent. The temperature equation came from the part datasheet (actually from the SparkFun comments, but I tested it myself to verify). Just to make things easier for my silly American brain, I’ll also convert the temperature into degrees Fahrenheit. Man, one of these days I need to learn LaTeX.

Tf = (9/5) * Tc + 32

Okay, so what do we have here?

Time Temperature (oF)
0:00 280.8
2:00 319.6
3:00 365.5
4:00 482.0
5:00 510.2

Oh bother. I don’t carry the blood of the dragon, so those temperatures would have killed me almost instantly. No, I believe something might be wrong with my assumptions. I checked the transmitter, and it looks like the voltage regulator is working; I see 5V everywhere it needs to be. And remember when I said I tested the temperature equation? I double checked by reading the sensor directly: it read 0.7V, which is 20oC, or 68oF, exactly room temperature according to my thermostat. While checking this, the transmitter kept sending “92” to the Arduino.

During the soldering process, I kept having the nagging feeling that I put some parts in the wrong place. That mostly because the instructions at one point simply directly me to solder down the “blue” capacitors in a specific spot, when I had two different sizes of blue capacitors in the damn kit. So now, I have the sinking feeling that my coin flip came up tails. The good folks at the WickedDevice Q/A thought I also might have a low battery. That isn’t the case, but I appreciated a vendor giving my such a timely response.

Now I’m waiting for my order of three new nodes to arrive. If I don’t bungle the assembly, I can get some real readings, and put together a network with multiple transmitters. I was hoping to work on those two goals one at a time. Que sera sera.

A little home sense

It felt good to have a soldering iron back in my hand. Felt right. I’m in the process of channeling a new obsession into an old hobby. The latter is electronics design. The former is home maintenance and environmental awareness.

When we first moved in, it became apparent we had a minor microbial problem. It turns out that mold likes two things: moisture and warmth. We were also beset by a series of issues with the forced hot air system. Furnace cleanliness, closed ducts, and (as by brother was keen to point out) an open window were all contributing to a serious temperature difference between upstairs and downstairs.

So, I started thinking about ways to quantify these problems and more actively monitor my surroundings. I cooked up a nifty microcontroller project. Have an Arduino receive sensor information from a series of wireless nodes scattered throughout the house. The nodes would be equipped with temperature and humidity sensors. I wound up buying a Wicked Device transmitter node/receiver shield pair from MakerSHED.  The kits come as an empty board and loose components.  A little solder work, and we’re ready to write some code.

Wireless sensor pair, post-soldering

 

Arduino with its lovely new shield

There are two software components required immediately: the microcontroller code to manage receiving the wireless data and forwarding it out through USB, and a daemon running on a PC to intercept and log it.

As a test run, I left one in the bathroom while (and after) I took a hot shower. I didn’t timestamp the data, but the node transmitted a packet every ten seconds. Some packets seem to get dropped, but that should give a rough idea about time elapsed. I’m also just too lazy to convert the data into actual degrees or percentages, thus no labels on the axes. This is all relative.  Statistics faux pas, I know.

Showering with SCIENCE!

I left the fan running and the door closed during and after. The point where the shower ended is pretty obvious, but I’m rather surprised at how long it took for the conditions to get back to normal. Towards the end, I opened the door, causing the quick equalization at the tail of the graph.

Eventually I may push the results into a database and add more sensor nodes. Maybe even a web frontend to view the house’s current conditions in a visual manner, or graphically inspect logs.  Of course, that will require more soldering.  Bring it on.

Comparing Controls: Part 1

 

The debate among gamers between analog control sticks and the classic mouse/keyboard conversation has been raging for decades. I’ve been kicking around the ideas behind this post for a while, and my recent foray into Mechwarrior Online has rekindled my interest in putting this idea out there. Let’s look at the mathematics of the these control systems as a means of addressing their relative pros and cons.

The mouse is a simple rodent. It controls the cursor position, directly. Moving the mouse ‘x’ distance will result in a proportional cursor displacement.

 

Let’s take a look at how moving the mouse back and forth over one dimension translates to cursor movement over time.

Pretty simple triangular wave.

Now let’s look at analog sticks, or joysticks. Joysticks are a bit more complicated. In most applications, the joystick doesn’t directly control position. It controls the derivative of position (in other words, cursor speed). Move the joystick a little, and the cursor moves slowly. Push it farther, and the cursor moves faster.

Let’s do the same graph as above, where a user is moving the joystick back and forth from its resting position. Note that this is all hand-waving and not mathematically precise (or even properly scaled).

Note the curvature of the cursor position. Because we’re only controlling the derivative, the actual position will be a continuous function. Therein lies the primary difference between a mouse and a joystick: a cursor driven by a mouse can be move in a discontinuous fashion (think jagged edges), but a cursor driven by a joystick will always need to form smooth curves.

Truth be told, this paints analog sticks in a pretty grim light. But we’re making a couple of assumptions that might not be true for all games:

  1. that the joystick always controls the derivative of cursor position
  2. that the mouse movement is directly mapped and not limited.

There are mechanics available which can turn both assumptions on their heads and level the playing field a bit. We’re also leaving out a critical portion of the mouse-and-keyboard setup: the keyboard. We’ll look at both of these factors in the next post.