Archive for January, 2009

Broomball

Posted in Science with tags , , , , , on January 31, 2009 by zolthanite

Not really a post today, except to mention that I’m going to be running off to play Broomball in a few hours.  So I’m going to reproduce one of my old posts (Date: Nov 17, 2007) about engineering and what it means to me.  Enjoy:

=====

Today, at 9AM PST, my Numerical Linear Algebra professor died of acute myeloid leukimia. From what I understand, he has no wife, no children, as his family was his colleagues and students. Gene Golub, for lack of any other way to express what he has achieved in his lifetime, has been one of the most influential mathematicians in the world. It is because of a seminar he gave when I was a junior that I am here, studying mathematical modeling in order to find a way for my interests to better the world in the broadest way possible. But for the non-academic community, he probably has a much more significant impact than you would ever know, unless someone told you.

Gene’s crowning achievement is a numerically stable version of singular value decomposition for matrices. This means absolutely nothing to anyone that posts on these forums, much less can read it. It’s a series of black magic operations that I’m still not privy to, but I respect it all the same. However, what I can tell you is that even in the most elementary of ways, the SVD is the most important tool that we have access to as engineers, and we don’t even realize it exists.

I am fairly certain that for gamers in particular, he may be indirectly the reason that we can have a game like Far Cry 2, which will supposedly support real-world physical models correlating the the weather (Assuming they use real formulas to do so). Even beyond that, the people that work tirelessly on computer architecture and hardware, that have to create simulated models of disturbingly complex and empirical systems based on quantum mechanics to minimize the costs associated with fabrication facilities that cost in upwards of billions of dollars, have depended on his methods as much as anyone else. In a sense, we probably owe a lot of our modern processing power to, and people like, Gene. But it extends much farther from there.

Some of us are going to be driving to P2KX. Some of us will be flying. Do we know how much work goes into designing these things? If your car is American, it’s probably a series of well-educated guesses, formulated on prior work and knowledge with a little bit of “git ‘er dun” work at some point to meet a deadline. If you’re flying a 737 out of O’Hare to Niagra, you can narrow most of that work down to people like Anthony Jameson, who spent years of his life working for Boeing on fluid dynamics models that have served as the very basis for designing almost every aircraft that leave their doors for almost the past three decades.

In a related vein, one of my classmates is currently doing some research work for an adjunct professor that works full-time at Lockheed Martin. He is currently doing analysis on the wing models for a satellite they are about to launch within the year, attempting to determine if the satellite will fly successfully or completely self-destruct on itself in orbit over the Earth. Like the air flow models, or any other physical model for that matter, what determines this is the eigenvalues of a series of partial differential equations. Typically, we only care about the principle eigenvalue, as it is the largest and dictates the overall behavior of your system.

One of the ways the principle eigenvalue can be found is by performing the SVD.

Yet the world, as a whole, will never know, or usually care who Gene Golub is. As global technology has advanced, much like gaming, we forget the producers, the programmers, the mathematicians, the very people that allow us to push the limits of our imaginations and create a way for men to pretend they are women in World of Warcraft or Final Fantasy, or use GMail to contact a long lost friend and visit them using an e-ticket purchased over Orbitz instantly with an instantly verifiable Visa through your Starbucks Wi-Fi connection.

To be an engineer, a scientist, a researcher, means to spend your entire life dedicated to your craft in a way that many people would find staggeringly oppressive. If you work in industry, you rarely get credit for the work you do outside your department, with all of the accolades granted to the company, not you. If you work in academia, your work is largely ignored by industry, letting most of your results fall by the wayside, unless you are fortunate enough to have someone from the corporate labs division read your work and make the effort of pitching it to marketing and applying the effort to get theory turned to practice. But somehow, we never seem to stop caring and loving what we do.

Gene is by far the best of these people I have ever had the pleasure of meeting, and I know the worldwide academic community as a whole will miss his presence in a way I cannot even begin to fathom. Not only a brilliant person, but a wonderful personality and a genuinely great person to be around. He is the only person I know who presented research results as if a real person who poured his heart and soul into his work was responsible for them, and not as if it was merely a result that sprang from the ether with a name attached to the side packaging. My only wish in life is that I am able to be half the professor he was during his lifetime, and inspire those around me as he has inspired countless others during his lifetime.

Gene, I will see you in class in a week and a half.

I Have No Mouth

