KeyJ's kleine (21k) Billardsimulation
=====================================

(Hinweis: Nutzer von GNU-Systemen, z.B. Linux, bitte Punkt 6 anschauen!)


1. WAS IST DAS?

   Der Name sagt eigentlich alles: Es handelt sich um eine kleine, einfache
   3D-Billarsimulation in OpenGL.


2. WAS SIND DAS ALLES FR DATEIEN?

   README.de.txt         Lesen Sie gerade ...
   billard-low.exe       Spiel in 640x480/16bit mit niedrig aufgelsten Kugeln
   billard-standard.exe  Spiel in 1024x768/32bit mit normal aufgelsten Kugeln
   billard-ultra.exe     Spiel in 1600x1200/32bit mit hoch aufgelsten Kugeln
   billard-windowed.exe  Spiel als Fensterversion
   glut32.dll            Standardbibliothek GLUT, falls noch nicht installiert
   sources.zip           Der Qu(el|)ltext


3. WIE WIRD DAS SPIEL GESTEUERT?

   Lageverbesserung:
     Cursortasten        Kugel bewegen
     Eingabetaste        Position besttigen

   Zielen:
     Cursor Links        Queue nach links bewegen
     Cursor Rechts       Queue nach rechts bewegen
     Umschalt+Cursor     Queue _langsam_ nach links/rechts bewegen
     Cursor Ab halten    Schieen -- je lnger man die Taste hlt, desto hher
     Leertaste halten                die Geschwindigkeit

   Kamera einstellen:
     F1                  bersichtskamera
     F2                  Nahe Kugelkamera
     F3                  Entfernte Kugelkamera
     F4                  Tisch umfliegen
     F5                  Automatische Kamera (=bersicht oder Kugelkamera)
     BildAuf / BildAb    Hhe der Kugelkameras ndern
     + / -               Entfernung der Kugelkameras ndern
   Die "Kugelkameras" verfolgen immer die weie Kugel. Blickrichtung ist dabei
   die Rollrichtung der Kugel oder die Richtung der schnellsten sich bewegenden
   Kugel.

  Sonstiges:
     Q oder Esc          Programm beenden
     H                   Kurzhilfe anzeigen
     R                   Spielregeln einstellen
     N                   Neues Spiel
     D                   Zielhilfe ein-/ausschalten
     V                   Geschwindigkeitsvektoren der Kugeln anzeigen


4. WELCHE EINSCHRNKUNGEN GIBT ES?

   Physik:
   Die Spielphysik berechnet nur grundlegende Stoprozesse, Spin und Drall von
   Kugeln ist nicht realisiert.

   Spielregeln:
   Es ist nur eine kleine Untermenge der normalen 8-Ball-Regeln implementiert;
   auerdem lassen sich einige Regeln zustzlich ausschalten, um kleine Runden
   zwischendurch nicht unntig zu verkomplizieren :)


5. 21 KB? QUATSCH! DAS LIEGT DOCH SICHERLICH ALLES IN DER DLL-DATEI!

   Nein. Die glut32.dll ist eine Standardbibliothek, die nicht von mir kommt.
   Sie nimmt dem Programmierer lediglich das Erstellen und Verwalten des OpenGL-
   Fensters und das Text-Rendering ab. Ohne diese DLL wre das Programm ca. 10k
   grer, weil man dann all diese Sachen "von Hand" machen mu; allerdings ist
   das Programm dann nicht mehr plattformbergreifend lauffhig.

   Die 21 Kilobyte sind also "echt". Drei Komponenten sorgen dafr, da das
   Spiel mit so wenig Programmgre auskommt:

   1. Alle Texturen (Tisch, Kugelschatten, Kugelanzeige, Kugeln selbst) werden
      im Programm berechnet. Lediglich die Zahlen auf den Kugeln (und _nur_
      diese) sind vorberechnet. (Die Textur mit den Zahlen ist eine Graustufen-
      Bitmap von 42x540, mit einem RLE-hnlichen Verfahren auf 2,3 Kilobyte
      "vorkomprimiert".)

   2. Als Compiler wurde nicht einer von Microsoft oder Borland verwendet,
      sondern lcc-win32. Dieser vermag schon "aus dem Stand", also ohne
      besondere Tricks, kleine .EXEn zu erzeugen.

   3. lcc-win32 produziert eine EXE von 40 Kilobyte Gre, was sich mit dem
      Executable-Packer UPX weiterhin auf ca. 50% reduzieren lt. Auch die
      bereits komprimierte Zahlentextur lt sich dadurch weiterhin eindampfen.
      Nur das Icon kann man leider nicht komprimieren, es nimmt weiterhin knapp
      4 Kilobyte in der Datei ein.


6. WIE COMPILIERE ICH DAS SPIEL?

   Wer das Programm selbst compilieren will, bentigt einen installierten C-
   Compiler samt GLUT-Bibliotheken und -Headern. Fr lcc-win32 und GNU/Linux
   mit GCC liegen Beispiel-Makefiles bei. Auerdem bentigt man UPX, um die
   Executables zu komprimieren.

   Der eigentliche Compiliervorgang ist dann recht einfach: ein
     $ make all-releases
   sollte ausreichen. Je nach konkretem Setup sind evtl. noch kleinere
   Spielereien mit dem Makefile ntig.


7. DISCLAIMER (nein, es geht nicht ohne ...)

   "KeyJ's Billard" ist Open-Source-Freeware, das bedeutet, das Programm ist
   fr jedermann, auch im Quelltext, frei verfgbar und darf auch beliebig
   weitergegeben werden, so lange dafr kein Geld verlangt werden.
   Modifikationen am Quelltext und Weitergabe dieser Vernderungen unter
   denselben Bedingungen wie das Originalprogramm sind erlaubt; der Autor bittet
   jedoch aus reinem Interesse darum, benachrichtigt zu werden.
   Der Autor ist ferner fr keinerlei Schden, unmittelbar und mittelbar, die
   durch die Verwendung des Programms entstehen, haftbar zu machen.


                                                      (C) 2004 Martin J. Fiedler
                                                        <martin.fiedler@gmx.net>
                                           http://www-user.tu-chemnitz.de/~mfie/
