Thursday, February 26, 2009

Pingus now speak Chinese

Over the past few days I fixed some remaining issues with the Unicode handling in Pingus, so Pingus is now able to run in Chinese. Those who want to test it can find the stuff in the latest development version in SVN, once compiled, Chinese can be selected via:

./pingus --language zh_TW

Monday, February 23, 2009

Boom Blox (Wii)

Some quick first impression of Boom Blox for the Wii. Since the game is selling for just 9EUR on currently I couldn't resist to give it a try, its after all one of the tiny few original and good games on the Wii.

The gameplay of Boom Blox is pretty much a cross between Jenga and a physics engine sandbox. Each level consists of a structure build out of blocks. Some of those blocks are special and need to be destroyed to finish the level, this can be done by nocking them out of the structure so that they can fall to the ground. Other blocks in the structure are normal wooden ones, special ones that explode, green blocks that explode when they collide with another green one, blocks that disappear when hit and a few other ones.

The player can rotate around the structure by holding B or lock on to a target with A and then throw a ball at the blocks. Throwing the ball is pretty similar to Wii Sports bowling, except that the whole aiming is done via pointing at the block, not by how you swing the Wiimote, only the strength seems to matter. Beside a normal baseball, some levels feature bombs that can be thrown or bowling balls. Some later levels also add some varity by having enemies running around trying to steel blocks, so you have to defeat them by throwing bombs and stuff like that.

Overall Boom Blox doesn't really have much supprises to offer, it plays pretty much like what you would expect or what you might have already seen in some physic engine demo. The special blocks add some variety and there seem to be plenty of levels. My first impression so far is pretty positive, its not a ground breaking game by any means, but it makes decent use of the Wiimote and is a nice little timewaster so far. Challange however is pretty much non existant, most levels can be easily finished on the first try without a problem, so there isn't much puzzeling involved, but the varity of levels and chain reactions keep things interesting. Definitivly worth the 9EUR.

Update: I am now somewhat "deeper" into the game, around the 90% mark, and the good first impression holds more then up. The later levels add quite a few tougher challenges and plenty of new variety, you get levels where you can shoot things lightgun-like, levels where you have to guide a gorilla around or levels where you have to protect some cats. All that stuff continues to play with the very same engine and controls as the earlier levels. Its actually quite supprising how much varity they managed to squeeze out of what looked like a simple Jenga-type game. The game also features a quite powerful level editor and multiplayer modes that I haven't tested so far. Overall I am really quite impressed and so far had a ton of fun playing it, quite a bit more then I originally expected.

If there is one negative thing about this game its the lack of decent online level sharing, with such a nice level editor its a shame that the sharing is limited to Nintendos aweful friends code systems and that there isn't a public repository to upload or download levels from.

Tuesday, February 17, 2009

A bug of the non-obvious kind

Just when you think you know your language, it hits you by surprise. This little harmless looking example has a bad bug:

boost::char_separator<char> sep(":", "", boost::keep_empty_tokens);
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;

std::string str("a=foo:bar:baz");
tokenizer tokens(str.substr(2), sep);
for(tokenizer::iterator i = tokens.begin(); i != tokens.end(); ++i)
std::cout << "Token: '" << *i << "'" << std::endl;

Spotted it? Its right there where tokens() constructor gets passed a temporary object. boost::tokenizer keeps only a reference of the string, not a copy, so the temporary object barfs since it gets instantly destroyed after the construction call. Looking back to it, it makes perfect sense, but unless you know what you are looking for its pretty damn hard to spot, especially since the documentation doesn't exactly make this fact obvious and because the code used to work fine on my machine, it only barfed on a users machine with 64bit Linux. The correct fix is to do:

std::string tmp = str.substr(2);
tokenizer tokens(tmp, sep);

Sunday, February 15, 2009

More Windstille sketches

Some more Windstille sketches, mostly again just experimentation:

Thursday, February 12, 2009

Wikipedia fucking sucks... (again)

Not exactly a new thing that Wikipedia, especially the German one, tends to delete valuable articles on a regular basis, but a pretty annoying thing none the less, since it are quite frequently those that I tend to visit on a more or less regular basis. This time Verbotenes oder indiziertes Medium got killed.

Just another demonstration that the biggest problem of Wikipedia are its admins.

And as a little side note, there has been a nice little demonstration that news articles aren't half as valuable as Wikipedia likes to thread them, after all it must be true when its printed on paper...

Tuesday, February 03, 2009

Windstille sketch Fun...

Some new sketches for Windstille, just random stuff:

If anybody is interested with helping with the story, let me know, help is more then welcome.