# BlitzBasic-Community-Tutorial

Dieses Buch steht im Regal Programmierung.

## Zusammenfassung des Projekts

* Buchpatenschaft/Ansprechperson: Mirco1989 und Axel Prignitz
    (Ich versuche erst einmal aus diesem schlecht stukturierten Müll, mit den unübersichtlichen und teilweise nicht funktionierenden Programmen etwas sinnvolles zu gestalten, aus dem auch Anfänger etwas lernen können) Jedoch wird der ganze Bereich Blitzbasic in der Buchreihe BlitzBasic neu, aber vor allem richtig und vollständig dargestellt werden
* Sind Co-Autoren gegenwärtig erwünscht?
    Bitte nur Autoren, die über gute Blitz3D- und Blitzplus-Kenntnisse verfügen auf der meiner Diskussionsseite melden. (Bitte keine copy/paste-Jongleure, die ungeprüft fremde Tutorials und Programme hier rein schieben).
* Richtlinien für Co-Autoren:
    Gibt es direkt von Mirco1989 oder Axel Prignitz, wenn man sich meldet.

## Einführung
### Wie teuer ist BlitzBasic und wo bekommt man es?

BlitzBasic ist GRATIS, es gibt auch keine "versteckten Kosten" oder Folge-Kosten. Um BlitzBasic zu erhalten und uneingeschränkt zu verwenden, braucht man nur einen Internetzugang. Auf der Homepage www.blitzbasic.com (Seite mittlerweile geschlossen) kann man schon Bilder einiger BlitzBasic-Programme sehen. Aber auf der Seite bitte nicht auf die deutsche Flagge klicken. (denn die führt zum deutschen Blitz-Forum. (Wenn man da doch geklickt hat, kommt man von BlitzForum mit der amerikanischen Flagge zurück)
Auf Höhe der Tableiste steht ganz rechts "Login or Signup". Wenn man dort auf "Signup" klickt, kann man für die Seite einen Account erstellen, mit dem man sich danach mit "Login" einloggen kann. Danach erscheint in der Tableiste Account . Durch einen Klick darauf erscheinen unter der Tab-Leiste neue Verlinkte Texte: "View profile", "Edit profile", "Product updates", "Register product" und "Logout". Zuerst sollte man auf "Register product" klicken, und die 3 Versionen "Blitz3D", "BlitzPlus" und "BlitzMax" registrieren. Dort, wo der "Registration code:" eingegeben werden soll, gibt man je nach Programm FREEBLITZ3D, FREEBLITZPLUS oder FREEBLITZMAX ein. Danach kann man bei "Product updates" beliebige Versionen der Programme GRATIS downloaden. Auch spätere Updates oder Installationen auf anderen PCs sind bei BlitzBasic IMMER GRATIS (und waren es auch schon bevor die Programme gratis angeboten wurden) Noch fairer kann eine Softwarefirma zu ihren Kunden gar nicht sein!

### Wo bekommt man Hilfe?

Zunächst einmal ist in jeder Blitzbasic-Version eine Hilfe (auf englisch) mit einer kompletten Funktionsreferenz integriert. Wenn man Blitzbasic gestartet hat, wird bereits die Startseite der Hilfe angezeigt, von der man auch viele gut dokumentierte Beispielprojekte(Samples) erreichen kann. Auch ein (kleines) Tutorial der wichtigsten Elemente ist enthalten, sowie 3 komplette Spiele als Quelltext. Ein umfangreiches deutsches Forum vielen Tutorials und Befehlsreferenz (alles auf Deutsch) findet man auf der Seite http://www.blitzforum.de jedoch erhält man auch dort keine fertigen Programmteile, die man nur noch zusammensetzen muss, (Das soll es auch in diesem Buch nicht geben) sondern man sollte schon verstehen, wie ein Programmablauf funktioniert, um eine Grundstruktur in eigenen Programmen zu verwenden und nach eigenem Bedarf zu erweitern.

### Unterschiede der 3 BlitzBasic-Versionen

BlitzBasic basiert auf der Basic-Syntax; das bedeutet, dass es eine der am leichtesten zu erlernenden Sprachen ist. Allerdings wurde BlitzBasic (kurz: BB) um einige neue Features ergänzt (Directx-Unterstützung, Grafikbefehle) und auf Windows und andere neuere Betriebssysteme übertragen. Dabei wurde die einfache Basic-Syntax auf weite Strecken beibehalten. Auch wurden einige Optimierungen vorgenommen.
Blitz3D (kurz: B3D) ist eine Erweiterung zu dem normalen Blitz. Wie der Name schon sagt, wird die Sprache durch einige spezifische 3D-Grafikbefehle erweitert. So können Würfel und andere 3D-Objekte durch einfache Befehle erstellt werden. Aber auch jede andere Form von 3D-Objekten kann programmiert werden, nur sind dafür mehr Kenntnisse zu Blitz3D erforderlich. Jede Art von Effekten, die es in neuen 3D-Spielen gibt, ist mit Blitz3D programmierbar. Blitz3D basiert auf dem Befehlssatz von DirectX7, was jedoch eher ein Vorteil als ein Nachteil ist, denn dadurch sind heute mit Blitz3D erstellte Programme ohne Anpassungen mit fast jeder Windowsversion seit Windows98 kompatibel. Neuere DirektX-Versionen bieten nur einige zusätzliche Funktionen, für deren Umsetzung man bei Blitz3D nur etwas mehr Programm schreiben muss. Doch auch für Blitz3D gilt, (wie für jede Programmiersprache) dass man nicht "mal eben schnell" ein Top-Programm erstellen kann, sondern es gehört sehr viel Übung dazu, bis man gute Programme schreiben kann.
BlitzPlus (kurz: B+) ist ebenfalls eine Erweiterung zu BlitzBasic. Wie auch B3D kann es fast alle 2D-Funktionen, aber keine 3D-Funktionen. Stattdessen kann mit B+ das sogenannte GUI (Graphical User Interface) verwendet werden. Damit lassen sich viele verschiedene Steuerelemente in Windows-typischem Aussehen schnell und einfach erstellen. Damit sind von einfachen Buttons über Texteingabefelder, Radiobuttons, Checkboxen und Listfelder bis zu Panels, Tab-Leisten und Menüs kein Problem mehr. Auch Farb-, Schrft- und Dateirequester, Messageboxen und auch ein kompletter Web-Browser sind mit wenigen Anweisungen erstellbar und steuerbar.
BlitzMax (kurz: BMax) ist eine weitere Version von Blitzbasic. Es hat wie BlitzPlus einen Blitz2D-Teil und einen BlitzGUI-Teil, ist jedoch Obejktorientiert. Außerdem ist BlitzMax Plattformübergreifend, also die Programme können ohne weitere Anpassungen auch auf Mac- oder Linux-Systemen compiliert werden. Dafür muss man sich nur (gratis) auf www.blitzbasic.com die entsprechenden BlitzMax-Versionen downloaden. Zu BlitzMax gibt es außerdem noch eine auf OpenGL basierende 3D-Erweiterung "MiniB3D", die jedoch gegenüber Blitz3D nur einen eingeschränkten Funktionsumfang hat.
Demoversionen mit stark eingeschränktem Funktionsumfang für die 3 Blitzbasic-Versionen gab es schon, als die Programme noch nicht gratis waren, heute besteht jedoch kein Grund mehr, die Demoversionen zu nutzen.
Ich empfehle Blitz3D zum Lernen von Blitzbasic, es hat zwar nicht die von anderen Sprachen gewohnten (und in B+ enthaltenen) Anweisungen für »Messagebox«, »Loadrequest«, »Colorrequest«, »Fontrequest«, dafür aber kann man diese Requester sehr viel flexibler und grafisch schöner selber programmieren. Auch hat B3D einen vollständigen Satz aller Blitz2D-Funktionen (bei B+ fehlen einige) und alle BlitzPlus-Funktionen sind in B3D programmierbar. (umgekehrt ist das nicht möglich)

## Inhalt

* Grundlagen
    Hier werden die Grundlagen der BlitzBasic-Programmierung und -Syntax vermittelt.
* Wir programmieren unser erstes Spiel (Textadventure)
    Hier liegt der Quelltext eines Textadventures vor. Fertige Codes sind ideal, um sich selbstständig in eine Programmiersprache einzuarbeiten.
* Grafik
    Hier werden die Grundlagen der visuellen Darstellung von Inhalten in BlitzBasic vermittelt.
* Kollisionen
    Hier wird die Abfrage auf Kollisionen in BlitzBasic erläutert.
* Sound
    In diesem Kapitel wird beschrieben, wie man in BlitzBasic Sounds einbindet bzw. abspielt.
* Wir programmieren unser zweites Spiel (Pong)
    Hier wird anhand eines Tutorials gezeigt, wie man Spiele in BlitzBasic schreibt.
* Zugriff aufs Dateisystem
    Hier wird der Umgang mit dem Dateisystem in BlitzBasic näher erläutert.
* Multiplayer
    Hier wird die Möglichkeit in BlitzBasic, über das Netzwerk und über das Internet zu kommunizieren, erläutert.
* Videos
    BlitzBasic unterstützt sogar die Wiedergabe von Videos. Wie man die Videowiedergabe realisiert, wird hier erklärt.
* Speicherbänke
    Hier wird der Umgang mit Speicherbänken in Blitz beschrieben.
* Einführung in Blitz3D
    In diesem Abschnitt liegt eine kurze Einführung in Blitz3D (B3D) vor.
* Wir programmieren einen 3D SpaceShooter
    Hier liegt ein unfertiges Tutorial vor, dass den Umgang mit 3d-Objekten verdeutlichen soll.

## Zusatzprogramme

Sicher, ein Spiel funktioniert auch wenn man eine Meute brauner einfarbiger Ovale über den Schirm wetzen lässt und an jeden "Keks" dranschreibt. Aber zufriedenstellend ist das für die meisten Programmierer nicht. Deshalb hier eine Zusammenstellung praktischer Zusatzprogramme:

### 2D-Programme/Bildbearbeitungsprogramme

Mit ihnen lassen sich Bilder und Texturen erstellen:
* Paint.NET
    Die kostenlose, erheblich umfangreichere Alternative von Paint. Die Software ist schnell geladen und bietet neben Ebenen genug Funktion professioneller zu zeichnen.
* GIMP
    Ein sehr mächtiges Bildbearbeitungsprogramm, was schon sehr nah an kommerzielle Programme wie Photoshop heranreicht.

### 3D-Programme

* Wings 3D
    Kostenloser und einfach zu benutzender 3D-Modeller. Gerade für Anfänger ist dieses Programm ein Segen, da es auf den ersten Blick nicht so überladen ist und trotzdem viele wichtige Funktionen bereit stellt, so zum Beispiel auch einen UV-Editor. Die Engine basiert auf dem 3D-Modeller Nendo und kann sich daher gut sehen lassen, allerdings hat Wings 3D Schwächen im Bereich Rendering und Animation. Wings 3D ist besonders gut für Low-Poly Modelle geeignet.
* Blender
    Sehr leistungsstarkes, kostenloses Open Source-3D Programm. Es werden viele gängige 3D-Formate und Betriebssysteme (u.a. Windows9x/ME/2000/XP/Vista/7/Mobile, Linux, MacOS X) unterstützt. Es ist vor allem für Anfänger empfehlenswert, da es viele kostenlose Anleitungen gibt.
* Milkshape
    3D-Modeller, der auf das Wesentliche reduziert ist. Glänzt vor allem durch haufenweise Import- und Exportformate, speichert auch in ".b3d". Nach 30 Tagen kostet die weitere Nutzung der Speicherfunktion von Milkshape 25 Euro.
* Cinema 4D
    Auch als "6CE"-Version erhältlich, welche aber nur sehr selten auf Heft-DVDs/CDs erscheint. Kostet allerdings dann auch nicht mehr als 10 Euro. Ansonsten ist es in der oberen Preisklasse angesiedelt, bietet aber auch dementsprechend viel Professionalität.

### Sonstige Programme

* UPX
    Sehr nützlich zur Komprimierung fertig kompilierter EXE-Dateien.
* Ressource-Hacker
    Programm zum Ändern der Ressourcen ausführbarer Dateien, u.a. die Icons von EXE-Dateien. Alternativ kann das Programm kann aber auch bei Chip heruntergeladen werden.

### Was aber auch geht...

Mit fortgeschrittenen BlitzBasic-Kenntnissen kann man sich regelmäßig benötigte Zusatzprogramme selber schreiben, was gleich mehrere Vorteile bringt:
* Das Einarbeiten in fremde Programme entfällt.
* Eigene Programme können um jede gewünschte Programm-Funktion erweitert werden.
* Eigene Dateiformate unterbinden den Diebstahl von Grafiken und 3D-Objekten.

## Siehe auch

* Einführung in BMax - Eine Einführung in BlitzMax, einem objektorientierten BlitzBasic-Dialekt, findet sich in dem Buch BMax-Doku.