Sunday, June 6, 2010

The JRPG Malaise

  Good article over at Destructoid about Bioware's take on Japanese RPGs versus those being put out by western game companies.  I agree with the opinion that Japanese studios have grown complacent, although I would argue  that the level of innovation is not necessarily the problem.  I concur with Jim Sterling (the Destructoid author) that Lost Odyssey is the last great JRPG that I played, along with perhaps Xenosaga epsiode 3.  Both of them provided innovation in certain aspects of their play, but nothing was ground-breaking.  In Lost Odyssey, your immortal characters could permanently learn skills from the mortal ones and accumulate fairly large libraries of skills from which you could pick and choose.  In Xenosaga, emphasis was placed on using enemy weaknesses to ability types to 'break' them, allowing a much greater amount of damage to be dealt.  It also let you return to previous areas via a device called the encephalon to retrieve treasure and level up via grinding.

  Why they both (to various degrees) succeeded in my opinion has little to do with the things I just mentioned.  I generally found the combat in Xenosaga 3 to be somewhat irritating and after a while repetitive and bland.  The immortal skill mechanic in Lost Odyssey was nicely explained in the context of the game, making it seem natural rather than shoehorned, but otherwise could have been provided with extra item slots.  Yet I'd take either game over Final Fantasy 13 as an example of what a good JRPG should be.  Why is this?  Because both Xenosaga 3 (and the series overall) and Lost Odyssey got the core tenets right: they had stories you could become lost in, and they had characters about which you cared.

  I'm not going to go into detail about the story and characters here, because that would takes pages and pages and this is a subjective analysis in any case.  The point is that when I played Xenosaga and Lost Odyssey, I was invested in the story and characters.
  As much as I hated Shion's constant utterance of "KOS-MOS!", Xenosaga's characters felt real and sympathetic.  They were individuals with colored pasts and checkered personalities, and pitted up against villains who, despite committing great acts of evil, were much the same as your protagonists, only farther along the spectrum of irrationality.  And as much as I was confused by the ridiculously complex Jungian-Christian story, it was creative and admiringly detailed.
  Lost Odyssey's characters were successful in a similar manner.  While more black and white than Xenosaga's, they have enough history both with each other and with other people and places in the world that you can't help but be on their side.  The story is simple at its core but is told well and remains strong throughout the game.

  Sterling's last sentence in the article reads:
        "If anything, JRPG makers need to stop attempting to be 'innovative' and concentrate simply on making a game that doesn't completely suck."
  I agree that the fundamental problem I have with JRPGs like FF13 is that in general, it sucks.  Where I disagree is the idea that innovation is what causes the suck.  As imperfect as the combat is - and believe me, I am in no way arguing that FF13's combat was fantastic - the battles are far and away the most entertaining thing in the game.  That is the problem.  In a JRPG, the most entertaining thing in the game should be the story, followed by the characters.  Combat and other systems follow.  The story in FF13 is bland and uninteresting.  It is basically on the same level of quality as the very first Final Fantasy, but does not have the same excuse of being a groundbreaking step in video games.  Nowadays, you have to do better.  At the very least, you have to be on the same level as your previous output, and most other Final Fantasy games outclass 13's story.
  FF13's characters are in an even worse place than its story.  I actually skipped some cinematic scenes on my play-through because the dialogue was so bad and I didn't care enough about what the characters had to say at that particular moment.  Therein lies the tell-tale sign that FF13 sucks.  I was so far from being invested in the characters that I wanted to get back to the combat system that Jim Sterling so vehemently dislikes.

  Japanese RPG studios need to realize one thing: no matter how much you innovate in developing game systems, the heart of an RPG will always be your story and the characters that operate within its confines.  If one is weak, the game will be tolerable but not great.  If both are weak, the game shouldn't even be labeled an RPG.  If you have voice acting, the dialogue needs to be strong enough that the characters avoid sounding like single-faceted idiots (read: Vanille, Snow) or generally uninteresting grunters (read: Lightning, Hope).

  Look, Square-Enix (and other JRPG makers).  Go play Uncharted 2.  See that right there?  That's a great story, and great characters, and great voice acting.  Use that as your standard, and base an RPG around that standard.  Or if you don't require a more modern example...go play FF6 or Chrono Trigger again.

