A free OpenGL Linux game

based on the Super Nintendo classic
Tetris Attack

by Daniel Nelson



Download | Requirements | Installation | Screen Shots | Run Modes
Command-Line Options | Wallpaper | Game Play | Advanced Features | Final Notes | Contact



Download

Download a tarball of the Crack Attack! source and documentation here.

Requirements

  • Linux
  • OpenGL
  • 3D Graphics Hardware Support - The game is unplayable with out it. That is, unless it's the year 2010 or higher.
  • Installation

    No configure scripts here, my friends. You're going to have to slug it out all by yourself. Actually, it should go quite smoothly. That is, if your system is an exact replica of mine.
    1. Download the tarball and untar.
    2. This is an optional step. Open the file Makefile and change the definition for DATA_DIR from a relative directory to the correct absolute directory. This will then allow Crack Attack to find its data from any directory. It has the added benefit of causing the game to inexplicable stop working if you ever modify your directory structure.
    3. Press thumbs and type make.
    4. When g++ fails to find your GL libraries, hunt them down and modify LIB_DIRS in Makefile to reflect their actual location.
    5. If multitexturing gives you problems, disable it by adding -DNO_MULTITEXTURING to OPT in Makefile.
    6. The binary will be Attack. Type Attack --solo to play offline. Type Attack --server to start an online game and have an opponent type Attack HOSTNAME to connect to it.
    7. Something went wrong? Let me know! It's probably my fault. I don't have access to a particularly diverse set of machines, so I need your input.

    Screen Shots

    Here are a few quick screen shots so you have some idea what you're getting yourself into.

    Run Modes

    Crack Attack! can be played both online against an opponent or offline, although offline play is less a game than a simple escape from the horrors of reality. It runs in one of three modes: client or server mode for online play and solo mode for offline play.
  • server mode

    Attack --server [PORT] [-X] [--wait] [--name 'NAME']


  • client mode

    Attack SERVER[:PORT] [--name 'NAME']


  • solo mode

    Attack --solo [-X] [--name 'NAME']


  • Command-Line Options

    --server | -s [PORT]

    Start a Crack Attack! server. To play an opponent online, one person starts a server and the other connects to it as a client. PORT is the port at which the server will listen, with 8080 being the default. The server will wait for a client to connect or until it times out.

    --solo | -1

    Play offline in solo mode. Survive for eight minutes to win!

    -X

    Play in X-treme mode. See below for details. Please do not attempt X-treme mode if you are pregnant or have any sort of heart condition!

    --wait | -w

    Causes a server to wait indefinitely for a connection, never timing out.

    --name | -n 'NAME'

    Specifies your Crack Attack! persona. Single quotes (') surrounding NAME are required so as not to confuse the shell. Most standard keyboard characters are allowed. Those that are not are ignored. Additionally, the tilde (~) acts as an escape character, with the following escape sequences available.
    ~>

    Step forward half a space.

    ~<

    Step backward half a space.

    ~0 | ~1 | ... | ~9

    Switch colors. The default color is 0.

    ~~

    Just a tilde.

    Wallpaper

    You know you need lame Crack Attack wallpaper.


    1280x1024 standard wallpaper
    1152x864 standard wallpaper

    1280x1024 X-treme wallpaper
    1152x864 X-treme wallpaper


    Game Play

    Screen Description

    First a quick overview of the game screen.

    1. Crack Attack! logo.

    2. Your opponent's level lights. These indicate the height of your opponent's stack. When the red reaches the top and they start flashing, he's in trouble!

    3. Your level lights. These correspond to the height of your stack. When your stack reaches the top of the screen, these lights flash to warn you of your impending doom. You've got seven seconds to reduce your stack or you lose. If nothing else, just eliminate some blocks. Time during which blocks are disappearing or garbage is shattering do not count towards these seven seconds.

    4. Players' names.

    5. Your star collection. When you win a game, you get a happy yellow star. Once you earn two, you win the match! In this case the player won the first game, lost the second, and the third star is being contested.

    6. The clock keeps track of how long the current game has taken. In solo mode you must survive for eight minutes to win. In online play the clock has no purpose what so ever.

    7. The four orange blocks have been eliminated and are disappearing. Any time three or more of the same color blocks are in a row, they eliminate. In this case, since the elimination is more than the minimum size of three, a '4' appeared to let the player know he was doing a good job. The rectangular-ish white thing is your cursor. You control it with the arrow keys and use it to manipulate the colored blocks in your stack.

    8. These are the blocks in your stack. You can use your cursor to swap blocks which are side-by-side in order to put blocks of like color into a row, which causes them to eliminate. And you'd better be quick about it, because your stack will creep up from the bottom and once it reaches to top of the screen, you loose.

    9. This is a piece of garbage in your stack. When your opponent does something clever, for example eliminating four blocks at once, garbage will fall from above, cluttering your stack. You can shatter garbage into normal blocks by causing a bordering elimination.

    Play Control

    Play control is very simple.
    Arrow Keys

    Move your cursor

    Space Bar

    Swap the blocks your cursor surrounds.

    Enter

    Advance your stack upwards one row.

    P | p

    Pause the game. During online play, either player is able to unpause a paused game.

    Esc

    Concede the current match or exit Crack Attack! after a match.

    Game Play

    The Basics

    Slowly, your stack of blocks grows from the bottom, and you've got to make sure it never reaches the top. If it does, you lose. To eliminate blocks from the stack, line up at least three of one color, horizontally or vertically. Once you do, those blocks disappear, and put off slightly your inevitable demise.

    To add to the excitement, chunks of red garbage will fall from above. It is impossible to eliminate this garbage directly. However, if you eliminate any blocks which are touching the garbage, the garbage will shatter into normal, run-of-the-mill blocks.

    Throughout the game your stack of blocks will slowly grow from below, initially quite slowly but always faster and faster. When the stack reaches the top it will pause and you have seven seconds to save yourself. Otherwise, you lose. It is possible, however, to get a momentary repose from your stack's assent. When you eliminate a block or cause garbage to shatter, the growth of your stack will pause. Even if your stack has reached the top and you're about to lose, you will be given a little more time to save yourself. Time during which a block is disappearing or a chunk of garbage is shattering does not count towards your seven seconds.

    Multiple Eliminations

    So, what is it that causes this garbage? Well, the garbage is your opponent's way of sticking it to you; and, conversely, your way of sticking it to him. While any old slod can eliminate a ho-hum three blocks, a true master will eliminate four, five, or even more blocks at one time. And when he does, not only will he be rewarded with a little light show, but garbage will come raining down onto his opponent's stack! Just remember, the bigger the elimination, the bigger the downpour.

    Combos

    Beyond the multiple elimination method, there is yet another technique to generate troublesome garbage. I speak of the dreaded combo. Whenever you eliminate blocks, it's likely to cause other blocks to fall, either simply because they were above the eliminated blocks, or because you have freed them from a piece of overhanging garbage. If, when these blocks fall, they cause a second elimination, you've got your self a combo. If you're good enough to keep the combo rolling, your combo multiplier will increment for each elimination. And, when the combo is finally complete, a massive chunk of garbage will descend upon your opponent, it's size proportional to your final multiplier.

    Solo Mode

    What happens in solo mode when you generate a brilliant combo? Well, you take it right in the face. Any garbage that you generate falls onto your own stack. Sound stupid? So, sue me! Crack Attack! wasn't made to be a single player game. Solo mode was originally just a debug mode, but when my office mate began playing it non-stop, I thought I ought to leave it in. Plus, the system is not as dumb as it sounds. If you plan on lasting eight minutes, you'd better send some garbage your own way. Remember that your stack pauses its upward creep whenever garbage is shattering, but the clock keeps ticking.

    Gray Block

    While there is little more to say about the five standard colored blocks, there is an additional color of block, more rare than the others, the gray block. Even the elimination of just three gray blocks generates garbage, and this is no ordinary garbage. Normally when a piece of garbage shatters, the effect propagates on, destroying all garbage that it is in contact with. Often just one well placed elimination by your opponent can shatter all of your hard earned garbage. Well, gray garbage stops shattering propagation like a firewall and can only be destroyed by an elimination in direct contact with it.

    X-treme Play Mode

    For those who have mastered the art of Crack Attack! and hunger for something more, we offer Crack Attack! X-treme!!! In Crack Attack! X-treme long lost block types, thought by some to be extinct, have resurfaced. Gone is the ho-hum, work-a-day world of the lone gray special block type. Replacing it is a cavalcade of color: over eight special block types!

    Use the -X command-line option to access X-treme play mode. One should note that normal play mode is the true test of one's Crack Attack! skill. While normal play mode can be likened to chess, X-treme play mode is more akin to winging a super ball as hard as you can in a small room, and seeing who gets hit first. It's fun, just a bit random.

    In Crack Attack! X-treme no block can be trusted and nothing is as it seems!

    Wild Block

    This crazy block can't decide which color it wants to be! Slowly it shifts though the spectrum, hoping to cause an unexpected match.

    Special Orange Block

    This baby lays out a hunk of garbage taller than it is wide, guaranteed to add height to your opponent's stack, and quick!

    Special Yellow Block

    Knock your opponent flat with this block's diseased garbage! All his controls will be reversed until he can figure out a way to shatter the garbage and cure himself.

    Special Green Block

    Special green blocks generate poisoned garbage which blinds your opponent! Well, sort of. Actually, it will cause his cursor to flicker and then disappear. The cursor will remain nearly invisible until the poisoned garbage is shattered.

    Special Blue Block

    When you cause the blue garbage generated by this special block to shatter, instead of turning into blocks, it becomes normal garbage. What a pain!

    Special Purple Block

    Forget those big, easy-to-shatter chunks of connected garbage. Any elimination with this block causes a veritable downpour of miniature purple garbage onto your opponent's stack. That stuff has a nasty habit of getting into all the wrong places.

    Gray Block

    This old guy's still along for the ride. You'll need him to help eliminate his relatives.

    Ancient Ancestors of the Gray Block

    There are rumored to be even more rare and powerful block colors, lost relatives of the gray block. Legend speaks of a black block and a white block, one which generates obsidian garbage that is nigh impossible to shatter and the other which generates pearl garbage and has dominion over the sun itself!

    Advanced Features

    Personal Garbage Image

    Crack Attack! is fully customizable!

    That is a big lie. However, you can get it to use your own personal giant garbage image. Often, whenever you lay a really serious piece of garbage down on your opponent, it will have some sort of inspirational message on it. Normally, Crack Attack! chooses an image at random from its little stock pile. However, if you specify your own personal image, Crack Attack! will use it more often than not. During online play your image will be placed on any giant pieces of garbage which fall on your opponent. With solo play the image will be used on garbage you send to yourself. Just think of the possibilities! You can communicate your views on your opponent's intelligence, at the same time as you play a rousing game of Crack Attack! You could propose to your girlfriend, assuming she's enough of a loser to play Crack Attack! The list goes on.

    A personal garbage image must be 128x128 or smaller. Save the image as an uncompressed TGA with alpha channel. Name the image file garbage_flavor_my.tga and put it in Crack Attack!'s data directory. Remember, do NOT use RLE compression when saving. Why? Because I'm too lazy to code up an uncompressor but too proud to use someone else's. Plus, your hard drive is huge. When creating a personal garbage image, use a transparent background and keep in mind that that transparent background will become red once the image is placed on the garbage.

    As you play against a multitude of opponents, Crack Attack! will accumulate a set of garbage images and will use them from time to time. If you manage to obtain a garbage image which is of particularly bad taste and you'd like to be rid of it, find it in Crack Attack!'s data directory. It will be among the files named garbage_flavor_###.tga. Then, simply delete it.

    Final Notes

    Potential Improvements

    Believe it or not, there are improvements which could be made to Crack Attack!
    • Improved Socket Code

      Crack Attack!'s socket code was written based on my experience with parallel scientific simulation code. And no one has ever accused a piece of academic simulation code of being nimble. That is, my socket use is perhaps a bit naive, and I doubt it deals as effectively as it might with such things as not having a direct and dedicated connection. Much to my surprise, games have been successfully played between opponents on opposite coasts. None the less, there is still much for me to learn when it comes to writing robust, time-critical socket code. Until then, your best bet is to stay inside your LAN.

    • Triangle Strips

      I'm lazy and thus never got around to triangle stripping the basic block. As it is the block has over five hundred vertices. That's almost embarrassing.

    • Windows Version

      I've made a half hearted attempt at getting Crack Attack! to run under Windows. What is the problem? Well, crazy things happen to my textures. The creation of garbage causes crashes. WinSock, although it is very similar to UNIX sockets, doesn't seem to want to work for me. Windows also has hateful OpenGL 1.2 support, although I've been told how to get around that. So, it will require some time and attention. Wouldn't it be great if my Mom could play this someday?

    • Sound

      I'm only one man!!! I don't have the time or the tools right now.

    • Chat

      Want to chat during a game? Go download AIM.

    • Money

      Someday someone will pay me to do this kind of crap. And I'll have an artist!

    Thanks to...

    Wade Lutgen, friend and co-conspirator | Roland Peetz, play tester | Greg Kilcup, my infinitely patient graduate studies professor | Andy Colebourne, creator of AC3D - used to model the basic block | Mark Kilgard, creator of GLUT | the GIMP team | Mom

    GNU General Public License

    Copyright (C) 2000 Daniel Richard Nelson

    174 W. 18th Ave.
    Columbus, OH 43210 USA
    dnelson@pacific.mps.ohio-state.edu
    aluminumangel.org

    This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

    The GNU General Public License can be found online at http://www.gnu.org/copyleft/gpl.html. Additionally, a copy can be obtained by writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

    Disclaimer

    It is important to realize that the name of Crack Attack! X-treme play mode is meant to be humorous, and thus should not itself be the subject of derision. Thank you.

    Contact

    Direct comments, questions, praise, flames, and job offers to dnelson@pacific.mps.ohio-state.edu. Visit my homepage at aluminumangel.org.