Sunday, March 23, 2008

The state of Pingus

Pingus has been in development since back in 1998, that is now almost ten years ago (4.Nov 2008 will be the 10th anniversary to be exact) , so how far are we now? Truth to be told, not very far, there really hasn't been much development going on for ages and quite a few parts of the code still could need some cleanup, there are also still critical features missing and of course when it come to content there still is only a single island and a tutorial one as that. So what is missing exactly? Here we go:
  • resource system, this got basically "#if 0"'ed when moving from ClanLib to SDL, nothing earth shattering, but it does waste a bit more resources then it should and doesn't react smoothly on errors
  • delta-drawing, Pingus does currently full screen refreshes, that however kills performance on low-spec devices, namely N700/N800 and OLPC, this is a real problem, not just a theoretical one
  • multiplayer, this has been on the TODO since forever and also was already implemented a long time ago, but it never got finalized and never made it into a release (that is hot-seat multiplayer, there never was real multiplayer network stuff)
  • online updates/submissions, it should be possible to submit and download level files from via the GUI
  • option menu, sounds simple and kind of isn't all that hard, but it hasn't been done, code is there, but not final and never made it into a release
  • GUI rework, the GUI as it is now doesn't work all that well, i.e. the design is simply inconsistent, in-game we have those glassy-objects, in the menu we have blackboards, this really should be one way or the other and consistent, however the blackboard design is also problematic, since it doesn't follow normal gui conventions, sometimes the blackboard itself is the button, other times a button is represented with a checkbox, the GUI also has an annoying event handling issue
  • new island, my current plan is: ice, forest, volcano industrial, space, all other graphics will end up as contrib levelsets
  • highscore tracking and display, the game should keep track of how good or bad a level was solved to encourage better solutions
  • demo recording/playback, was available once but got "#if 0"'ed when porting to SDL
  • level conversion, the conversion from old XML format to new S-Expr format hasn't been tested much, the scripts are there, but there is no guarantee that they will work
  • traps, neither the main Pingus game nor official levelsets currently use traps, I don't want official stuff to be to bloody, so there is still plenty of room for new designs
  • Unicode/UTF8 support
  • dynamic screen resizing, already partly there in the form of --allow-resize, but only usable in the editor
  • MacOSX version, the game should compile on OSX, but it hasn't been done, so we don't have a download for a MacOSX .dmg
Thats not all, the TODO file contains more issues, but this should be the main issues. Beside the stuff that should be done, there is however also stuff that should not be done:
  • RGBA support, Pingus currently doesn't make use of alpha-blending, mainly for speed issues on slower machines, while it would be possible to fix that without ruining the speed on slower machines it seems to little an advantage to care about, it would also require to change all graphics
  • OpenGL support, this got kicked out on the switch to SDL, while it is a nice to have, in terms of speed the delta-drawing should provide similar amounts of speed up, scaling might also be implemented in software and even required for the OLPC, if anybody wants to implement it, I won't stop him, but I don't consider it important enough to worry about
  • an endless flow of new stuff, the goal is really to get this thing done, not to continue to drag it around forever, users might contribute additional contrib levelsets, but the main-game should stay untouched once finalized
The main goal right now really is to get Pingus done, not to update it to current day tech, while possible, that is one of those things that all to often traps games in an unending cycle of never getting anything done.

No comments: