PINGUS DEVELOPERS ZONE











Back to: Pingus

Pingus Revised TODO List/Roadmap

The aim is to create a new revised, improved, better smelling, softer, quicker, no colestorol, low fat, no-caffein, sugar free TODO list, and eventually have a roadmap ...

General

  • i18n support, currently very flaky... ( in progress - gd)
  • i18n support should also work when the game is not installed (gettext should search for the translation text elsewhere)
  • Gray-ish outline on pengo's needs to be fixed ( in progress - gd)
  • Fonts are hard to read most of the times (mostly fixed? -gd)
  • Unstable release is unstable :) Core dumps are common
  • clock advances slower than it should in fast_forward mode.
  • FAQ is outdated.
  • missing resources in cvs tree
  • The game should be runable on slow computers (minimum should be a P90) the fast_mode should be optimized for this purpose
  • the option menu needs a complete redesign and cleanup.
  • we need some better looking loading and result screens for the game, which appear after a level was completed, the current once suck badly

There is also a TODO file in the pingus CVS tree which list some issues, but its not really sorted or something, its more my personal scratchpad, so I don't know how helpfull it will be.

I guess there are quite a lot of things that I missed in this mail so feel free to do what you like when you find some other brokeness in the game.

BTW: The FIXME's in the source code are not really usefull, since they cover most of the time internal code stuff, which would not be user visible and can be fixed at a later point.

Level-Loading

Level loading is currently not very fast and could probally optimized quite a bit (could probally become 400% faster or so). Currently the map is generated like this:

  • first we load all surfaces (we already recycle surfaces via PingusResource, so no way to do big optimizations here)
  • we create a large CL_Canvas
  • we draw all the surfaces to the CL_Canvas
  • we mark all tiles as empty which are empty
  • we generate all non-empty tiles from the CL_Canvas

This is not a bad aproch, but depending on the level, the number of modified tiles might not be very large, so we could probally just use the surfaces directly in a level instead of generating tiles. The tiles could then be generated on demand (which is already the case when the tile is empty). So the level loading could be seperated like this:

  • load all surfaces
  • start the level
  • a pingu changes something -> generate the tile and all surrounding tiles (all tiles which a surface which touches the current tile covers) with are needed to dig the hole

With this aproach we could get nearly instant loading, especially when the surfaces are already loaded, which is the case on a retry. Problems that remain is the collision map, which currently might also suck a lot of loading time and the on-demand tile map generation which could need to long, so causing breaks in the game. This could be fixed by complicated CL_ClipRects around the tile, so that we can lower the size of surfaces which need generation.

Sound

  • Sound Effects needs to be created

Music

  • Music

