3D-Space-Game-001.bb
;-------------------------------------------------------
;
; 3D Space Game Tutorial
;
; (C) by Turgut Frank Temucin alias TFT
;
; Alle Rechte verbleiben beim Autor. Die Veröffentlich-
; ung außerhalb des BlitzForums ist nur mit Genehmigung
; gestattet. Der Source-Code ist Freeware und darf für den
; privaten Gebrauch frei verwendet werden.
;
;-------------------------------------------------------
; File: 3D-Space-Game-001
; Date: 24.07.03
;-------------------------------------------------------
; BB3D: 1.83
;-------------------------------------------------------
; Mein dank an: Markus und HotBit
;-------------------------------------------------------
;
; Vorwort:
;
; Dies wird ein Tutorial, das sich mit der Erstellung
; eines 3D Space Games ala Elite befaßt. Oder wie die
; neueste Kreation von Microsofts Freelancer. Grundlegend
; möchte ich darauf hinweisen, daß Feedback sehr er-
; wünscht ist. Anregungen oder Rechtschreib- korrekturen,
; Fragen oder sonstiges, mailt mir bitte an folgende
; Adresse. turguttemucin@freesurf.ch. Ich weiß nicht, in wel-
; chen Abständen dieses Tut von mir weiter geführt wird.
; Grundsätzlich lege ich das Feedback als Maßstab an.
; Ich wünsche allen, die dieses Tut lesen viel Spaß, und
; hoffe, daß ich damit beitrage, das Verständnis für
; die Programmierung in BlitzBasic zu erweitern.
;
; -> Was soll es werden?
;
; Jeder der ein solches Game schreiben will, hat am An-
; fang 1000 Ideen, die er verwirklichen möchte. Mir ging
; es auch so. Aber je länger man programmiert, desto
; klarer die Erkenntnis: "Weniger ist oft mehr". Daher wer-
; den wir im Laufe dieses Tutorials, ein Grundgerüst
; entwickeln, das euch die Möglichkeiten aufzeigt, die
; mit BlitzBasic machbar sind. Um dieses Grundgerüst
; zu erstellen, benötigen wir einige Hilfsmittel.
;
; Blitz Basic 3D (auch DEMO version möglich)
; Blitz Hilfe 1.82 von BlitzBase.de. Der weltbesten
; Deutschen Online Dokumentation von
; TheShadow...........
; DOGA L1 Für das erstellen der Objecte.Es
; werden keine Kenntnisse im bereich
; Modell- erstellung benötigt.
; Internet Eine Verbindung zum Internet ist
; fast zwingend nötig. Da diverse
; Sachen dort besorgt werden müssen.
; Zeit Ohne die geht gar nichts.
;
; Es kommen mit Sicherheit noch einige andere Programme
; hinzu. Dazu aber später mehr.
;
; -> Wo fangen wir an ?
;
; Gute Frage. Am besten machen wir uns erst mal einen
; Eindruck von dem, was wir erreichen wollen. Da wäre
; zum Beispiel der Weltraum. Ziemlich gross das Teil.
; Den müssen wir irgenwie darstellen. Dann brauchen
; wir auch noch was zum Fliegen. Ein Raumschiff wäre
; schon nicht schlecht. Und ein paar Sachen, die in der
; Gegend rumschwirren, damit man die eigene Bewegung
; auch sieht. Behalten wir das mal als Ziel im Auge.
;
; -> Und los !
;
; Jeder, der schon einiges an Erfahrung hat, wird jetzt
; aufstöhnen. Aber ich finde, mit Learning by Doing
; kommt man am Anfang am weitesten. Schaut euch den
; nachfolgenden Code an, und testet ihn mal. Es handelt
; sich dabei um den Main Loop und die Bildschirm- Ini-
; tialisierung. !! Im übrigen gehe ich davon aus, daß
; bekannt ist, was mit diesen Worten gemeint ist. !! Die
; jenigen von euch, die bestimmte Begriffe nicht kennen,
; können entweder mich direkt per EMail fragen, oder im
; Forum.
; ------------------------------------------------------
;
; Als erstes werden ein paar Konstanten definiert. Diese
; sind unveränderbar und immer Global.
Const screen_x=640
Const screen_y=480
Const screen_m=2 ; Bildschirm Modus
; 2=Fenster 1=Fullscreen
Const screen_t=16; 16 Bit oder 32 Bit Bildschirm
; Dann wird der Bildschirm geöffnet
;
Graphics3D screen_x,screen_y,screen_t,screen_m ; Den Bildschirm öffnen
SetBuffer BackBuffer() ; das DoubleBuffering activieren
; Danach die Kamera- und Licht-Einstellungen
;
Global Cammera=CreateCamera() ; Ohne Kamera sieht man nichts
Global licht=CreateLight(1) ; Für das richtige Ambiente muß eine ordentliche
; Lichtquelle her.
RotateEntity licht,0,90,0 ; Das Licht in die richtige Richtung
; Jetzt wird ein Objekt erzeugt und positioniert
;
Global ball=CreateSphere(8) ; Eine Kugel erstellen
PositionEntity ball,0,0,3 ; Und vor die Kamera stellen
; Nun kommt der Main Loop
;
Repeat
TurnEntity ball,0,.1,0 ; Das Objekt wird bewegt/gedreht
RenderWorld ; Bild berechnen und zeichnen
Flip 1 ; Seite wechseln
Until KeyHit(1) ; Abbrechen wenn ESC gedrückt
; Und zum Schluß das Ende
;
End ; Alles beenden
; ------------------------------------------------------
;
; OK. Das was ihr jetzt seht, ist noch nicht so toll. Aber
; es geht schon was . Ein paar Zeilen genügen, um ein 3D-
; Objekt zu erstellen und zu bewegen. Aber für ein Welt-
; raum Game ein bißchen dürftig. Also werden wir erst
; mal etwas Farbe ins Spiel bringen. Die Kugel eignet
; sich hervorragend zur Darstellung eines Planeten. Also
; besorgt ihr euch als erstes mal eine Textur für einen
; Planeten. Dazu müßt ihr nur bei Google unter "Suchen"
; folgendes eingeben. "planet and textur" und schon
; werden euch etliche Seiten mit Planeten-Texturen an-