Tuesday, March 31, 2009

Windstille Editor - Day 15

The icons in the ObjectSelector got a little cleanup, they now can have an image background and keep their aspect properly. They are also sorted alphabetically. After the upgrade to Ubuntu9, which brought a new Gtk, the spacing between the icons seems quite a bit larger then before, which is a little annoying, haven't yet found a way to turn the padding back to something smaller.

Moving objects with parents now works properly without the double-move issue.

The editor now allows ControlPoints, which can be grabbed for scaling and rotation of Decal. Still a bit broken, but seems solid enough in concept. I tried first to implement full Quad manipulation allowing drag&drop of all four vertices, but that didn't turn out all to useful, to easy to end up with broken looking polygons, so for the moment I rolled back to simple scale and rotation.

Sunday, March 29, 2009

Windstille Editor - Day 13

Mostly some clean-up again, parentship between objects should now survive loading, saving as well as duplication and copy&paste. FileReader got a little const cleanup. The select tool nows properly selects only objects which are in it, instead of all things that collide with it. Object duplication now preserves layers, so that one can duplicate large groups of objects spread over many layers with ease. The LayerManager now provides show/hide all and lock/unlock all buttons, a auto-lock button is presented as well, limiting editing to the current layer.

Other then that, there are some more graphics that got moved over from the media/ area and the existing sectors got a little cleanup.

Ubuntu 9.04 Jaunty (Beta)

Tried to upgrade to the Ubuntu 9.04 Beta today. Upgrade itself went smooth, restart didn't, seems like Nautilus ran amok opening a gazillion windows, currently worked around by killing and removing Nautilus. Might not be Nautilus fault, as there is something fishy with the gnome-session manager.

Button mapping for my mouse and Wacom got mixed up as well, that was fixed by a simple:

xinput set-button-map "Wacom Intuos2 6x8" 3 9 1
xinput set-button-map "ImExPS/2 Logitech Explorer Mouse" 3 2 1 2 2 2 2 2 2

The eraser on the Wacom still doesn't work.

Gimp and Emacs don't start from the panel, even so their command line seems correct. A new icon drag&dropped from the Application menu works, maybe some incompatibilty in the .destkop file or so?

Krita4 still crashes on startup.

Flash doesn't work even so the flashplugin-nonfree is installed. Seems to work now after creating a new Profile.

Saturday, March 28, 2009

Windstille Editor - Day 12

Mostly minor stuff and polish today, the ObjectTree class got renamed into LayerManager, FileWriter writes things a little more Lisp-like, the Open, Save, SaveAs functions now behave more normal, giving you overwrite warnings, starting in the right directory and such, the Tabs now contain proper filenames and RecentFile handling is integrated as well. The output to stdout got a little cleaned up and some of it got redirected to the statusbar. Also fixed a crash that happened when objects got parented to themselves, leading to an endless loop.

On the levels/graphics side of things, there was a little cleanup as well, the trainstation.wst and mine.wst sectors got split into layers and a new sector worker.wst got created. Also the trainstation got some improved trains, which however are a little broken due to parenting not being properly loaded. The new layer systems is quite nice to work with so far, a toggle function that limits editing to the current layer is however missing.

Windstille Editor - Day 11

The ObjectTree got retooled into a LayerManager. It now only shows layers, not all objects and allows to toggle layer visibility, lock layers to avoid accidental editing and move them around to reorder them. The layer name can be edited as well. The old Blender-like layer system is still in place and will likely stay for a while, but mostly obsoleted by the new one. The main advantage of the new layer system is that it enforces object ordering, so objects can't be raised or lowered above the layer boundaries. This makes it a little less flexible, but a lot easier to use, since now one hasn't to worry about an object ending half a way in a wall instead of cleanly below or above it. Copy&paste between layers works as well, so its fairly easy to split up old levels into layered ones.

Thursday, March 26, 2009

Windstille Editor - Day 10

New stuff today includes a Blender-like layer system, along with functioning Copy&Paste and a simple grid. Building simple rooms so far works mostly ok, but an easy way to see on which layer an object is and a way to move objects between layers is still missing. Another important thing that is missing is pixel perfect select/grabbing, currently it works by bounding rectangle, which is annoying, since all the transparent light objects get in the way. Snapping to proper integer positions is missing as well, leading to annoying gaps between graphics. Scaling of decal is also missing and needs to be added next.

