• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

ChangeLogH A D25-Feb-20038.2 KiB170152

INSTALLH A D31-May-2002643 129

LICENSEH A D31-May-200217.6 KiB341281

MakefileH A D03-May-20227.2 KiB222169

Makefile.beosH A D06-Jun-2002845 3625

Makefile.osxH A D06-Jun-2002846 3725

Makefile.w32H A D06-Jun-20021.2 KiB4629

READMEH A D31-May-20026.9 KiB159114

README.SDLH A D31-May-2002360 107

README.ifyoumakechangesH A D31-May-2002434 76

README.themesH A D04-Jun-20024.5 KiB9176

TODOH A D04-Jun-20024.4 KiB9183

benchmark.cH A D31-May-20023.4 KiB176118

benchmark.hH A D31-May-2002956 316

billg.ibtH A D02-Jun-2002525 2019

blocks.ibtH A D31-May-2002523 2019

build-mingw32-sdllib.shH A D31-May-2002428 86

build-mingw32-sdllibmixer.shH A D31-May-2002309 86

cheese.ibtH A D31-May-2002552 2120

cows.ibtH A D31-May-2002514 2019

cursor.cH A D31-May-20027.9 KiB299240

cursor.hH A D31-May-20021.1 KiB347

delay.cH A D08-Jun-20021.6 KiB6119

delay.hH A D08-Jun-2002954 314

dialog.cH A D03-May-202216.4 KiB637526

dialog.hH A D31-May-20021.3 KiB3810

event.cH A D01-Jun-20023.2 KiB180127

event.hH A D01-Jun-20021.4 KiB4312

fullscreen.cH A D01-Jun-20024.2 KiB14575

fullscreen.hH A D31-May-2002958 294

globals.hH A D31-May-20021.1 KiB367

grid.cH A D31-May-20027.8 KiB327192

grid.hH A D31-May-20021.3 KiB4717

hiscore.cH A D03-May-20227.2 KiB280174

hiscore.hH A D31-May-20021.2 KiB3911

icebreaker.cH A D06-Jun-20025.5 KiB256173

icebreaker.desktopH A D31-May-2002186 87

icebreaker.hH A D08-Jun-20024.5 KiB20394

icebreaker.man.inH A D31-May-20022.4 KiB7976

icebreaker.nsi.inH A D31-May-20024.1 KiB12099

icebreaker.specH A D25-Feb-20034.2 KiB145110

intro.cH A D01-Jun-200220 KiB674494

intro.hH A D31-May-2002902 294

jz-like.ibtH A D31-May-2002515 2019

kitty.ibtH A D04-Jun-2002515 2019

laundry.cH A D31-May-20022.4 KiB9552

laundry.hH A D31-May-20021,023 348

level.cH A D08-Jun-200216.9 KiB723568

level.hH A D31-May-20021.3 KiB5219

line.cH A D03-May-20227 KiB306231

line.hH A D31-May-20021.3 KiB5022

linux.ibtH A D31-May-2002519 2019

lock.cH A D31-May-20023.5 KiB14975

lock.hH A D31-May-20021.4 KiB4815

menu.cH A D01-Jun-200222.9 KiB881724

menu.hH A D31-May-20021 KiB336

misc.cH A D31-May-20022.5 KiB7543

misc.hH A D31-May-20021.1 KiB346

options.cH A D03-May-202216.1 KiB554447

options.hH A D31-May-20021.7 KiB6129

penguin.cH A D03-May-20225.2 KiB234164

penguin.hH A D31-May-20021.4 KiB4820

rpmmacrosH A D31-May-2002268 129

rpmrcH A D31-May-2002175 32

sound.cH A D31-May-20023.1 KiB12182

sound.hH A D31-May-20021.1 KiB348

stars.ibtH A D04-Jun-2002519 2019

status.cH A D31-May-20022.4 KiB10352

status.hH A D31-May-20021.3 KiB4515

text.cH A D02-Jun-20026.7 KiB13388

text.hH A D02-Jun-20021.3 KiB3913

themes.cH A D03-May-202217.7 KiB583492

themes.hH A D31-May-20021.8 KiB6733

