Projects

About Me

Saturday, May 23, 2009

As my Xbox360 purchase has been put on hold yet again, kind of indefinitely this time, I went with the PC version of Mass Effect. Unlike Bioshock Mass Effect does not support a gamepad, so I had to go with mouse and keyboard, which however worked quite fine, as the UI of Mass Effect has been changed quite a bit to work well with mouse and keyboard.

The game puts you in the shoes of Shepard on a quest to save the galaxy. RPG typical you can create a custom character at the start of the game and as always I chosed to pretty much skip that step and go with one of the provided default character. I never quite understood what the point is of having the choice happen before the game and not actually in the game itself, as is for example the case in Gothic 2. Having to make a choice about your characters abilites before the game even starts is not only time consuming and annoying it also forces you to make descisions about powers and abilities that you have no idea about how they will influence story and gameplay. Its bad game design that has its place in western RPGs for way to long and I would strongly prefer it if games would just skip it and leave customization to the gameplay itself.

Once beyond the character creation the game actually starts and luckily leaves most of other RPG issues aside. The fighting in Mass Effect is not just third person shooter like, its pretty much a straight third person shooter, including cover mechanic and tactical commands for your squad members and it plays suprisingly well. The fighting is also seamlessly inegrated into your normal gameplay, so you can pull your weapon whenever you like.

Aside from walking on foot you also have a vehicle at your disposal, which seems to be a 3D version of that thing you drove in Moon Patrol, with which you do exploration on other planets. Driving around in the Mako is a little less perfect then the shooting, as that vehicle seems to be pretty much weightless and it bounces around like crazy when you hit an obstacle, but it does its job very well of giving the game some varity and scale.

While all that driving around and shooting is lots of fun, the game however has some really annoying problems with the way it handles death. The first one is that you can die really quickly in this game, some death are instant one-hit kills, if you don't dodge a blast you are dead. Which by itself wouldn't be that bad, but combined with the lack of proper auto-save, unskipable cutscenes and a terribly long death animation slowmo can get extremely annoying. The game also does not allow saving while in the mid of a fight. So you are basically stuck with retrying the same fight over and over again till you figured out what kills you and how to avoid it. The good thing however is that you can toggle the games difficulty at any time, thus basically reducing the one-hit kills to simple shots that destroy most of your shields, but let you life, thus giving you the needed time to properly plan the attack and evasion. On the "Casual" setting the game is really easy and those issues pretty much never arrive, but on the higher difficulty they can be pretty much game breakers.

The dialogs are another huge part of this game. Mass Effect features an innovative dialog wheel that along with great character art gives the game a cinematic feel. The dialog wheel unlike normal dialog selection always pops up before the last line of dialog has ended, so you can smoothly chain dialog together without interruption. Similar to Kotor the dialog in Mass Effect features good, neutral, evil choices for dialog, which happen to be mapped to the top and bottom part of the wheel and thus allows easy selection without convusion.

The dialog wheel is however not without problems. One small issue is that there is a noticable disconnect between what your character says and what is displayed as choice on the wheel. Due to the good/neutral/evil answers that is never really a practical problem, but it often feels unnecessarily confusing. Another issue is that already selected dialog options aren't removed from the list of available selection, thus leading to accidental repetitions of dialog, made worse by the lack of a proper skip button. You can skip dialog by pressing space, but as space also happens to trigger the next dialog line you might end up accidentially selecting an option instead of skipping dialog, it would have helped if those two functions would be on separate keys.

The bigger problem however is the dialog itself. The good/evil separation causes the dialog to always be flat and predicable, you hardly ever need to chose an answer, instead you just go with the default depending on if you play good or evil. The dialog also just goes a little to smooth, if you select the good answer, the result will pretty much always be good, unexpected consequences just never happen in the whole game. The dialog also happens to be a little to exposatory for its own good, you can asks almost every character about their backstory, the universe and everything and they will happily chatter along. But while you might gain some information that way, thats just not how dialog should work, you are talking to a character after all not an encyclopedia.

Another big issue with the dialog system is that the choices you have available are the result of your RPG stats, if you don't have invested any points in Charm, you won't have a certain answer available. That doesn't sound so bad by itself, but it caused the game to basically run into a brick wall for me a few times, when the lack of choice means that you can't actually say what you want to say and the dialog thus gets into a loop. There was a key scene in the game where I had to basically had to decide about the life or death of an NPC and the lack of choices predetermined the outcome for no good reason. This was hugely annoying and frustrating. Luckily I had a few level points left, could use an earlier save and invest everything in Charm and thus go past that point with a satisfying selection, but it was a huge immersion breaker non the less and feelt just utterly arbitary dialog restriction. Similar issues happened before a few times, but luckily after having maxed out Charme those issues where completly gone and the dialog become much more enjoyable.

