Every (other) Tuesday, Mike Sylvester brings you REVOLUTIONARY, a look at the wide world of Wii possibilities.
Some of you may have wanted to see the Wiimote and SIXAXIS dropped on an island with explosive collars around their necks, forced to fight a deathmatch, but Battle Royale this is not. Nintendo and Sony would happily accept you placing both consoles in your entertainment center, because they offer up different experiences. Getting a DVD player doesn't require the discontinuation of cable TV service, nor does it render your iPod obsolete. But they are similar in that they are gaming input devices, so there will naturally be some overlap in possible applications. It's for that reason we're interested in seeing which controller is better at what. So with no further ado: Round 2. Fight!
I was browsing through downloadable game demos looking for candidates to use in the test. Specifically, I was searching for a flight simulator to help determine which is the better motion-sensing controller for that type of game, when I came across the newly released Journeys of the Dragon Rider. It's a low-budget production; the antithesis of Lair, in all ways save for theme. I'd already thrown together a basic accelerometer-based mousing script for the SIXAXIS, and thought it would at least be good for a laugh to try the game out with that. With no tailoring at all, I found out that it worked, and worked well.
I went back and adjusted with the sensitivity to make the dragon respond to more subtle movements, then I added in game-specific controls and threw in a few extra lines of code for Wiimote compatibility, and commenced with the comparison.
Z = Sixaxis.L1 or Wiimote.Left //Slow down
X = Sixaxis.R1 or Wiimote.Right //Speed up
//Menu controls
Escape = Any.Select
Enter = Any.Start
Mouse.LeftButton = Sixaxis.R2 or Wiimote.Two //Fireball
Mouse.RightButton = Sixaxis.L2 or Wiimote.One //Increase altitude
//Set initial coordinates for mouse cursor to center of screen
If !var.init
mouse.CursorPosX = (screen.Width/2)
mouse.CursorPosY = (screen.Height/2)
var.init = True
EndIf
//Assign dimensions to contain mouse movement within
var.MinXRes = -Screen.Width
var.MaxXRes = Screen.Width
var.MinYRes = -Screen.Height
var.MaxYRes = Screen.Height
//If no Wii Remote inputs are returned, the SIXAXIS will move the mouse pointer
If Wiimote.Pitch > .1 or < -.1
FakeMouse.DirectInputX = smooth(MapRange(Wiimote.SmoothPitch,-360,360,var.MinXRes,var.MaxXRes))
FakeMouse.DirectInputY = smooth(MapRange(Wiimote.SmoothRoll,-360,360,var.MinYRes,var.MaxYRes))
Else
FakeMouse.DirectInputX = smooth(MapRange(Sixaxis.SmoothRoll,-360,360,var.MinXRes,var.MaxXRes))
FakeMouse.DirectInputY = smooth(MapRange(Sixaxis.SmoothPitch,360,-360,var.MinYRes,var.MaxYRes))
EndIf
Shift + P + I + E = Any.Home //stop script
Beware the dragon that sits at your doorstep
It would seem that I've done in a weekend what a big-budgeted team couldn't achieve with more than a year's development time. It's is possible to ride a dragon into battle with a SIXAXIS as your virtual reigns. And it's just as easy with a Wii Remote! Perhaps Factor 5 will map some of those waggle-triggered controls to the abundance of buttons on the SIXAXIS and leave the motion controls to just steering the beast the next time they revisit this new IP.
Neither controller exhibited a clear advantage in the way its accelerometer processed my movements, however, this comparison has made apparent to me an issue that I may have overlooked in the past. Brief losses of connection or a hiccup in the communication between the Wii Remote and my Bluetooth adapter seems to be causing some erratic behavior, which is evidenced by the camera view going wonky at times. It may look like I intentionally added the frame stutters in the video to coincide with the beat of the music, but that's actually the Bluetooth communication glitch throwing my view around. Being that the SIXAXIS is (in this instance) connected and transmitting data via USB, it doesn't exhibit such behavior, and it's all the more unsettling to know that the Bluetooth chip in my USB adapter is the same model incorporated in Wii consoles. It should be noted that Windows drivers or any number of other things could be the cause of the communication hiccups, and if it is indeed a hardware problem, the SIXAXIS may not be immune to it, being that the preferred connection for that controller is also Bluetooth wireless.
Finding no palpable difference between the motion-sensing capabilities of the two controllers' accelerometers, I decided to pit the Yaw-sensing gyro of the SIXAXIS against the IR sensor of the Wii Remote. Both features are exclusive to their respective controller, potentially giving unique advantages in particular circumstances.
I wanted to focus strictly on X-axis movement, the specialty of the SIXAXIS gyro, so I went searching for a Space Invaders or Breakout clone to play. I found several different ones, which were fun and varied takes on the Space Invaders and Breakout formulas, but I couldn't suppress my desire to show something visually arresting, and none of those clones qualified. I really wanted something colorful and rich in pixel shader goodness like Plasma Pong, so after finding nothing suitable that controlled on the X-axis, I pivoted my monitor and video camera 90° clockwise and swapped around the axis controls in my scripts. I wanted Plasma Pong, so I got Plasma Pong.
//Get initial Gyro value
If !var.init
var.SRGi = Sixaxis.RawGyro
var.init = True
EndIf
//Move mouse horizontally on 90-degree pivoted screen using SIXAXIS gyro
If Mouse.DirectInputY > (Mouse.DirectInputY - (var.SRGi+15))
Mouse.DirectInputY = (Mouse.DirectInputY + (Sixaxis.RawGyro -var.SRGi))
Else
Mouse.DirectInputY = Mouse.DirectInputY
EndIf
//Move mouse vertically on 90-degree pivoted screen using SIXAXIS accelerometer
Mouse.CursorPosX = MapRange(Sixaxis.SmoothPitch, 50,-40, 0,Screen.Width)
//Mouse Buttons
Mouse.LeftButton = Sixaxis.R2
Mouse.RightButton = Sixaxis.L2
Shift + P + I + E = Any.Home //Stop script running
Being that the hardware used for these controls is completely different in the respective controllers, I made separate scripts for the SIXAXIS gyro and the Wiimote IR sensor. The Wiimote script is a slightly modified version of Carl Kenner's IR mouse script included in the GlovePIE .30 download.
var.ButtonFreezeTime = 250ms
var.PointerBump = KeepDown(Pressed(wiimote.A),var.ButtonFreezeTime) or KeepDown(Pressed(wiimote.B),var.ButtonFreezeTime)
Wiimote.Led1 = True
Mouse.X = MapRange(Wiimote.PointerY, 0,1, -1,1)
Mouse.Y = MapRange(Wiimote.PointerX, 1,0, -1,1)
// Mouse Buttons
mouse.LeftButton = Wiimote.B and KeepDown(Wiimote.PointerVisible,0.5s)
mouse.RightButton = Wiimote.A and KeepDown(Wiimote.PointerVisible,0.5s)
Shift + P + I + E = Any.Home //Stop script running
Plasma display on an LCD screen
Scripting and testing the mouse controls with yaw made me realize that the SIXAXIS gyro could conceivably be used in conjunction with the accelerometer to control an on-screen pointer, like in many Wii games. My script was far from perfect in that application, but it was good enough to play Plasma Pong with and could likely be refined to a state surpassing the purely accelerometer-based mousing scripts written for the Wiimote. It's a shame, though, that the SIXAXIS has no functional equivalent to the yaw gyro on its Z-axis, which could be used to control a pointer on the screen's Y-axis. The inherent inertial effects of movement on the SIXAXIS give it a feel that's closer to a trackball or traditional ball mouse than the Wiimote's usual proportional pointing. But unlike a trackball or mouse, there's no way to instantly "stop the ball rolling," as you can with those devices.
The Wii Remote's IR sensor and accelerometer allows for more precise control than is possible with the gyro and accelerometer of the SIXAXIS. But that's not to say that the SIXAXIS is "garbage." I was pleasantly surprised by the performance of the SIXAXIS in the games and applications I tested, many of which were not shown here. These two controllers are designed to appeal to different demographics, and function differently in games, but the flexibility and upgradeability of this generation's controllers means they can be adapted to incorporate new features.
The SIXAXIS doesn't ship with an IR sensor, but its mini-USB port is in the ideal location for such an add-on to be attached, and an infrared emitting "sensor bar" could be powered by a USB port on the PS3 console. Likewise, a shell, housing gyros for inertial sensing, could slip over the Wiimote and plug into its expansion port, giving it the functionality of a SIXAXIS.
"But, don't add-ons not sell all that well?" Typically, no, but then multimedia-focused consoles hadn't sold well, either ... until this generation. If the Wii's success has taught us anything, it's that consumer tastes change. Five years ago, it would have been considered a ridiculous notion to ask gamers to pay to drive cars which could otherwise be unlocked through the course of gameplay. And before the Wii, there was no market for performance-hindering cosmetic controller adornments.
Perhaps if the Playstation Eye were to make its way into enough homes, it could be used to detect programmed flickering light patterns of the LEDs on the front of SIXAXIS controllers, and essentially turn the controller into a moving Sensor Bar and the PS3 into a stationary visible-light sensor; a reversed Wiimote + Sensor Bar sort of setup.
In summation, there's great "next gen" technology in both the SIXAXIS and the Wii Remote, but it exists for naught if the developers don't challenge themselves and take chances on creating unique ways to use them. The dread we have of waggle-laden minigame collections on our Wiis could just as easily translate to botched epic waggle-fests on the PS3.
If Round 2 has not sated your bloodlust, I'm still open to suggestions for more games to match these controllers against each other. Just don't suggest wipEout XL. I scripted for and played that game to death already (off camera) and one SIXAXIS died as a result (of my frustration).