Actions

  • all the pingus actions need some testing and fixing. For example pingus get stuck in a wall quite a lot while building bridges or jumping around. digger and basher don't act correctly when hitting empty ground in some situations and leave a one pixel large wall behind them
  • walkers fall from very small steps, they cannot climb small steps
  • supermen does not work, needs decision on what is should do
  • climber does not work
  • basher is too slow
  • helicopter like action has no effect. (wIts a persitent action and will only activate if the pingus falls from a high cliff, it slows down its falling speed.
  • we should introduce particle effects again for basher, miner, etc.

WorldObjs

We need more WorldObj's or at least we should finish the ones that currently don't work correctly or are missing features (IceBlock, Conveyorbelt, SwitchDoor, etc.). We should also add generic particle generators, writing extra code for each and every particle effects sucks.

Leveleditor

  • Level editor must be more userfriendly (clanGUI) [FIXME: what more than clanGUI and a help-screen do we need? send mail to pingus-devel if you need some feature]
  • the level editor needs a gui for editing the object properties (currently you have to edit the .xml files directly), don't know if clanGUI is ready for that [looks like it is ready enough for that task]
  • Functions that are not implemented in the level editor:
    • property editor not implemented
    • keyboard hotkeys should be displayed in the editor (f1: help-screen)
    • inserting objects from images ~/.pingus/images/ is only half implemented
  • editor has a .plf/.xml extension confusion
  • I would like to have an automatic commit features for levels which would send the levels to some pingus-levels mailinglist or something like that (calling /usr/lib/sendmail or calling mutt in batch mode might work)

Meta-Objects or Object Groups

The editor should provide a way to handle meta objects or objects groups. For example a normal entrance consist of three layers, the background layer, the 'physical' entrance and a foreground layer, currently there is currently no way to insert such an object group at once. Grouping support is there but still primitiv. So the editor should provide a way to insert meta-objects just like normal groundpieces and other objects. Exporting object groups to meta-objects should also be supported.


Levels

The levels are currently not balanced well. First levels need to be easier, and hardness must grow as levels advance. So basically all levels need a review and fixups if they probally broke with more current pingus releases. To acomplish that the levels format needs to be extended, something like this might work:

Playability of some levels is open to discussion
    comments by cc (cagri coltekin)
    
      * Level 1:  -- somewhat playable.
      time is -1
      1 PingusError: PinguActionFactory: Invalid id: superman
      exit without core.
      2 PingusError: PinguActionFactory: Invalid id: Climber
      3 Textures/nebula -> nebular.png is not in cvs.
      * Level 2:  -- nope. I could not play it.
      4 thunderstorm.scr is missing.
      - In this form, name should be "Where is the exit(s)?"
      It is not visible to immortal ones.
      * Level 3:  -- nope. no exits again
      - time again. (-1)
      - exit(s) are not visible
    
  • add a comment field, the comment field should contain a short note about how usable the level is and what needs to be done to fix it
  • add a difficult field which contains the difficulty of the level (probally hard to rate all the levels on a constant scale [tutorial, easy, medium, hard])

This extension should make it easier to keep the data connected to the level instead of keeping it seperate in some database.

Contrib

The contrib gui is basically working but it could still need quite some improvement. The Buttons could need some graphical touch-ups and the background should be animated or animatable, the background-types of the game could be used for such a thing, but this would need some restructuring of the World class. There should also be a way to release (or automagically download) extra level packs in the near future, which currently isn't really possible.

WorldMap

To make Pingus more than a lose collection of levels we have the concept of worldmaps, which are basically the same as the worldmaps seen in Super Mario World or similar games. The basic concept is that all levels are not only ordered in a list, instead they are arranged in a graph. So the player as the possibility to to walk different paths, find bonus levels and finish a world without playing all levels. The screenshot at the right shows such a worldmap. Maybe ten worldmaps should be there in the complete game. A meta-worldmap might also be there to have quicker access to the worldmaps. There will also be a counter which counts how much percent of all the levels are finished and similar things.

Features:
  • the story mode (worldmap) need quite a lot of enhancement, like pathfinding and translation-screens between worldmaps. Cutscenes for the story would be cool
  • warp tubes or other objects which connect different worldmaps
  • counter for how much how a level is completed
  • secret levels, accessible via secret exit from other levels
  • bonus items (for example herring) in the levels which also gets add to the counter

Bonus Items

Pingus will have special items, basically different kinds of herring. Probally some special artefacts to trigger events. Each type of herring will be worth a specific amounts of points, the points will then act as a value on how much of the level is finished.

Blue Herring
Basic collectable item, similar to coins in Super Mario World
Worth: 1 Points
Red Herring
Generic collectable item, similar to coins in Super Mario World
Worth: 5 Points
Golden Herring
Generic collectable item, similar to coins in Super Mario World
Worth: 50 Points

Story

In addition to the worldmaps there are plans for having a story. The story will mainly be driven by little cutscenes (not sure if animated or just statues) between the worldmaps and probally at special events like completing all levels with 100%. An intro and outro are also needed. There hasn't been yet decided on a story, only some lose ideas, see the story line thread and the mailing list archive. The cutscenes for the storyline might look like this:

There isn't currently any working code for cutscenes and it hasn't been decided on a file format or similar things.

Multiplayer

  • the multiplayer mode completly lacks a configuration dialog, so its currently useless
  • the screen splitting needs to be configurable (vertical or horizontal splitting, etc.)
  • the controlls needs to be configurable (mouse, keyboard, gamepad, etc.)
  • support for multiple usb-mice needs to be done (this should go into ClanLib, not into the Pingus codebase)
  • some special items for the multiplayer mode would be nice
  • Game modes:
    • capture-the-herring (with unlimited actions)
    • who is going to caputre the most pingus

RoadMap

In addition to this ToDo you should also have a look at the file ROADMAP in the top-devel directory of the CVS tree, it contains the stuff that should be fixed before the next release.

CleanUp

Beside that the game needs some more features and feature cleanups, there is also a need for a code cleanup in some places.

  • the button panel and the action buttons are not configurable and suck quite a bit, they should be manly rewritten (also needed for configurable gui's in the multiplayer mode)
  • PingusSpotMap is too big, it should get seperated into a CL_Canvas like class with real-time modify capabilities.
  • The concept of Controller's should get reviewed
  • the Sprite API needs a cleanup and Sprite should replace all/most occurences of CL_Surface

Copyright ¡ 2002 Ingo Ruhnke, <grumbel@gmx.de>
Last update: Fri Jan 11 12:35:17 2002

Copyright (C) 1999-2002 Ingo Ruhnke, <grumbel@gmx.de>