In terms of overall story the game is a bit of a mixed bag, it starts out interesting and it ends in a great final, but what happens in between feels a little arbitrary and disconnected. There are to many quests that have little to do with the main plot and feel like a waste of the characters time. A story that basically consists of a race against time just isn't the best place to put random side quests and exploration into.

One thing I liked quite a bit was the decryption mini-game, which is used to open some crates to get the items within. The game happens to be basically a circular version of Frogger, where you start on the outer ring and have to move your cursor to the center while obstacles rotate around and a clock ticks down. What makes the game work is that it provides a good amount intensity for the few seconds it takes to solve it. The controls also happen to be very simple and direct, so if something goes wrong it is basically always your fault, not the games one. It is so far the best mini-game I have seen of its kind. Mini-games in most other games almost always ended up being to boring or chumbersome to use and took the intensitivy out of the game, instead of increasing it (see Bioshock).

While much the above might all sound quite negative, my final take on the game is however pretty much nothing but positive. The game picks bits and pieces from the RPG genre, Gears of War, Full Spectrum Warrior, Moon Patrol, Star Control 2 and plenty of more and combines them into and absolutely awesome epic space adventure game. For all the faults that the game has, there are simple enough workarounds that lets you enjoy the game to its fullest. The dialog might not always be as gripping and interesting as in the best adventure games out there, but thanks to the terrific character art and voice acting it is still way more interesting then your average RPG. Not each piece might be the best you can find in its genre, but the simple fact is that there just isn't anything that combines as much as Mass Effect does. There just isn't another shooter around that also gives you great dialog and free space exploration.

My first play through the game took around 16h, focusing pretty much only on the main quest and that was fun enough, but the game really truely gripped me when I went back and sank another 10h into it doing each and every side quest I could find. The combination of old school exploration gameplay with modern day shooting and dialog is simply something that absolutely clicked for me and I didn't have that much fun with any game in quite a long long while.

Update: I played through the game now again for a second time, this time choosing the adapt class instead of soldier and going mostly with evil choices in dialog instead of the good ones. Overall it doesn't really change much, most of the quests you get stay exactly the same and even if you reject a quest in the dialog you will often still get it into your journal, as the game doesn't really allow you to be a bad guy. Some of the adapt powers seem kind of useless, lifting hardly ever worked and stasis seemed pointless, throw and singularity on the other side, when leveled up to the max, could be kind of fun. The assault rifle however continued to work best in fights. I however did discover a tiny few quests that I have missed the first time around and I learned that the licenses you can buy in shops are actually useful, as they increase how many grenade and medigels you can carry. On my first play through I pretty much completly ignored the shops and thus licenses. The shops themselves however still feel overall useless, aside from the licenses there really is never anything interesting to buy, as the gear you will find in random container is good enough and gear in shops always way to expensive. Another thing I learned that its a good idea to switch of the auto-leveling for your teammates, as that will allow you to increase their electronics and decryption skills which you need to gather items from containers.

This review will be quick, as I haven't finished the game beyond the first five levels. In terms of gameplay Zack & Wiki is pretty close to Gobliins, meaning that while it shares a few core mechanics with the adventure genre, its really isn't one, as story is pretty much completly non-existent. In Zack&Wiki you have set pieces that provide you with puzzles and obstactles that you have to overcome to reach a tresure at the end of the level. Navigation is done point&click style with just the Wiimote. Puzzles are all environment or motion based, as you don't have an inventory and can only carry one item.

On the plus side of things solving puzzles can be fun and there is plenty of motion detection gimmicky to toy around with. But the game sadly tends to ruin the fun quite effectivly. Motion detection is as usual not exactly reliable, so you can just randomly waggle your way through the game. Puzzles have the tendency to be on the trial and error side of things, not following logic. The objects you use are for most part the result of you magically turning enemies into object, i.e. there is no clear connection between the objects and the world, its just ad hoc magic that requires you to try everything in the world. What however absolutely kills the fun is dieing. Zack&Wiki boldly ignores the last two decades of adventure gaming and constantly kills the player, turning its try&error gameplay into an exercise in frustration. Made even worse trough the lack of savepoints, so you have to restart the level completly each time.

Long story short, for the time being I gave up on the game, just to annoying to play.

Time for a quick series of game reviews. First in row is ArmA, the successor to Operation Flashpoint, which happens to be one of my favorite games of all times. ArmA doesn't try anything risky, instead it pretty much continues Operation Flashpoint. The graphics are improved, the GUI is a little streamlined, now giving you a default action for objects and a big menu to collect weapons, but the core gameplay is pretty much exactly the same as before. So much actually that ArmA seems more like a face lift then a real successor. This is kind of a downer as Operation Flashpoint had quite a handful of issues such as awful indoor fighting, which mostly continue to persist.

