Development:

If you just want to play the game, this isn't of particular interest to you. You probably want to get the latest stable version from the download page. But if you're interested in helping out on the project, by all means, take a look at this stuff.

The State of the Art:

Sunday, October 2, 2021 -- Minor update; build changes only.

Monday, March 1, 2021 -- Only 6,494 days since the last update, I have a big one. At prompting from friends, I've fixed the build so it actually succeeds on modern Fedora Linux and cross-compiles for Windows. I've released this as icebreaker-2.2.0.tar.xz. It's also on GitHub. This is the first "official" release with the themes support and stuff, only a little late.

Wednesday, May 21, 2003 -- It's not that I'm dead, just distracted by other things. Most recently, a very cool new subnotebook.

Wednesday, November 6, 2002 -- Yeesh, what a slacker.

Thursday, July 18, 2002 -- really busy at work again. But development not forgotten. :)

Monday, June 24, 2002 -- too busy playing Neverwinter Nights to work on my own game. (Hopefully the Linux version of NWN will be out soon.) And then the rest of this week I'm at the Ottawa Linux Symposium. When I come back from that, I'll put together the next devel release, with Enrico's win32 registry code.

Saturday, June 8, 2002 -- icebreaker-1.9.7.tgz. Game loop timing changes (now will busy-wait if 10ms is too long of a sleep). Win32 initial username now set to to match logged-in user, instead of defaulting to "Nobody". Username length limit changed to be based on actual text width instead of 12 M-width. Plus some other little stuff.

Friday, May 31, 2002 -- icebreaker-1.9.6.tgz. Sounds are now 22050Hz. Full keyboard support. Lots of cleanup. Because of the sound change, anyone working on themes probably wants this version, so I've made a Win32 executable too: icebreaker-1.9.6.exe.

Monday, May 27, 2002 -- I'm impatient. So, Public Beta icebreaker-1.9.5.tgz it is, only one day later. 1.9.6 will be out soon, with support for 22050Hz sounds.

Sunday, May 26, 2002 -- icebreaker-1.9.4.tgz. Much code cleanup. High score file locking. Confirm dialog for changing difficulty mid-game. New Win32 installer using NSIS. If 1.9.4 has no embarrassing bugs, 1.9.5 will be little-changed and released as a public beta of sorts.