titlebar.cH A D31-May-20021.6 KiB5324

titlebar.hH A D31-May-2002976 304

transition.cH A D03-May-20226.2 KiB239158

transition.hH A D31-May-2002996 305

turtles.ibtH A D17-Jun-2002519 2019

win32_compatibility.cH A D16-Jun-20022.3 KiB9747

win32_compatibility.hH A D16-Jun-20022.6 KiB8728

win32_resources.rcH A D31-May-200225 21

README

1WHAT:
2
3  So, uh, there's a bunch of penguins on an iceberg in Antarctica. You have
4  been selected to catch them so they can be shipped to Finland, where they
5  are essential to a secret plot for world domination.
6
7  In order to trap the penguins, you'll need to break the iceberg into small
8  chunks. (They're afraid of water, for no apparent reason. Ah well. "The
9  Matrix" had more plot holes than this, and it still was a hit.) You do
10  this by melting lines in the ice with Special High-Tech GNU Tools.
11
12  If a penguin hits a line in progress, however, it vanishes with a loud
13  noise, and you lose a life. (Yes, a life. This story is really breaking
14  down, isn't it? But never fear -- I'll keep going until it's completely
15  dead.)
16
17  Once 80% or more of the iceberg is gone, the remaining chunks are small
18  enough for shipping. Of course, if you manage to get rid of more than
19  that, you'll save on postage, thus earning you exponential amounts of Geek
20  Cred (a.k.a. "score").
21
22  After you ship off one batch of penguins, it's time to move on to the
23  next. Each subsequent 'berg will have one more penguin, and you'll have
24  one more life. This will continue until you lose, or until you exceed
25  level one hundred or so, which Ain't Gonna Happen.
26
27  Of course, this is an urgent mission, so you'll be penalized if you're
28  slow -- every second or so, your score drops down by one. But don't worry,
29  I'm not completely cruel, so any points you earn on one level are yours to
30  keep forever, no matter how long you take on subsequent icebergs.
31
32  As far as I can tell, this makes no narrative sense whatsoever, so at this
33  point, I declare the backstory / game metaphor completely collapsed. Just
34  go play.
35
36
37HOW:
38
39  The left mouse button starts drawing lines; the right (and/or middle)
40  button toggles between making vertical and horizontal lines.  Note that
41  left clicking actually starts *two* lines: either up and down or left and
42  right. (This will make plenty of sense when you're actually playing.) If
43  one of these lines is hit before it reaches the edge of the iceberg,
44  you'll lose a life. If both are hit, you'll lose two lives.
45
46  As a tiny bit of grace, if you click directly on a penguin, it'll say
47  "Ouch" and nothing else will happen.
48
49  Once a line is completed, any area containing no penguins is cleared.
50  Falls into the ocean, so to speak. Once 80% has been cleared, the level is
51  complete. However, you get an exponential bonus for every percentage point
52  above that, so you want to try to make your last line suddenly clear a
53  huge chunk of ice. (Again, this will make sense once you've played for a
54  while.) Oh, and you also get a (much smaller) bonus for having lives left
55  over at the end of a level.
56
57  Taking a long time on a level doesn't affect these bonuses, but it can
58  chip away at your score, so you have to balance the time it takes to set
59  up a situation where you can clear 99% of the iceberg against the bonus
60  you'll get for doing so.
61
62  Having trouble? A hint: it's useful to make traps by intentionally letting
63  some of your lines get broken. That way, you can create smaller areas in
64  which you can catch the pesky little things easily.
65
66
67WHY:
68
69  There's a game for MS Windows called "Jezzball". You may notice that this
70  one is extremely similar. There's a reason for that. See, our main
71  computer at home runs Linux most of the time, but it has Win95 set up to
72  dual-boot if need be. (Unfortunately, it's too slow to run VMware or Wine
73  well.) Ideally, of course, the machine stays in Linux, but my wife, Karen,
74  really likes puzzle sorts of games and became highly addicted to this
75  Jezzball thing. Well, we simply couldn't have the system wasting its life
76  in Windows all that time, so I took it upon myself to create a
77  sort-of-clone. (It's not a pure clone, because I like to think that I've
78  done many things in a far superior way.) So this game can be thought of,
79  in a simultaneously dangerously geeky and dangerously mushy way, as sort
80  of a dual love-letter, to both Karen and Linux. :)
81
82  It's therefore somewhat ironic that IceBreaker now exists in a MS
83  Windows version. Ah well. I know not all of you have been converted yet,
84  and you might as well enjoy the game too.
85
86  Oh, and to answer another "Why" question, especially for my friend Lars:
87  why is this program written in C and yet uses C++ style comments? Because
88  I like C++ style comments, that's why.
89
90WHO:
91
92  This game was written by Matthew Miller <mattdm@mattdm.org>.
93
94  Recent versions have benefited immensely from the help of Enrico Tassi
95  <gareuselesinge@infinito.it>. He's responsible for getting the Win32 port
96  to work so nicely, and for a lot of fancy new features. Enrico doesn't
97  live here in Boston, but he's a huge fan of Boston band Letters To Cleo,
98  so that counts for something.
99
100  Much thanks to Karen for everything. In fact, if you really love this
101  game, check out Ten Thousand Villages <http://www.tenthousandvillages.org>,
102  the non-profit organization for which she works. And if you live near
103  Boston, MA, stop in to the store in Coolidge Corner (Brookline) and say
104  "Hi" and perhaps buy something -- they have cool stuff and it's a really
105  great organization.
106
107  Thanks also to Tae-Jin, for helping me squash a nasty bug, and to Paul for
108  testing and suggestions and proofreading this document. And to the folks
109  at the helpdesk downstairs for playing this game instead of working.
110
111  The sounds were either originally created or borrowed from freely-licensed
112  sources and modified heavily. Thanks to Wesley Crossman for his
113  contributions. I'd still like lots more cool good ones -- either
114  improvements of the existing sounds or for new themes.
115
116  The penguin image is mostly my own work, but is based on a graphic
117  from Pingus <http://dark.x.dtu.dk/~grumbel/pingus/>.
118
119  Actually, I'm quite open to accepting any help anyone wants to give.
120
121
122WHEN:
123
124  A week or two in September 2000, and then some more time in July 2001,
125  and then in May 2002, so on.
126
127
128WHERE:
129
130  Get it from: <http://www.mattdm.org/icebreaker/>
131
132  Report bugs: <mattdm@mattdm.org>
133
134
135WHICH:
136
137  (As in, "On which libraries does icebreaker depend?")
138
139  libSDL and libSDL_mixer. <http://www.libsdl.org/>
140
141
142WHITHER:
143
144  I'm now actively working on IceBreaker, and a few other people have been
145  too (most notably, Enrico Tassi). If you want to help, or are just
146  interested in what's going on, check out the development section of the
147  IceBreaker website at <http://www.mattdm.org/icebreaker/development.html>.
148
149
150------------------------------------------------------------------------------
151Copyright (C) 2000-2002 Matthew Miller and others and released under the
152terms of the GNU General Public License.
153
154This project uses the Simple DirectMedia Layer and SDL Mixer libraries which
155are available under the GNU LGPL license. SDL and SDL_mixer source code
156should be available from wherever you got IceBreaker; if you can't find it,
157it is available at <http://www.mattdm.org/icebreaker/> or at the main SDL
158site <http://www.libsdl.org/>.
159

README.SDL

1The Simple DirectMedia Layer (SDL for short) is a cross-platfrom library
2designed to make it easy to write multi-media software, such as games and
3emulators.
4
5The Simple DirectMedia Layer library source code is available from:
6http://www.libsdl.org/
7
8This library is distributed under the terms of the GNU LGPL license:
9http://www.gnu.org/copyleft/lesser.html
10

README.ifyoumakechanges

1IceBreaker is free software -- you're welcome to do anything you like with
2it under the terms of the GNU GPL. However, as a courtesy, if you do make
3changes to the code, packaging, themes, or whatever, I really would
4appreciate it if you'd send me what you've done (e-mail <mattdm@mattdm.org>,
5but check before sending binary attachments). That way, improvements can get
6rolled into the main version and everyone can benefit. Thanks!
7

README.themes

1IceBreaker themes are simple to create. They're are definined in text files
2with the extension .ibt (that's _I_ce_B_reaker _T_heme) in the IceBreaker
3data directory. The filename is the name of the theme itself, which must be
4seven characters or less -- not because of the DOS 8.3 limit but because
5more than seven requires the options menubox to be really big and ugly and
6we don't want that.
7
8The file consists mostly of color definitions, and also gives the location
9of the two sound files and the one sprite bitmap. Color definitions begin
10with a keyword ("Background", "NormalText", etc.) and then give decimal
11values from 0-255 for red, green, and blue, respectively.
12
13The sound and image defintions are just the keyword followed by a filename.
14More info on file formats in a bit.
15
16The keywords aren't case sensitive, and you can use any amount of whitespace
17you want. If you leave out a particular keyword, IceBreaker will use the
18default but spit out a complaint on stderr -- so don't do that. (There's
19currently one exception -- SpriteMirrorBitmap, which I'll get to in a bit.)
20
21
22The default theme is "linux", and the file linux.ibt looks approximately
23like this:
24
25  Background              0   64  128
26  NormalText            255  255  255
27  BoardFillMin          224  224  224
28  BoardFillMax          255  255  255
29  Gridline              192  192  192
30  GridHighlight         192  192  192
31  Line1                   0    0    0
32  Line2                 192    0   64
33  MenuHighlight         255  255  255
34  GameoverText          192    0   64
35  ScorescrollText         0    0    0
36  BonusscrollText       192    0   64
37  TextentryBox            0    0    0
38  TextentryText         255  255  255
39  CopyrightText         192  192  192
40  SpriteTransparent     255    0    0
41  SpriteBitmap          penguin.bmp
42  SoundOuch             ouch.wav
43  SoundCrash            crash.wav
44
45The names should mostly be self-explanatory. If something is unclear, let me
46know, and I'll either change the name in a future version or write better
47documentation here. A few things bear mentioning:
48
49BoardFillMin and BoardFillMax define the colors of the game play area. The
50values will be randomly selected from the range given, but there's a twist
51-- if two (or three) of the red, green, or blue values have identical Min
52*and* identical Max values, those two will be "locked" together. This way,
53you can produce grey or monotone backgrounds instead of having every theme
54look like the mutant love child of Rainbow Brite and the Swamp Thing.
55
56SpriteTransparent is the color value which will be treated as clear when
57drawing the bitmap. In the above example, the penguin.bmp has a bright red
58background, and since SpriteTransparent is set to the matching value, the
59background isn't shown.
60
61The bitmap file should be a 24-bit MS-Windows-style .bmp format. I know that
62this is Lame(tm) but the SDL library which IceBreaker uses understands this
63format natively, and so using it allows us to avoid having a whole extra
64library just to load some really tiny bitmaps. They should be 14x14, by the
65way. If you want, you can make them as small as 12x12, but that's basically
66treated as the top-left of 14x14, and support for that may vanish in a
67future version. (If you want smaller, just mask out most of the image.)
68
69Don't underestimate how hard it is to make a sprite image look good at such
70a tiny size. Making a theme which represents something in real life rather
71than being abstract or iconic is a challenge. A future version of IceBreaker
72may allow you to include background and playing board graphics instead of
73just colors -- but don't hold your breath for that.
74
75In addition to SpriteBitmap, you may also set SpriteMirrorBitmap. If this
76tag exists, the given image will be used when the sprite is moving to the
77right, and the main SpriteBitmap when it's moving to the left. If you leave
78out this tag, there will be no warning -- the main bitmap will be used for
79both. In fact, leaving it out is the best thing to do if you don't want your
80image to flip, because it saves, like, 500 bytes of RAM over defining the
81same image twice. And we all know how important those few bytes of RAM are
82these days, right?
83
84The sound files are 8 bit mono PCM at 22050. They should also be really
85short -- under a second. This'll mean the total size will be easily less
86than 30k -- if it's not, something's not right.
87
88If you do produce a good theme, let me know -- send it to
89<mattdm@mattdm.org>, and I'll consider including it with the main
90distribution. All themes must be licensed under the GPL.
91