Some of this is work in progress, and some it is just stuff I'd like to see.
Check out <http://www.mattdm.org/icebreaker/development.html> for details.

* many (74 at last count) sections of the code are marked with "FIX", in
  places where I know I did something messy, foolish, or inefficient.
* there are likely other bits of messiness, foolishness, and inefficiency
  which I haven't realized are there
* this is part of the above, but bears mentioning separately: some of the
  code is the product of late-night hacking and, while it works fine,
  desperately needs cleaning up

For 2.0:
- unbreak BeOS port
- make MacOS X port
- find and use user's home dir on WinNT/2k/XP
- do something sensible if selected theme is invalid
- move themes to a subdir
  a) in the source tree
  b) in the datadir?
- more keyboard support
  * Arrow keys move mouse
  * ctrl-m (or something like that -- maybe just "M") for menu, ctrl-q
    for quit
- have a dozen themes or more (currently at nine)
- make man page version of themes help?
- that annoying "entire iceshelf collapses" bug is *still* there. happens
  very very very very rarely, though, so I can't figure out what exactly
  the problem is. probably something wrong with squarefill() or some other
  part of checkempty() in grid.c. I tried changing a few things, but it's
  hard to prove that the problem is solved when you can't recreate it....
- make it so when both lines get broken exactly at once, the second sound
  is played with a very slight delay so that the user gets audio
  feedback that two lives were lost
- make spaces-in-username work -- convert too/from _ in high score file
- clean up intro -- remove stupid 'w' thing (either add ability to tell a 
  line to kill itself after a certain length, or add code to the intro to
  know when to kill which lines.)

Post 2.0 (but sooner if we're lucky):
- check for high scores on 'quit' when in the midst of a game
- option to turn off scrolling level-end text ("transitions = normal/fast")
- right-click to cycle backwards in options menu
- more code cleanup in the event loops -- such big hairy functions....
- "help" command line options redirected to files on win32 -- what to do
  about that?
- there is a little bug where in certain situations you can start an
  opposing line directly in the path of an oncoming line, causing lines 
  which are essentially on top of each other. Not a terribly fatal flaw,
  but I'm going to fix it sometime. :)
- make the program not crash if data files can't be found. (Of course, on
  Win32, we're SOL without the SDL DLLs anyway.)
- look for themes in an os-specific directory -- ~/.icebreaker on Linux
  (which means migrating the current ~/.icebreaker to either ~/.icebreakerrc
  or ~/.icebreaker/icebreakerrc) -- in addition to the standard directory.
  on BeOS, this might mean looking in the same dir in which the executable
  resides... need to check about that.

For 3.0:
- faster better smarter collision detection (not a change to be taken 
  lightly since that's basically rewriting the core of the engine)
- make option parsing a bit more flexible -- gnu getopt style
- animated sprites
- replace randomized "demo" with a real demo that at least follows the
  rules -- and ideally plays a decent game. random semi-AI play would be
  great; a recording mechanism of some sort is second-best
- make playing area able to be a bitmap instead of just a colored grid
  (maybe lines also)

Possibly:
- convert to C++ -- reduce global variables
- have bonus Things which get you points (or change game mechanics) for
  trapping with a single penguin. (in a small enough space?)
- user-definable keys
- internationalization - translations and fonts

Probably never:
- make GNOME/KDE versions?
- Mac OS 9 port?
- the animation is really jerky with some refresh rates. what to do about
  this? last time I wrote a game was under DOS, and you could easily
  sync to the vertical refresh.....