Thursday, May 23, 2002 -- icebreaker-1.9.3.tgz. Highlights include basic keyboard support (we'll need that on the silly one-mouse-button MacOS), theme improvements (including documentation and a random theme option), and hopefully BeOS compatibility has been restored. Oh, and a simple benchmark mode -- run with the -b command line option. I'd be curious to know what FPS people get on various systems -- e-mail me your results.

Sunday, May 19, 2002 -- icebreaker-1.9.2.tgz. Has better themes support (and a few more themes), a much improved full-screen mode, command-line options for fullscreen and sound (fullscreen option sorta broken -- fixed in next release), and better text-handling routines.

Thursday, May 16, 2002 -- Oh my goodness, it's a new release: icebreaker-1.9.1.tgz. This one is pretty sketchy -- a lot of changes with little testing, and I've done some ugly things to the code. But hey, that's development. 1.9.2, coming Whenever, will be nicer.

Sunday, April 28, 2002 -- Am very lazy. But we knew that already.

Saturday, October 13, 2001 -- Working on merging nice stuff from Enrico. Really.

Thursday, August 30, 2001 -- Here. icebreaker-1.9.0.tgz. This is the starting point for new development. Unfortunately, I've been really busy with my Real Job and other excuses, so there's not much difference from 1.2.1. I figure it's better to have something here than nothing. More details soon. Really. Okay, well, soonish.

Todo:

See the TODO file included in the source distribution of the latest devel release.

In general, patches are always welcome, although I don't always take every idea, and I'm a bit of a control freak so your code will get toyed with. But I'm a nice control freak.

We really need more themes and particularly more sounds. I can do the required 14x14 graphics acceptably, but perhaps you can do even better. And making good short clean sound files is not my strong point.

Changelog

Here's the full changelog from the latest development version:

August 31, 2020: released 2.1.0
 - clean up a bunch of buffer overflows
 - make build on Fedora 32 without warnings

August 30, 2020: released 2.0.0
  - hey, let's just release this already.
  - move high score to home directory.
  - don't install setguid games.
  - fix some bad snprintf() calls. ("fix")
  - help wanted with windows and mac ports!
  - help wanted with porting to SDL 2.x!

November 16, 2006: unreleased 1.9.8
  - win32 version now uses registry for configuration options
  - some other minor tweaks

June 8, 2002: released 1.9.7
  - game loop timing more precise -- now busy-waits if need be (but still
    tries to sleep when possible). This will improve game speed on slower
    systems.
  - now sets initial username to that of logged-in user in win32, instead
    of defaulting to "Nobody".
  - username length can be whatever happens to fit the dialog (depends on
    character width) instead of being limited to 12 regardless of size
  - minor cleanup
  - tweaking of theme sounds

May 31, 2002: released 1.9.6
  - decreased score factor in Easy mode. Don't be a wimp.
  - changed sounds to 22050Hz -- this will allow better high-pitched effects
  - changed default chunksize from 256 to 1024 -- this'll put alway the bad
    sound-echo bug on some systems.
  - minor memory leak cleanup in theme switching
  - menu handler and dialog code cleanup
  - right-clicking in options menu now cycles backwards, and right-clicking
    on non-options menu items does nothing. scroll wheel cycles options
  - arrow keys move around playing field
  - keyboard now works in menu; other keyboard cleanup
  - added a few new sounds
  - beep (ouch, actually) on errors in high-score-name entry dialog

May 27, 2002: released 1.9.5 (public beta)
  - little bits of code cleanup
  - slightly increase bonus for clearing more than 80 on higher levels to
    help counteract the fact that having more penguins make that more and
    more impossible

May 26, 2002: released v1.9.4
  - mouse cursor code cleanup
  - made it so broken line sound doesn't play if that sound was last
    started playing less than 30ms ago -- that way if two lines are broken
    at once, the sound isn't double loud (but this still needs work --
    proper behavior would be to play the sound with a slight delay)
  - fixed race condition in readhiscore()/checkhiscore()/addhiscore() -- 
    added file locking (thanks Enrico!)
  - fixed memory leak in theme-sound-switching
  - fixed draw bug in autopause mode
  - no gameover if game is terminated/restarted before you've done anything
  - added confirm dialog for changing difficulty level
  - cleanup in dialog.c -- theme switching code now not quite so ugly
    (redraw bug when both theme and difficulty were changed)
  - added NSIS install script to generate Win32 installer. See:
    . It's open source software, but as
    far as I can tell there's no native Linux version yet. Luckily, runs
    under Wine. If anyone knows of a port, let me know.
  - mucking with some makefile stuff to make it easier to build on OS X or
    BeOS. More to come on that front.

May 23, 2002: released v1.9.3
  - -b option for benchmark mode (will be disabled in stable releases).
  - added command line options for themes
  - added README.themes
  - moved some of the stuff from the event loop in the main level function to
    helper functions. It's still pretty ugly, but this tiny bit of cleanup
    made it much easier to do the next thing on this list:
  - added basic keyboard support:
     * ESC to exit full-screen mode and to cancel menus.
     * SPACE or X or . for toggle direction
     * ENTER or Z or , for start lines
  - made srandom use pid in addition to current time -- wouldn't want to 
    have the exact same game twice at once
  - tweaked makefile for better cross-compiling and dist. package generation
  - fixed fullscreen command-line option for case when config file doesn't
    exist (and made the code better in the process)
  - special "random" theme that actually causes theme to be chosen at random
  - you can now define a "mirror" sprite to provide different images
    depending on left/right direction 
  - BeOS compatibility stuff -- should be mostly un-broken now