The ObjectTree so far has turned out rather useless. The object count is just to high for it to be useful. Maybe it would help to be able to group objects and use the ObjectTree as a way to mark the object group that gets currently activly edited. That however would kind of duplicate the layer system. Not quite sure yet how to progress here, but a better way to seperate the level into foreground, background, light, highlight and shadow stuff seems to be needed, since it currently gets quite confusing fast. There is currently also no way to properly mark the z-position at which the player should enter. The current Blender-like layer system doesn't care about ordering at all, which makes it quite flexible, but also not well suited for this task, in which strict object order would be helpfull.

Wednesday, March 25, 2009

Windstille Editor - Day 9

Today the Windstille Editor got more advanced snapping, meaning selections of multiple objects snap properly. It also got a basic load and save functionality, so its now usable for level prototyping, actual level building has to wait till the navigation graph stuff is in place.

I reconstructed the trainstation in the level editor, which thanks to the snapping was very easy. The lack of layers however is problematic, since it makes it a little tricky to pick the right object in more complex scenes, something that need to be fixed in the future.

Tuesday, March 24, 2009

Windstille Editor - Day 8

Added some code that allows to snapping objects together, so building stacks of boxes is now much easier. Also added a button to toggle the control graphics layer, so no more ugly red dots, unless you want them. The background now has a chessboard pattern drawn all over it, to distinguish it from black areas. The objects are now also a bit more generalized, meaning you can have other types then just surfaces. The play button is now hooked up and starts a timeout callback that will animate all sprites in the scene.

Windstille Editor - Day 7

Fixed a few bugs in the drawing code, so that the lightmap now works in the editor. Also added a bunch of buttons to toggle different layers. Palette can now drag&drop to each of those layers.

Standard delete and duplicate buttons are available as now, also added raise and lower buttons. Another new addition is the ability to parent objects to each other, which allows the building of more complex objects out of simpler ones.

Mirror's Edge (PS3)

Mirror's Edge, is a first person platform for the PS3. It follows into the footsteps of games like Prince of Persia or Tomb Raider, except its all from the first person perspective this time. In many aspects the game is quite a bit like Breakdown, which had first person platforming as well, but with Mirror's Edge there is a much stronger focus on running and momentum and much less focus on fighting.

When it comes to the basic gameplay, Mirror's Edge succeeds on most accounts. The running and jumping feels right, the unusual controls (L1/L2 = Jump/Duck) work great and the lack of overview due to the first person perspective is never really an issue, since you always have red objects marking your way. You still die quite frequently in the game, but that comes simply due to the nature of the genre, which is focus as in other games of the same genre on figuring out the best path through a situation instead of just allowing anything.

The shooting in the game, while just a small part, however is problematic. For one it is simply to easy, an unarmed girl in a tanktop, should have a harder time against a heavy armored soldier with a machine gun. Another thing is the death of enemies, in a game that tries to get away from guns and in large part manages to, you would image that knocking out characters would have diffierent reaction then shooting them or that shooting them in the head would have a different reaction then shooting them in the leg or that there would be consequences or whatever, but it doesn't, its all the same and it doesn't matter what you do. The level design also pretty much forces you to use guns in a few situations, which again undermines the whole philosophy of the game a bit. The trigger happyness of the enemies is also a little annoying, as everybody starts to shoot instantly, no questions asked.

The graphics in the game itself are among the best I have seen this generation, the choice of color in the city is a great change from the dark brown and gray in other FPS and the sunlight looks beautiful as well. Together with the great soundtrack the game manages to create a phantastic atmosphere.

Where the game however utterly fails is cutscenes. Instead of using the 3D engine as most other games, the game falls back to what is best described as Flash animation, not only doesn't it mix well with the 3D, it also looks pretty damn ugly. Especially when in motion the proportions get all wrong, the heads wobble weirdly and all kinds of other distracting errors come into the mix. It just looks cheap, the Zelda CD-I kind of cheap. Graphics aside, the cutscenes also have a hard time connecting the levels together, there is just to much disconnect, both in space and time, between what you play and what you see in the cutscenes, which makes it easy to lose track of the story. This is one of the cases where I would have prefered a more linear naration as in Half Life 2.

The story itself also leaves quite a bit to be desired, there just isn't enough backstory to care much about any of the characters and there are also just not enough characters around to make things interesting. The story also is another case of sequelitis, bringing no real conclusion.