Posted in Games with tags , , on January 29, 2009 by zolthanite

So the reviews of Fallout 3 have all been laid out, and there’s one thing that remains consistent: If you take the game entirely out of context of the Fallout universe, it’s awesome.  If you played/loved either 1 or 2, you are loathe to Bethesda for raping your land.  Most people seem to have difficulty realizing what the old proletariat of Fallout devotees feel about the game has nothing to do with the new, scary first-person view.  Ignoring the other things, part of the hatred stems from taking all that was held to be canon, and kinda taking a good old Cleveland Steamer to it.  It would be kinda like…. this:

I, personally, have a ton of other issues, including the complete marginalizing of the importance of tagged skills, the crazily high reliance on combat, and the eschewing of everything that makes Fallout not Oblivion and making it so.

But what happens if the people who never touched a Fallout are then inspired to go back and play the first two?  What if they get past the issues with slow combat, antiquated graphics, and other shortcomings of dropping ten generations in hardware requirements (If someone complains about bugs and glitching, they can simply zoom out in 3rd person in Fallout 3)?  Will they still see Fallout 3 in the same light?  Or would it be killing Christmas for them?

That, is what I want to know.

Links for the bored

Posted in Random with tags on January 28, 2009 by zolthanite

A small list of links that entertained me today.

From my lovely SO: Stanford law student pleads guilty to running escort service

From Deadspin: Garrett Mock’s Coaching Tricks

From Jalopnik: Suicide attempt foiled by cliff

From Kotaku: Guide for map-making in Farcry 2 crowd-sourced to community

And lastly, from The Escapist: Alternative Street Fighter IV costumes in action

Hacking on Phones

Posted in Programming with tags , , , , , on January 27, 2009 by zolthanite

I recently spent a good 3 months going development for the Google Android mobile phone platform.  I also had the rare opportunity to work closely with two other people doing development on the iPhone and BlackBerry.  Communicating with each other is like putting an American, a Jamaican, and a Canadian together.  The American and Canadian think the other has a funny accent and have some cultural differences, but at least the words make sense.  Neither, however, probably understands the Jamaican, not without trying really hard to get past the slang.

Android and BlackBerry apps are both written in derivatives of Java, a language most people learn in high school or early in college.  iPhone is written in Objective C, a language which no one comes close to working with on a regular basis.

Over the coming years, the iPhones, BlackBerries, and gPhones of the future will all be sporting touch screens, app stores, and scores of developers trying to make a killer app sold to a wide market that will make them a comfortable amount of money.  Each phone has its weak spots, so if you choose to develop for one of them, you have to be fully aware of what you’re getting into.

 

iPhone

Platform:  From what I understand, you basically have to be running XCode.  Which means, Mac only buddy.  No PC for you.

Language: All iPhone development is in Objective C.  Objective C, from a syntax perspective, takes C-like syntax and adds a pure Object Oriented design philosophy to it so it’s more akin to SmallTalk.  The problem is, no one really knows Objective C on their own, and Apple’s own online resources on the subject are fairly difficult to get through.  It’s a hideously ugly language, and requires much more time than the other two devices to learn.

Imperialism: Apple runs a very tight ship with the iPhone.  Even getting access to the developers kit requires $100, so unless you’re a true trooper, you could do development on Android for free, where the only fee is for creating an account to publish to the Android Market.  

Developing on the iPhone also requires you code everything yourself.  You are unable to use 3rd-party libraries of any kind, or your app is immediately rejected.  This, coupled with the other language issue, makes iPhone development a path not for the faint of heart.

You also can’t develop anything that would behave well as a thread, like blocking I/O.  But if you’re going to do it, you have to be displaying something while that code is going on.  Apple doesn’t want you naughty programmers developing apps with rogue threads.

Publishing your app to the market also requires an approval process that can only be described as “arbitrary”.  Apple can, and will, deny your app access to the market for any reason it feels do not correctly aid the “user experience”.  Some of it is common sense.  However, we developed quite a few apps that only had a change of UI.  One of the later apps was rejected for not displaying something that none of the other, approved apps had to do.

Communication: Apple censors a lot of communication, both with the developer and among the developer community.  It wasn’t until maybe… two months ago that Apple allowed developers to exchange some code on their forums.  They partially-reversed the prior decision of non-communication to protect intellectual property among developers.  Think about that for a second.

