Sunday, January 20, 2008

TEAL: Propeller Arena - Earn Those Wings

Admittedly, there's not a lot to Propeller Arena. The closure of SegaNet, paired with the game's "non-release" status leaves the network option woefully impotent. Without it, the game is left with three game modes: Championship, Quick Battle and Training Arena. Since this was my first serious play-through of the game, I decided to test the waters with a little training.

Training Arena is divided into three parts, each part with a specific stage for each different character.

Propeller Stunt
The airborne firefights are quite the draw, but it's the trick system that really fascinated me on my first run of the game. Various turns and maneuvers can be executed by way of Street Fighter-like command inputs. A quarter circle here, a half circle there, all punctuated with the designated trick button (X by default). Being able to quickly pull a 180, then slide effortlessly to the left firmly places Propeller Arena in the "arcade" sub-genre, discarding realism for fast-paced action.

The Propeller Stunt portion presents you with a list of commands you must complete within a fixed time. Complete the list for a time bonus. Fail to do so, and you earn yourself a miss. Fail in completing three lists or crash, and the game is over. String together stunts one after the other nets you a combo bonus, multiplying the points earned on a trick by the number of tricks in the chain. 

In addition to a combo multiplier, you can increase the value of each trick by flying through each green ring. Do a trick with no rings under your belt and you've got the base value of 50 points, but grab a ring, and you're doing x2. It's an easy task getting through each string of commands, but, in case you can't tell, the real fun comes from going for the high score.

Propeller Stunt is probably the easiest of the Training Arena modes. Each stage can be cleared easily, even after missing some of the more difficult tricks, but it doesn't make it any less fun. What does subtract from the enjoyment is the reliability of the command inputs. I often find myself turning 180° (↓➘→➚↑ + X) when I mean to go ninety (↓➘→ + X), or decelerating (L button by default) when I mean to Air Brake (hitting the brake button quickly twice). This becomes more of a problem when you need to rely on these tricks to effectively clear some of the other training levels. Other than that, though, there's much enjoyment to be had.

Propeller Challenge
A medley of skill-based missions, Propeller Challenge can ask you to do anything from collecting icons to blowing stuff up. Some challenges asks you to participate under a different set of circumstances like flying with reversed controls or in plane-freezing weather. Suffice to say, the range of difficulty is as varied as the missions, from the pedestrian (and enjoyable) 8-bit Beat level, where you attempt to blow up a meteor, to the nerve-racking Hex Candy mission, where you have to struggle against the previously mentioned reverse controls.

I think I took a couple of tries at least for each mission, sometimes on the verge of hemorrhaging over the difficulty. Of course, that made completing the mission all the more enjoyable. If there's one thing I'm painfully aware of, it's my affinity for punishing difficulty.

Propeller Agility
The penultimate test of control mastery, Propeller Agility asks you to fly through all the rings on a given course. Missing a ring incurs a time penalty, and if your time to complete exceeds the time limit (including time penalty), you get a nice F. It takes a knowledge of some of the basic stunts and a little luck (due to the aforementioned control problems) to clear all of these. Towards the last levels, you really have to have a hold on the Lightning Dash and Air Brake stunts if you want any chance of clearing the levels. It goes a long way towards your satisfaction of clearing Level 8 knowing that it took a bit of dexerity and competence to get you there.

Three modes, twenty-four levels total, and a growing  sense of intrigue. This Propeller Arena primer has left me anticipating what Championship has to offer, but for now, I'm turning the game off. I've had enough challenge for one day.

TEAL: Propeller Arena - Prologue

Butt rock.

Back in the beginning of the Sixth Generation, back when we still compared consoles by the "bitpower" of their processors, back when journalist integrity wasn't the concern of the many internet-faring gamers, I was less discriminating of where I got my industry news from. All I needed were the previews; tidbits of information on the exciting features of imminent releases and the screenshots to corroborate them. In those days, I trekked no further than IGN.

At the time, Sony and Sega were the only factions to show up to this season of the console wars, and I had sided squarely with the Dreamcast. Two years had passed since Sonic Adventure won me over, and I was eagerly awaiting all the news I could get on every new release. Of course, there were the obvious blockbusters, but one of the things that I appreciate now in the Dreamcast is the number of unconventional games to be found on it, the same unconventionality Propeller Arena could be accused of.

Propeller Arena is an action-oriented, flight game, focusing on dogfighting and aerial tricks played out by the usual cast of diverse, over-the-top characters. I'd like to think that the reason Propeller Arena sticks in my mind was more, logically. Perhaps the prospect of online dogfighting seemed fun. Or maybe it was the amusing cast of characters and wide array of environments. Then again, I am an arcade fan. The chance at some old-fashioned arcade action could have been enough to pique my interest. Strangely, though, that's not what pops to the forefront when I recall my early excitement for the game.

The first few previews I read classified the soundtrack as belonging to a genre I hadn't come across before. 80s-esque power chords, cheese-filled lyrics, and generic riffs. The name of the game was butt rock. I don't know why the term seems to hold such fascination for me. Well, that's not true. Where others might see "butt rock" as a derogatory term, I find myself thinking, hey, I could kind of get into that. As such, the chance to partake in this game, a vessel for an unseen frontier in music, seemed to be what placed it on my wishlist. What makes it so hard to wrap my head around now is that, in reality, "butt rock" has the least to do with Propeller Arena as it presently exists. The "final" US version features more of a punk vibe than anything, licensing bands from Fat Wreck Chords. Even the AM2-produced music doesn't spring to mind visions of spandex and big hair.

I say "final" because, though Propeller Arena was pretty much gold-master, it never saw an official release. September 11 put it on the shelf for sensitivity concerns, and the death of the Dreamcast saw the game buried alongside Sega's last console. Of course, that's not gonna stop me from playing it. Like many of the other nearly-released versions of forgotten games, Propeller Arena has found a venue on the internet. It's a trivial matter to find a torrent of the US version, and the resulting disk image can be burned and played in the Dreamcast without hassle.

It might never see the limelight, but the least I can do is give it a thorough play-through. I've dabbled in the game before, usually quick bouts or training missions mostly, but I've never given it the attention this gaming anomaly deserves. I intend to rectify that, and intend for you to follow me.

Time Enough at Last

In an effort to affect more blogging and perhaps elicit more gaming in my schedule, I've decided to start a new "feature". I've had the idea for a game-centric series for quite awhile, but until recently I've had a relative full queue of game and little time to partake in them. Thanks to winter break, though, I've finished Kingdom Hearts II, gotten through Nanostray on Expert and completed Harmony of Dissonance to my current satisfaction. With those games off the table and any others too far out of my mindset to revisit (It will probably take me a week alone to relearn the patterns of Gradius V), I can start fresh on a new game, regaling anyone who will read of my virtual ventures. Funny how I timed it perfectly with the start of the spring semester, though. Perhaps this is exercise is en route to failure, but I'll try to make it an interesting ride.

It took me awhile to figure out how I'd write about these games. I knew I didn't want to really review the games the way many gaming news outlets do. I have no illusions about my own preferences. I know my tastes are eclectic and at times rather eccentric. Writing a review would seem like an arrogant endeavor; trying to convince you the merits I see in P.N.03 should be the ones you value doesn't appeal to me. Really though, at the end of the day, I'm just one of the few who can't see themselves assigning ratings, finding a place for each game on a 10-point scale. I just want to play the game, enjoy the game, and write the game.

Hopefully, Time Enough at Last will be just that; a retelling of my travels through the many digital landscapes of my DVD binder. At the very least, I might convince someone to try out Boogie Wings, which is all I can really ask for.

Saturday, January 19, 2008

code/book 1.5: Out in the Open

For the most part, Dashwar has been released. I made a post on the Weewar forums announcing my widget earlier this week, hoping to get some input from someone other than myself. I had planned on giving it a broader release, submitting it to various download sites and widget repositories, but there are a few bugs I need to squash and features I need to tweak before I feel it's ready. For now, I'll consider it in beta.

Not that it isn't useful as is. Case in point, I found myself dropping in to Dashboard this week to check the progress on a few games, and lo and behold, my account type had changed from Basic to Pro. Turns out that, Alex, one of the guys at Weewar liked the widget enough to deem it fit for compensation, to the tune of three free months of Pro status. Very nice gesture, if not a bit counterproductive. How does he expect me to work on Weewar when I only have three months to squeeze all the usefulness out of my Pro account?

Here's the website and the release for interested parties. Enjoy.

Monday, January 7, 2008

code/book 1.4: Do Notice

Growl support has been added to Dashwar, and with that, the last of my feature list has been implemented. It took a bit of work , getting the framework to load from the plugin, but it was a trivial affair afterwards.

The only thing left now is a little cleanup and some error checking and, dare I say, I'll have a version 1.0.

Tuesday, January 1, 2008