Overall however the game is great, the atmosphere, the movement and the almost gun-less gameplay are a great change from all other FPS games out there and it is simply a lot of fun to play. The story itself isn't all that bad either when compared to other games, but it certainly fails to give the game a deeper meaning. In a game like this I would like to know more about the background, the political situation and care about the characters, but the story never really accomplishes that.

Sunday, March 22, 2009

Windstille Editor - Day 5

Day 5 in the Windstille Editor development. The OpenGL contexts between different sector tabs are now shared, that was a little tricky since you need a root GL context for that to which all others can link, but there is no straight forward way to actually create one. As a workaround I abuse the minimap as my OpenGL root context, which so far seems to work fine, even if the minimap itself is hidden away.

Drag&drop of objects from the palette to the sector works now properly. The treeview in the bottom right is updated automatically as well. You also have now a few new tools to select objects and zoom around.

At the moment I am still using placeholder images for everything, as I have yet to figure out how sandboxy I want the whole thing to be. I however started to actually sharing the display code between Windstille and the Windstille Editor, so Sprites, 3D models and lightmap stuff can be used in the editor.

Saturday, March 21, 2009

Chinese SuperTux

Just commited a bunch of fonts and translation files done by Liu Sizhuang to SuperTux SVN, so chinese support is ready there too.

Wednesday, March 18, 2009

Windstille Editor - Restart

Since Flexlay hasn't exactly aged well, and is now more a patchwork of rotting parts then a functional piece of software, its time for a new editor for Windstille.

For the toolkit I settled with Gtkmm, for most part simply because I am used to Gtk apps and not because I necessarily consider it superiour to Qt or any of the other toolkits. With that decision out of the way time for a little coding.

At first I tried played around with Glade-3, but to my supprise that turned out pretty badly. Documentation is lacking quite a bit for Glade, especially in combination with Gtkmm, and some things like custom widgets seemed overly compilcated. I also couldn't really find much info on how to properly combine Glade with UIManager and some other things. After dumping Glade and switching to plain C++ things got a lot smoother. Not only went the problems away, Gtkmm code also ended up looking a little prettier when using classes and inheritange instead of retrieving pointers from Glade. Overall I am pleasantly supprised with the ease of coding Gtkmm.

The screenshot on the right shows the editor after a day of coding. Its completly non functional, but it contains placeholders for all the basic things along with a GL drawing area, so coding should now go rather smoothly. One thing I have yet to figure out is how to properly share code between the game and the editor, the idea is to go sandboxy, but how to implement that in detail I have yet to figure out.

Thursday, March 12, 2009

uniq weirdness

Bug or feature? Maybe just a misconfiguration locale, no idea, haven't looked into it, anyway doing this:

uniq << EOF


Produces this:

All the other characters are missing. If anybody is wondering those about those character, they are fixed size versions of your regular :?!() characters and are used in Chinese.

Edit: sort -u seems to suffer from the same issue.

Friday, March 06, 2009


Aside from finishing up Bioshock, I also watched Pixar's WALL·E. After all the hype I however have to say that I was rather disappointed. The characters are flat, the story is rather uninteresting and the 'save the planet' message is brought to you via a sledgehammer, lacking even the tiniest bit of subtlety.

Judging from the trailers I expected a departure from normal Pixar style and something close to reality, but the film really doesn't provide that or at least not for long. The first 20 or so minutes are pretty much a stretched out version of the trailers and those are for most part ok, even so I would have prefered to see some more backstory. Where the film gets pretty bad is after those, then it gets pretty much cliché, a instant love story, a stupid bad guy, some crazy sidekicks and some random comedy thrown in. I expected WALL·E exploring an unfamiliar world, but instead you get plenty of exposition, talking humans and all that stuff.

Another weird thing that the film does is mixing of real life actors with computer generated humans, which is quite weird mix, since the CGI humans here are completly comical, in both their visuals and their behaviour. Now given the real life humans only show up on old billboards, not actually side by side with the CGI ones, but even that doesn't help to bridge the gap between both of them.

The film does have a few fun jokes and stuff of course, but the trailer already covered the best of it. The rest of the movie is either just not very good or actually pretty bad. I don't quite get what all the hypo was about.

Bioshock (PC)