The biggest change from the predecessor is probably the story. Instead of a character based story, the story is this time told via news casts and interviews only. This removes quite a bit of the immersion and lets the missions seem a little random. The story gets more interesting towards the end, but it takes quite a while to pick up. Another change is in that you now no longer have a completly linear mission progression, but instead each mission has optional side missions. While it sounds interesting on paper I found it to further dilute the story aspect of the game, makes it hard to keep track of what is actually going on between all those side missions. I also found the difficulty in the missions a bit out of balance, some earlier missions gave me quite a hard time and seem to feature and overly huge amount of enemies, giving the game a more arcade like feel then a realistic one, there are also now explosive barrel, which really don't fit the game. Against the end of the campaign those issues however seem to have gone and the game started to provide just as much fun as Operation Flashpoint did back in the day.

Overall its a pretty fine game, but it can't quite hold up to Operation Flashpoint as a whole and aside from a few tweaks here and there it just doesn't bring much new to the table. ArmA2 is going to be released in a few days, lets see if that brings anything new.

Monday, May 18, 2009

With todays multi-core processors Bash has a problem, as by default it only does sequential evaluation. One can launch processes into the background with the & operator, but that doesn't give much control over how many processes are launch at once. There however is a quick workaround:

The parameter to pwait gives the number of parallel processes to run. You can toy around with that value as well as with the sleep time to improve results. It would be better to be able to use wait instead of busy waiting, but there doesn't seem to be an easy way to accomplish that.

Edit: The dosomething must not be in (), since else jobs won't catch it and the thing will not work.

Friday, May 08, 2009

This blog post is for German readers only, if you have censorship issues in your country, and who doesn't, please try to support your local organizations.

Germany is on its best way to install Internet censorship measures, so time to get a little political and do something against it. One cause of action is the current petition against the blocking of Internet pages which can be found at the link below. Once registered, with your real name, you can sign the petition (this is the real deal, not one of those useless Internet petition pages):

The next issue is the German pirateparty, which is still in need for signatures so that it can take part in the next Bundestags election. To sign up for it you have to print out a page, sign it and send it to them, more detailed instructions can be found at:

Wednesday, May 06, 2009

For a long time I was under the impression that joystick calibration is no longer needed with current day joysticks, yesterday I however figured out that I was wrong, kind of at least. While it is true that todays joysticks normally don't need to be calibrated manually, the values they submit over USB are fine the way they are, the Linux joydev calibration interface can still prove extremely useful or harmfull for that matter. The way calibration in Linux works is that you basically have four values for each axis (they are stored a little different internally in js_corr::coef[], but you can convert):

center_min

center_max

range_min

range_max

These are calculated from absflat, absmin and absmax as reported by evdev and in turn I assume by USB (haven't yet looked where those values come from) and used to transform the raw USB values (range often 0,255, but can vary with sticks) to the one of the joydev interface (range -32767, 32767). The thing now is that these values have terrible defaults for most of the sticks I have tested, resulting in a deadzone far larger then needed and in a loss of far range of the joystick.

On the SideWinder Precision 2 stick for example they result in a 10% deadzone, which is very noticable and annoying in games, as they make it impossible to make small movements. They also result in a deadzone on the throttle control, which is totally useless. The cool thing is that those issues are not a limitation of the hardware, but just the result of the calibration values and those can be tweaked with ease, jstest-gtk contains a tab where you can tweak those values directly. Or if you don't want to bother with that, you can just use jscal, which ships with most distros:

That issue aside, one can do a few more useful things with the calibration interface, such as inverting an axis. The joydev interface also allows to reorder axis and buttons, if the default might not be suited for a game, that feature seems to be broken in jscal that ships with Ubuntu, but will be implemented in jstest-gtk soon (Update: its implemented).

One annoying thing with the joydev however is that there doesn't seem to be a way to get the event device associated with the joydev device, there also doesn't seem to be a way to reset calibration and button mapping back to the defaults, once changed.

Edit: The above explanation, while true, has only limited use, as most games use SDL and SDL will use evdev by default, not joydev and evdev doesn't support any kind of calibration. SDL can however be forced to use the joystick device via:

Monday, May 04, 2009

As jstest is console based and as jscalibrator is an old rusty Gtk1 application, I started to write a shiny new jstest application based on Gtk2 over the weekend, called jstest-gtk. Not quite sure how far I'll take this, but currently planed features include:

classic joystick testing

classic calibration

axis and button remapping

axis inversion

There are some more ideas floating around, such as evdev and SDL support, force feedback testing, support for toggling LEDs on devices that have them, HAL, etc., so there is plenty of work if somebody wants to contribute.