Wednesday, June 2, 2010

Final Fantasy 13

Well, it only took me what, 6 months to finish this game?

And it wasn't for lack of trying, believe me.  I kept shying away from playing it, because to be blunt, it wasn't that great of a game.  The graphics were fantastic, I can't argue that.  The combat was certainly innovative for a Final Fantasy.  Music, while not blowing me out of the water like some of the other scores in the series (e.g. 6, 7), was in general very good.  I guess my overall problem with Final Fantasy 13 is that, well...I don't feel like it should have been given the title.

By that I don't mean to say that the game isn't worthy of being called a Final Fantasy or anything so idealistic.  Quality factors into it, but not in terms of a rating from 1 to 10.  What I mean is that the elements of a game which a Final Fantasy is expected to do well, the essence of what made Final Fantasy games so great, is either glossed over or poorly done in the thirteenth installment.

It's not the linearity of FF13, nor the deviation of the battle system.  In fact, I applaud both as evidence that Square-Enix, or at least persons working at Square-Enix, have retained their testicles in the face of an industry all too prone to taking the easy way out in order to cash in on a successful franchise.  I harbor no doubts that Square cashes in on Final Fantasy, don't worry.  But if that's all they had wanted to do with 13 they could have put a lot less work into it.  While I would have liked more control over my party in battles, the strategic element offered by the paradigm system was legitimate and enjoyable.  The fights ranged from overly difficult to ridiculously pathetic, but that's a reasonable result of implementing a new system that you haven't had time yet to tweak.  The closed-corridor areas were disappointing purely because I'm accustomed to being able to explore the amazing worlds that Square creates.  [Aside, sorry Enix, but it'll always be Square first to me].  And I will admit that it was easier not to get lost in myriad side-quests because of said linearity.  Easier.

No, my beef with FF13 is that a Final Fantasy should have two things done well: story, and characters.  Square has missed the mark on both of those in consecutive games now in my opinion, and it's now officially a problem. I forgave them 12.  I looked past Vaan, although it was difficult.  I should have forced myself to see the degradation in primary protagonist from Tidus to Vaan, but the series had always been so good to me I let it go. 12's story was uninteresting and vague at best, irritatingly confusing at other times.  Characters like Balthier and Ashe were halfway decent, but still fell well short of the mold of greats like Kain, Locke and Aeris.  A little bit of intriguing character depth was flashed, but almost immediately burned up into obscurity.

13 is worst still, and this troubles me.  I understand that Square generally panders to its Japanese audience.  Really, I do.  But classics like 4, 6 and 7 were targeted at a Japanese audience as well, and yet they still managed to be excellent even in our western eyes.  A good game will bridge audiences easily if presented well.  Square either failed to realize that emo J-pop culture cliches whose every other line is a neanderthal-ish "uhhh..." do not translate very well across the eastern pond or simply face-planted in their efforts to make them appeal to loyalists of the company who are neither twelve years old nor fucking retarded.  I think that's what offends me the most.  Square has, for the second time, served up a decent if somewhat bland story wrapped in a thick shell of shitty dialogue and transparent, dull characters.  Dead Naughty Dog writers could come up with something better.

That bears repeating: a corpse sitting in Naughty Dog's studios could create better characters and dialogue than what your guys spent 5 years doing.  Five years!  I can't get a junior fucking programmer's position with Studio Hobo out in the dumpster behind Denny's, but somehow Square has hired the writers who came up with this drivel.

Square has one recourse out of all this.  They built their precious little game engine for the PS3 in order to show off all those fancy graphics, and I will grudgingly admit that sort of effort can skew a project's resources to the point where it will negatively impact other aspects of the game.  Which is why Square has one more Final Fantasy to convince me that they still know how to present coherent text and multi-faceted character development to people of high school age and above.  If they continue their descent into this weird form of senility, I'm pretty much renting from that point on, if I even deign to spent the money on a rental.

Please, Square-Enix (who's a good widdle Enix?), I know you can do better.  You still have some of the major players who've been with you since the glory days, and we're far removed from the time when money was an issue for you.  I know you have the resources and the vision to recapture my imagination.  All it takes is to afford the proper care for the core tenets of Final Fantasy: great story, great characters.

Love,

Dirty

p.s. Also could you design a game system where I don't have to buy a goddamn strategy guide or look up a FAQ online just to figure out how to not feel grossly underpowered without spending a bajillion hours on the game?  Seriously, you only need to convince me to spend 50 or so hours in there for me to blow my sixty bucks.

Tuesday, June 1, 2010

On Notice

Okay, I know this is probably old hat, but I just discovered it and it's hilarious.

Here's my custom on notice list:

Sunday, April 18, 2010

No Covariance in Projections? No Problem!

I figured out a way around the fact that until XNA 4.0 gets updated for Xbox development, you can't use a Projection<Y> where it calls for a Projection<X> even if Y inherits from or implements X.

Just for completeness' sake, an example projection would be having a generic class that takes a type parameter.  Specifically, I was working on a CollisionEffect<T> class, where T is any class that implements an interface named ICollideable, indicating that the class' objects can take part in collisions.  In this case, CollisionEffect<T> is a projection from T -> CollisionEffect<T>.  A CollisionEffect<Player> is an effect that can be applied to a Player during a collision.  Since I wanted objects to be able to hold effects intended for different kinds of collideable objects, I figured that having ICollideable also provide an IEnumerable<CollisionEffect<ICollideable>> would do the trick.

Well, because C# 3 doesn't allow covariance in projections, I couldn't store a CollisionEffect<Player> as a CollisionEffect<ICollideable>.

The solution?  An ICollisionEffect interface that provided non-generic versions of the information in a CollisionEffect, i.e. versions using the base Object class.  By having CollisionEffect explicitly implement ICollisionEffect, a Player can have a List where the elements can be any allowable CollisionEffect<T>.  During a collision, a collideable object will call the other ICollideable's GetEffects<T> method, which retrieves from the List<ICollisioneffect> any CollisionEffect<T> objects where the type parameter matches.

Once I can actually have projection covariance in C# for Xbox programming then I'll get rid of ICollisionEffect since it would become completely extraneous, but for now it's a useful trick that lets me have almost exactly what I wanted.

Friday, April 9, 2010

Scala Candy

There are a lot of good things about XNA Game Studio and C#.  But damn do I miss Scala traits right now.  In fact, I'm missing quite a few of the functional constructs I don't have in C# 3.  I wish Microsoft would stop dicking around with phones and get Xbox support for XNA 4.0 already.

Thursday, April 8, 2010

Collection Nuances

Yesterday I added a screen component class to our XNA libraries that's analogous to XNA's own game component class.  The difference is obvious: screen components only exist and should be updated, drawn etc. when the screen is active instead of the game loop.

Arguably you could just use the Enabled and Visible properties in DrawableGameComponent.  However, I think the clear separation makes the code easier to understand and it automates the calling of critical methods like Draw and Update within a single screen's loop.


The issue that arises is concerned with screen components that are dynamically added during the game runtime.  Due to the fact that some screen components are created by other screen components during updates, when to actually add those newly-created objects to a screen's collection of components is slightly tricky.  It comes down, I think, to a single consideration - do you want newly-created screen components to be updated during the same update loop in which they are created?  My initial answer was no, partly because I was using iterators to traverse the component collection and the iterators would naturally get invalidated if I tried to modify the collection during the traversal.  So instead I hid the raw collection and made AddComponent and RemoveComponent that would modify temporary lists.  At the start of the next Screen.Update call, before the components themselves were updated, the lists of objects to add and remove would be combined with the main collection, and iterator-based traversal could continue as normal.


I wonder though if it would be better to traverse the collection using raw indexing and let new components be updated immediately.  It would simplify the code, certainly, though the additional complexity currently in place is pretty minimal.

Wednesday, April 7, 2010

Rehashing Final Fantasy

Ok, this is hilarious: Hironobu Sakaguchi: The Last Story Not a Final Fantasy Rehash

Quite frankly, until Square comes out with a Final Fantasy that measures up to the first 10, I'm all for Sakaguchi "rehashing" the series.  Lost Odyssey was a better game than either FF12 or FF13.  I'll have a post up later today about my experience with 13 thus far.