You’re in a foreign language, you can’t help other developers with libraries, and you can’t even say “Hey, this is your problem”.  It’s a miserable situation to be in unless you’re naturally gifted.  Of course, most of this probably doesn’t matter if you end up Jailbreaking the phone.  I would probably recommend that if you are so inclined.

BlackBerry

Platform:  You’re in Windows, so it’s much more ubiquitous than OS X.  The problem, however, is you have to pick which phone you want to develop for.  The JDK they use for the Pearl, for example, is not the same as the Curve or the Bold.  Instead of being feature-based and developing for phones that support a given feature, you have to target specific phones from the beginning.  Which would be okay, except the new phones getting the newer JDKs also get the enhancements on the things that were present in legacy elements which are not backwards compatible.  Like a new look for the UI which would be completely cross-compatible.

Libraries: Java ME uses a highly trimmed version of Java SE in order to give the companies that use it control over what their VM will support on the phone by meeting small subsets of specifications, or at least I hope that’s why it’s as fractured as it is.  Standard Java libraries and JARs are not useable as a result.  RIM, therefore, has to be able to fill in the gaps with their own libraries.  The problem is, they kinda don’t.

One of the issues we ran into is that, if you use REST services your client needs to be able to construct multipart HTTP POSTs.  It’s a very tedious thing to do, and took us about a week or so of straight up hammering away at the design to get it right.  It’s annoying, because a developer wanting to make an HTTP GET or POST isn’t outlandish, and would make the lives of incoming programmers who would simply use Apache libraries for the same thing in Java SE.

Hosting:  RIM is developing their version of the app store.  I don’t know when it’s launching, although it’s supposed to be soon.  In either case, you’ll need your own hosting solution.

Android

Hardware:  The T-Mobile G1 is a sketchy phone running a great OS.  No, really.  Acquiring a GPS signal for location-based apps takes much longer than either the BlackBerry or the iPhone.  The battery in my current test phone doesn’t even fully discharge before the phone cuts itself off.  Even if the phone were to run without problem, the battery would still die within the day unless WiFi and 3G is disabled.

Camera: One of the things that really stands out on Android is the camera.  BlackBerry allows you to switch to the native camera app to take pictures, and iPhone seems to be relatively straightforward in that regard, but Android makes you manage the surfaces, previews, etc. all on your own.  You pretty much have to do it on your own, it’s completely trial and error, and it completely kills any kind of background processes you have running in order to run it (It does restart them afterwards though, if you’ve programmed it well).

Orientation:  One of the things the iPhone has spoiled people on is rotating the phone causing a change in view.  Android seems to support it in the SDK, but the actual hardware does not.  It’s problematic when you’re taking pictures, because they are all taken in landscape unless you make provisions otherwise.

Android Market:  Being able to upload without an approval process, much like publishing software, is great.  You cannot access the Android Market from anywhere except your G1.  You can’t see the comments people are leaving at all, just star ratings.  If you want to browse them, you need to use a 3rd-party site like Cyrket to do so.  Download statistics from the Google Account Console also do not update but so often.  

More significantly, and more problematic, the comments that will get left on your app are occasionally marketing bots or extremely negative comments by a group of people that are fairly profane.  Over New Year, many of the comments in the app had nothing to do with the app itself and were shout-outs and “first!!!”‘s.  Seriously, where’s the quality in that?

Google Maps:  One of the strangest things about Android is that the iPhone supports Terrain and Hybrid view with the Maps API, but Android does not.  Not much else to say.

 

My personal opinion is that, if you’re going to pick a platform, pick Android.  Especially if you’re starting out on programming, or want to teach a class on mobile app development or something similar.  It’s free, the dev support is there, and you don’t compromise as much as you would on the other platforms by leveraging what most people already know.  For exposure, BlackBerry will probably be the best bet if you can make the initial two-weeks of the app store launch with a solid, quality product.

Mirror’s Edge #2: Control-ing the Difficulty

Posted in Games with tags , , , on January 25, 2009 by zolthanite

I played through the demo a second time.  One day I’ll play through the whole game and see how well this would hold up with no other design changes, but for now I’m not willing to drop $50 on a game that doesn’t look like it has the depth or replay value to be worth more then $30.

I had forgotten about reaction time and the look button (Which is really a bad mechanic to work with for me, since it isn’t a simple camera adjustment and causes you to run in that direction).  Based on the 360 controller, and leaving some room for mechanics that may exist in the full game, I would have liked to see the following:

LB: Jump

RB: Duck

LT: Grab

RT: Generic Action

X: Reaction Time 

Y: Objective Look (See the goal without actually changing direction)

A: 180 Turn

B: Objective Lock

As a result, combat would simply be a standard QTE scheme, which would allow for some pretty awesome fight sequences with the right choreographer and consultant(s).  As in, the real potential for in-game movie-like scenes which would probably have a pretty awesome effect from the first-person view.

Now, this does read like a wish-list of “Make this game to my liking, screw everyone else” and to a certain degree it is.  At a glance, it looks like I just combined the Attack and Disarm/Pickup to be a shoulder button, added a button for Grab, and gave myself another option for looking around.  But, what would a fairly simple change like this mean in the larger context of Mirror’s Edge and how it was presented to the public as a whole?

First off, the runners don’t seem to be presented like Jason Statham-esque Transporters.  Blowing people away just doesn’t seem par for the course.  Secondly the game is about running and jumping, not about shooting and karate.  Dedicating a button for lashing out with a context-appropriate limb is… weird.  But for the areas in the game that require combat (Which I’m aware there seem to be a few forced instances), QTEs get around the “I’m completely unable to defend myself” problem and emphasize combat only when necessary.

Secondly, and probably more importantly, you can control the difficulty in easily controllable ways to accommodate gamers of lower proficiencies than at the moment.  In doing so, you might be able to say “Hey grandma/girlfriend/non-gamer, I have a really cool game to show you that is bright (and…maybe colorful?  It seems somewhat limited there, I’m just glad it isn’t dark and grimy colored), contains no over-the-top violence, and is simple to control and play”.  The Wii is a system built on this concept.  Doing this on a 360 or PS3 would be an absolute dream.  In order to do so, the controls would have to be pruned down to become less of a knowledge of the button layout while maintaining fluid control.  For new players, this limits your controls to around 3-4 buttons.  Like an NES controller with shoulder buttons.

Motion

Beginning gamers need to have access to as much control as possible without being forced to do finger gymnastics or gamepad hide-and-seek.  Remember, they haven’t developed the sense to navigate the pad without sight yet.  So, at best, they have two index fingers and a thumb to work with.  This is the reason the 180 has been moved to the A button: Access without motion.

Beginning gamers are also the main reason to keep around reaction time (which is presented as useful only for combat in the demo), because wall-jumping requires some fairly quick inputs to do correctly.  This is even more important in the case of navigating dynamic events, where the sequence of required buttons would not be a simple repetition that they may have gotten used to after a few hours of play.

A lot of the mechanics would be modified or removed completely to compensate (No RT for doors, balancing difficulty adjusted, etc.) so that the use of the triggers would be almost non-existent. 

One thing to note is the addition of “Grab”.  This comes about from my personal desire to see environmentally-based 180-degree turns without the use of the button (How cool would it be to jump over a pipe and control whether you springboard off of it or grab it with a hand and follow up with a hop over/slide under to change direction) and my frustration at being required to nail long-distance jumps almost perfectly without being able to reach out to the left or right if I’m slightly off of hitting that narrow pipe.  It would also be used for a harder difficulty setting where the player would have to manually decide to hold on to something in the environment.

Combat

Since all of the direct combat would take place in QTEs, the button sequences would simply change as a function of difficulty.  To make it as friendly as possible for beginners, frustration would be minimized by a use of only LB, RB, and A with ample time to respond before “failing”.  Higher difficulties would add more buttons with higher frequency.  Novel idea, isn’t it?

Like hell it is.  It would be like playing Rock Band or Guitar Hero.  Example would be in order.

For buttons:

  • Beginners: LB, RB, A
  • Normal: X,Y,A,B
  • Advanced: X,Y,A,B, LB,RB

Scene: Simple hand-to-hand combat (Familiar to anyone with a grappling martial arts background).  Bad Guy #412 throws a left jab and a right roundhouse with a club.  Faith responds by with a series of parries, catching the second strike at the arm, and bringing the guy to the ground.

Beginner: A (Self-defense), A (Take-down)

Normal: B, X (left-right defense), A (Take-down)

Advanced: B, X (left-right defense), Y (the “catch” to control the arm), A (Take-down)

Overall Difficulty