I finally managed to play Bioshock. I picked the PC version instead of the PS3 one, since it was quite a bit cheaper and because it had support for the Xbox360 controller. The controller support works for most part extremely well, you flip a switch in the option menu and the whole thing behaves pretty much like a console game and works out of the box without more configuration. Its really nice to see that at least some PC games these days allow you to use the game console interface on the PC instead of forcing mouse usage. One problem however poped up, the plasmid/weapon select was a little buggy, sometimes it would get stuck requiring pressing the button again to get out of it and then retrying, not a big deal, but enough to kill me a few times in the game. After a little bit of testing I settled with high graphic details in 640x480, which sounds pretty aweful, but looked, expect for the ugly font, good enough. A little annoyancy however was that I couldn't find any way to use widescreen in that low a resolution, the only resolution that actually properly filled my display was 1680x1050, but that was of course not really playable.

The gameplay of Bioshock is pretty much FPS standard, but with a few twists here and there. Probally most notably is the non-linear level layout, instead of just moving forward you have buttons to switch, items to collect or enemies to kill and so you run from one goal point to the next inside a level. A little arrow at the top of the screen guides the way. The overall level layout feels much more like that of Doom1 then that of Half Life, which I consider a good thing. One problem however is that the levels all feel pretty much the same, from start to finish there never really is a big change in the setting, its all just the same old dark under water city over and over again, not even the enemies vary. Which is kind of understandable in terms of story, but also pretty boring, since it simply gets old after a while. There is also a noticeable lack of swimming in the game, you do it in the first minute after the plane crash, but after that never again. Weird for a game that is all about water.

In terms of weapons you have the standard stuff, pistol, shotgun, rocketluncher and so on, but beside that you also have the plasmids, which lets you cast fireballs, freeze things and such. The nice part about Bioshock is that it allows plenty of ways to combine weapons and plasmids, you can for example set somebody on fire and then shoot a heat seaking missile after them. You can also use the environment and electrify water or set oil on fire. While this all sounds nice in theory, I haven't really used it all that much in the game itself. I think one of the bigger problems simply was the speed of the enemies, they were just to fast to make any planed attack much useful. Another problem was that the enemies just take way to much bullets to kill, meaning even if you tried to be clever, the enemies would jump around and attack you for quite a while before they finally died, making setup traps rather non-effective. The AI on the enemies however was good or at least interesting, since enemies on fire run for water and enemies low on health run to the next med-station to recover their health, doesn't happen all that often that one sees on enemy retreat in a game. The enemies are also very talky, which helps a lot in giving them a crazy human apperance instead of a mindless zombie one.

The vita chambers where kind of problematic, these things are basically just reset points, however unlike a normal reset point the enemies do not get reset, meaning you can't die in this game at all. The only penalty for dying is that you get send back to a vita chamber and have to walk back. But since the vita chambers are plentyfull, its never much of a problem. The good thing about this is of course that you have basically a zero frustration factor in this game, the bad part is that you start to use the vita chambers sooner or later as part of your strategy. With bigger enemies you just run up to them, shoot, die, respawn and repeat till they are dead. Leaving most of the flexbility that the weapons give you untouched.

The story in Bioshock is almost completly told through diary audio tapes entries, they do their job for most part fine to give you some back story, but they also keep you pretty distant, since you never actually interact with any person directly. Beside the diaries you of course also have the levels themselves, which thanks to the nice art direction provide plenty of backstory as well. However you seldom have much time for appreciation, since the game just seems to fast paced to really bother much with looking at the walls.

The 'moral choice' that you are offered in the form of rescuing or harvesting the little sisters is pretty much a joke, while somewhat import for the story and the ending, its really just a gameplay gimmick. The little sisters don't have any personality or individuallity that would make the decissions meaningful and that the choice is also offered via a big fat selection text, instead of being part of the normal gameplay, also makes things feel rather gimmicky.

The ending of Bioshock feels quite rushed, you fight the last boss, then you see a short cutscene and then you are already back at the main menu. You don't even get to see the credits roll and a proper epilogue that gently brings you from the current events to the cutscene is simply missing.

Overall, Bioshock is a bit more interesting then the average FPS, thanks to the art direction, non-linear levels and interesting weapons, but it feels quite a bit to streamlined. The navigation arrow that points to the next target, the vita chambers and all that stuff makes things a little to easy and the lack of variety makes things a little to monotone. That's not to say its an easy game, I died plenty of times, but instead of more carefully planing or experimentation, the streamlining just leads to repetition of the same strategy of just running up and shooting them over and over again, because that is what actually works best. As far as mainstream FPS go, its quite decent, but in terms of story I have certainly seen much more engaging stuff.