May 19, 2002: released v1.9.2
  - added command-line options for sound, fullscreen mode, help, and version
  - more themes! 
  - made 'gridhighlight' for themes, allowing pseudo-3d (button-style)
    blocks
  - full-screen mode now actually 640x480. This should make it work on 
    more platforms, and gives us a place to put a titlebar showing the
    current level
  - added erasepenguin routine -- fix some leaking surfaces
  - improved text-handling routines -- scores in the transitions between
    levels and at the end of the game are now centered properly, and the
    highscore scroller at the beginning is done much more nicely


May 16, 2002: released v1.9.1
  - first cut at themes
  - lack of object-oriented design forced me to create more global
    variables. someday in the far future, this will become a C++ project.
  - now can coexist with Winamp on win32 -- not sure if this is because
    of fixes in SDL 1.2.4, or in the Winamp 2.80. It wasn't anything I did,
    but hey, now you can listen to music while you play.
  - linked against much smaller version of SDL_mixer DLL for win32 --
    should cut the distribution archive in half or better.
  - cleanup in the transition screen routines
  - kludge around broken _snprintf in mingw32 -- cures potential overflow
  - minor cleanup in the text routines


August 30, 2001: released v1.9.0
  - no significant changes; just starting new devel branch

July 30, 2001: released v1.2.1
  - fixed minor bug where highest-score line cut off letters that dip below
    the baseline (gjpqy...). Thanks to Jonathan DePrizio for catching this.
  - tiny little bugfixes, makefile cleanup
  - switched to much more sensible linux-kernel-style numbering scheme.
    (n.oddnumber.n for development releases, and n.evenumber.n for
    stable "production" releases -- for example, 1.2.1 is a stable release,
    so any excitement/surprises should come from the game, not from
    bugs. 1.9.0 will be a devel release, and some features may not work
    completely, or at all.)

July 28, 2001: released v1.2
  - added "score decay" timer, to discourage obsessive-compulsive types from
    taking hours on one level. Sure, I want you to be obsessed with the
    game, but have fun playing, not tediously waiting. :)
  - added easy and hard difficulty settings
  - added options for sound
  - added option for auto pause (which makes the game stop when the window
    loses focus -- note that it always pauses when minimized regardless of
    this setting).
  - now, when a line is stuck (against another line) for a long time,
    the line completes instead of exploding. ("A long time" == approximately
    5 seconds)
  - merged in Enrico Tassi's win32 compatibility stuff -- win32 version
    is now completely functional, except:
  - added fullscreen option! (Unfortunately, still has problems in Win32,
    so you'll have to edit the icebreaker.cfg manually if you want to enable
    this feature on a MS Windows system. I'll get the problem figured out
    for a future release.)
  - fixed busy waits in dialog.c (thanks again to Enrico)
  - code cleanup

July 23, 2001: released v1.1
  - added man page
  - tiny change to error message when high score file can't be read

July 18, 2001: released v1.09
  - Gameplay change: changed behavior when a line hits another
    partially-completed line -- now, instead of the line completing
    successfully, it waits until the other completes or is destroyed.  In
    the event that neither of those happens after a little while, new line
    dies. (I've considered making it complete successfully in this case;
    opinions, anyone?) This change makes the game much harder, in a good way.
  - moved center of vertical cursor to proper location (oops)
  - modified high score code to reread from disk, so that multiple players
    on the same system don't cause confusion. A race condition still exists,
    but it's much narrower. :) A future version will have proper locking.
  - include fix for cmpscore bug thanks to Enrico Tassi

October 5, 2000: released v1.0
  - one-point-oh!

October 3, 2000: released v0.995
  - minor cosmetic fixes
  - made 'make install' work; made it easier to redefine file locations
  - made it so three-decimal-place version numbers work :)
  - made level 100 loop forever instead of just ending the game there. 
    not that level 100 is any fun, really -- too many penguins!

October 2, 2000: released v0.98
  - first public release