At the moment, I believe the only thing that controls difficulty is the activation of Runner Vision.  Adding adjustable controller difficulty and combat difficulty pretty much changes how you experience the game completely.  Runner Vision and “Easy” settings allow a non-gamer to pick up a game, experience a decent challenge and still get some enjoyment out of it.  Platforming enthusiasts could disable the complications of combat but keep the complexities of advanced controls.  Combat enthusiasts (Although why they would play this game is beyond me) could do the opposite.  And the truly masochistic can pump it all to the max.

 

So is Mirror’s Edge a bad game?  No, not by a long shot.  Would these changes make it the “perfect game” for me? No, because there’s still things about the game that prevent it from being a completely polished jewel (For example, the camera could be better utilized for wall jumping and I’m undecided about the story since the demo has nearly nothing).  But its still an incredibly fun game with a some really innovative ways of looking at how to actually achieve a sort of “delusional immersion” in a video game instead of “Let’s simply throw it in FPS and OMG I’M THE GUY!!!”.  Between Mirror’s Edge, Metroid Prime, and Bioshock, I personally think Mirror’s Edge delivers the best first-person experience.  Putting it at the same price-point, however, makes me less inclined to buy it.

And fin

Posted in Games with tags on January 25, 2009 by zolthanite

Finished GTA IV.  That ending was kinda… short?  But the amount of voice actors employed is commendable.

Mirror’s Edge #1: The Controls

Posted in Games with tags , on January 24, 2009 by zolthanite

As I noted before, I have a major problem with Mirror’s Edge that stems from the controls.  It’s not just the mapping though, it’s why they are what they are.

When I started doing the tutorial mission, my natural inclination was to LB for jumping, but RB for crouching (It’s actually LT).  Jump and crouch are on the same side, basically putting all movement controls on one hand.  It’s incredibly awkward, especially because you’re half-palming the controller if you keep your index and middle finger on the left side (It works better for the PS3 controller because it’s light and more shaped like a boomerang, but on the 360 it requires some active effort which takes away from playing the game).  As you start trying to do the zipline and wall-jumps, things don’t really seem to get better, but you get used to the controls and it’s passable.  Enjoyable even.  Then you hit the combat portion of the game.

What.  The.  Hell.

I’ll ignore the controls of combat because, honestly, they aren’t important.  The only thing that is important to note is they take up at least two buttons that could have been used to better the parkour portion of the game in a meaningful way.  What IS important is how the combat, although semi-fluid, forces you to stop in a game that is all about forward motion (I mean, that’s what parkour is all about after all).  But the disarms are martial arts, so it still flows.  Until you learn how to shoot guns.

Shooting guns makes no sense.  Really, at all.  Not in the context of parkour, not in the context of marketing the game, and not in the context of playing the game.  The whole design of Faith, her clothing, her job, does not scream “gunplay” in any meaningful way.  So why add it?  The ability to shoot a gun feels like complete pandering.  

Overall, though, you could argue for the need for combat, in order to maintain the sense of “I actually have to keep running or the cops/government/mafia/whatever will get me”, which basically requires some kind of buttons associated with combat, right?  I mean, I should at some point be required to defend myself with a series of blocks, strikes, disarms, and the like.  Doesn’t combat require I have buttons mapped for that purpose?

Not really.  I’ll get to that later though.

My original point from the previous post was that guns and parkour don’t mix.  With regards to Mirror’s Edge, the entire game was based around fluid motion and the parkour experience.  Guns and striking are not entirely fluid acts in the same sense as parkour.  What IS fairly in-line with parkour philosophy is Aikido (Aikido philosophy is built specifically around preservation of momentum for self-defense, which is more appropriate for someone of Faith’s size than the hard, karate-style approach which is used in the game).

The buttons used for combat (Strike, disarm, and reaction time) could all probably be better suited for something else more related to making movement easier.  The combat is not nearly as fleshed out as the movement, so you could probably get rid of it and not miss much.

Of course, none of this complaining serves a purpose without presenting the alternative.  If all you’re going to do is complain about how things are constantly without offering up a counter-proposal/idea you’re no better than a posturing politician.  How do you improve from where it is now, beyond allowing button-remapping (Which doesn’t address many of my concerns at all)?  The short answer is Quick Time Events and scaling the controls.  But, I have a little bit more to say about it than just putting an alternative button mapping and calling it a day.  I need to sit back down with the demo to put it to the “test”, and when I do that I’ll follow this up with how you would and why it matters.