Reader Comments (Page 1 of 1)
2-12-2008 @ 6:48PM
Jason said...
Awesome and thorough comparison. I completely agree with the conclusion that devs need to roll up their sleeves and try some crazy stuff with both of these controllers. I've been really disappointed in most applications of the PS3's motion controls so far, and only slightly less disappointed with applications on the Wii. The main flaw with both is the lack of creativity. It's like they're just revisiting the same old and stale video game genres and just adding in motion controls. I think the DS provides a good example to follow.
Reply
2-12-2008 @ 7:09PM
TheOverlord#2 said...
Awesome.
The Wii Remote is seeming to get less gimmicky(Or is it that I dont buy most 3rd-party games?)
And as with any video, it needs Through the Fire and Flames.
(also, my 3rd party games- Elebits, R:RR(system launchers =P), Z&W, MoH H2)
Reply
2-12-2008 @ 7:14PM
Matt said...
DragonForce Rocks!
Reply
2-12-2008 @ 9:33PM
Ghen said...
Good article!
Reply
2-13-2008 @ 2:11AM
Mike Sylvester said...
Thanks!
2-13-2008 @ 1:45PM
James said...
Mike, last time I think you said something like "more on this next time" about Sixaxis USB connectivity -- did you install some special drivers or something to use your Sixaxis on a PC? I had some Google hits turn up, and installed a driver of some sort, but the furthest I can get is to have my Sixaxis show up in the Game Controllers control panel, but the buttons/axes do not respond there. Does GlovePIE talk to the Sixaxis directly without need for drivers, or did you install some sort of driver first?
Also, is there a way for GlovePIE to rearrange the controls on an existing gamepad? I'm trying to use my 360 Wireless controller or my Sixaxis with Devil May Cry 3 (PC), and run into all sorts of troubles. Like I said, I can't get the Sixaxis to respond, and whatever genius wrote the 360 drivers (for the official MS wireless dongle) mapped the triggers to the Z axis. Yes, one single axis for two buttons -- pull both at once, get the same exact input as if you were not pressing either of them. Awesome. Anyway, I would love an app that e.g. created a "virtual gamepad" and did arbitrary mapping of the output of a physical gamepad to its outputs. XPadder is close, but I think it only lets you map to keyboard and mouse keys...
Reply
2-13-2008 @ 1:53PM
Mike Sylvester said...
Doh! I did say that, didn't I? Yeah, it's a real pain getting the SIXAXIS installed on a Vista system for the first time, if you don't have drivers for it. Carl Kenner gives instructions on building a driver in the GlovePIE documentation, so I've done that and uploaded it to my own website so that others can avoid the perils I endured. I've also tested the driver to work in XP and Win2k, but it must be installed before ever plugging in the SIXAXIS. If you plug in a SIXAXIS before installing the driver, Windows may automatically install it as a Human Interface Device, and then you've got a lot more work ahead to get it to use the proper custom drivers.
http://www.globaldonimation.com/downloads/SIXAXIS.zip
2-13-2008 @ 11:29PM
Lilinka said...
Hmmm... odd. I'm trying to run GlovePIE 0.3 and still can't get it working properly, but 0.29 works just fine.
Exception EAccessViolation in module GlovePIE.exe at 00004768.
Access violation ad address 00404768 in module 'GlovePIE.exe'. Read of address FFFFFFFC.
Any way to fix this?
Reply
2-14-2008 @ 12:34AM
Mike Sylvester said...
I don't know what could be the cause of that, but I suggest sharing the issue in the GlovePIE .30 release thread.
http://www.wiili.org/forum/glovepie-030-released-t3225.html?sid=53bc75ed90791e92f1e4e957f18f8033
2-15-2008 @ 2:04PM
brian.allan said...
I'm not sure if this has been discussed here or not but the 3rd video is amazing and shows the gaming potential the Wii really has.
http://www.cs.cmu.edu/~johnny/projects/wii/
Reply
2-15-2008 @ 7:36PM
Deozaan said...
The videos are cool but the music sucks. Seriously!
I've also noticed my Wiimote bluetooth glitching out now and then. Especially when I play Sonic on the Virtual Console. Frequently I can't get Sonic to jump to his highest peak because it will glitch out and think I stopped pressing the button. This often results in me falling short of platforms or landing on enemies I should have jumped over. :-(
Reply