code/book 1.3: Fire and (Don't) Forget

Happy New Year! Time for an update.

Dashwar can now displays a status item in the menu bar whenever you have a waiting game. The title changes to the number of waiting games you have. When no games need your attention, the status item goes away.

Getting the icon to display took awhile. Widgets aren't self-contained applications. As such, when you try to get the resource path programmatically, it ends up looking inside DashboardClient, the program that runs widgets. The widget plugin, which contains all the Cocoa stuff I'm doing for the status item (different from the Javascript of the rest of the widget), is its own bundle. This means it has its own folder that contains its own resources, mainly the image I wanted to use for the menu icon. Luckily, finding the bundle for the plugin, and subsequently the resource folder for that bundle in code wasn't too hard.

Another problem arose when sending data from Javascript to Objective-C. Conversion from basic Javascript types to Cocoa types should happen automatically, and for the most part, it is. Strings change to instances of NSString and numbers to NSNumber, but arrays, which should become NSArray objects remain WebScriptObject instances, the type for not-so-basic objects passed from Javascript. Of course, instead of trying to figure out why they weren't passing correctly, I decided to just send it one object at a time. I've wasted enough time trying to fix this kind of problem in other projects to know when to let go.

I had to provide a preference for displaying the status item, but that was only a minor headache. I'm quickly closing in on the end of my feature list, and I can't remember the last time that's happened.

Thursday, December 27, 2007

code/book 1.2: Expanding On It

Update time.

You can now hit a button to reveal a list of players for each game. The current player is marked in bold, and defeated players are marked in gray. Plus, the expanding is nice and animated, thanks to Dashcode's AppleAnimator.

This part took longer than I expected, as most of my work on the widget this week has been towards this feature, mostly, due to rewriting.

Also, I had to redo my handling of updates to prevent the widget from resetting the view. I guess it was about half and half between this and including more game info, work-wise.

Anyway, here's a new pic.

Sunday, December 23, 2007

Let It Snow

Three hours on the road, including fifteen minutes in a ditch.

And I didn't even get to Topeka.

So let the damn thing snow.

Saturday, December 22, 2007

code/book 1.1: Great For the Confidence

It's nice to finish working on a project, to put it away for the day with a sense of accomplishment instead of one of frustration. These past three days, I've come away from working on Dashwar content in the notion that I had implemented all I desired. It's such a contrast from working on my other, bigger projects, where most days are ended due to a general feeling of fatigue, a hope that a good night's sleep and a bit of distance will present a bit of clarity or insight into the unyielding, ever-growing issues of the day.

It's strange, though. Regardless of  how I leave, whether in victory or defeat, I still feel the same yearning to get back to work. Instead of a thirst for revenge, a need to prove my domination over all that is code, I come back to Dashwar with an eagerness birthed from a sense of exploration. I've done this much so far, what else am I capable of?

Anyway, here's what great, new heights I've reached. Pretty modest, but I'm still pretty happy with my first efforts in JavaScript:
  • Get User Info - The first thing I did was display the username, account type and score for the user.  Once I muddled my way through relearning how the DOM works (remember: firstChild), implementing the display was cake. Even displaying the profile image was easy.
  • Display Games - Using the Headquarters XML file, I was able to get a list of all current games. I was able to make a scrollable list of games quickly, save for a view display problems. It seems that with all these elements with dynamically calculated dimensions, trying to refresh the scroll area when it isn't displayed isn't of much use (read: refresh when you show the front of the widget). Finding out why the thumb for the scrollbar wasn't showing up was most of my yesterday.
  • Show Waiting Games - With a hit of F12 and a quick glance, I can see where my next turns need to be taken. Waiting games are highlighted in yellow and display the handy message icon that Weewar.com uses.
There are a few other, minor details (clicking a game name takes you to it, clicking your username brings up your profile, etc.), but the main points are there. Like I've said, I'm eager to get back to work on Dashwar, so I'll wrap this up with a little visual preview of the fruits of my labors.

Friday, December 21, 2007

code/book 1.0: Dashwar

In an effort to fill the void that my blog has become, I've decided to actively seek out topics for exposition, not so much to express my opinions, but to sort of cogitate by exposure, exploring my thoughts by revealing them to the public. Since I do little else in my free time than code and game, I guess it follows that I'd want to ruminate on one of those two subjects.

As such, I've decided to take a stab at chronicling my attempts at programming. Maybe articulating my experiences will help reveal solutions to persisting problems. Perhaps reader comments on my endeavors will help to motivate me in completing my projects. I don't know; I just want to put this Blogger account to use for a change.

So here it is.

code/book 1.0: Dashwar

Whenever I get the chance (and whenever my turn is up), I like to get in a few rounds of Weewar with friends. The problem is, I've yet to find a way to efficiently keep me informed of my martial obligations. pyWeeStatus freezes up on occasion, and I've yet to get WeeHQ to work for me. Now, I'm sure a quick email correspondence between me and one of the developers of these utilities would fix the problem, but that's just too easy.

With the release of Dashcode, I've been meaning to try my hand at making a widget. I've done web development before, but very little of it involved JavaScript. Learning a new language seemed a bit daunting, but somewhat necessary, what will the advent of AJAX and all.

Taking my need for a notification system for Weewar and my desire for a little JavaScript education, I've decided to make Dashwar, a Weewar Dashboard widget. As it stands, I have a few expectation for the final product.

  • Show Games Needing Your Attention - This is, of course, my main goal. At the very least, I have to see which games are waiting on me.

  • Show Game Details - If a games is not wanting on me, it would be nice to see who the game is waiting on (so I can yell at them), as well as who's playing and who's been knocked out in my absence.

  • Growl Notifications - I've been meaning to learn about using Growl, and this seems like a good project to test the waters with. After all, activating Dashboard takes some forethought. I'd like the computer to tell me to play without being asked.

Hopefully this is the start of something interesting. At the very least, I'll get a few posts out of it.