Home » Tutorials » Grafik und Spiele » Genesis3D und Delphi

Genesis3D und Delphi

Free the Game

Die letzte Methode sorgt für ein ordentliches Aufräumen, nachdem die 3D-Engine ihre Arbeit beendet hat und auch das Formular geschlossen wird:

procedure TForm1.FreeGame;
begin
  // Kamera, Welt und Engine freigeben
  if Camera <> nil then geCamera_Destroy (@Camera);
  if World  <> nil then geWorld_Free (World);
  if Engine <> nil then geEngine_Free (Engine);
  // Zeiger "nullen"
  Camera := nil; World := nil; Engine := nil;
end;

Wenn Ihr auf die Prozedur FreeGame verzichtet, würden nach der Rückkehr zu Delphi (bzw. zu Windows) die Daten für Kamera, Welt und Engine noch im Speicher herumliegen und sinnlos Platz belegen. Wir kommen aus dem Spiel aber erst wieder heraus, wenn isRunning den Wert true hat.
Glücklicherweise ist da ja noch die Methode ProcessMessages. Die sorgt dafür, dass Windows sich erbarmt und Mausklicks oder Tastendrücke an unser Programm meldet. Deshalb packen wir noch eine weitere Ereignis-Methode von TForm zum Quelltext dazu. Sie sorgt dafür, dass auf einfachen Klick mit der linken Maustaste das Spiel beendet wird. Dazu benötigen wir im Objektinspektor den Eintrag OnClick. Der Quelltext ist erfrischend kurz:

procedure TForm1.FormClick(Sender: TObject);
begin
  isRunning := false;
end;

Sobald der Wert von isRunning nicht mehr true ist, kann die Schleife in der Methode RunGame verlassen und dann auch die letzte Anweisung in FormActivate ausgeführt werden, die da lautet: Close.
Beim Schließen des Formularfensters wird noch kräftig aufgeräumt (FormDestroy) und dann die ganze Applikation beendet. Und schon habt Ihr dieses Tutorial überstanden. Immerhin sind damit die Grundlagen geschaffen, sich mit dem Gespann Delphi und Genesis3D in selbst erstellte 3D-Welten zu begeben.
Mehr als ein Standbild jedoch kommt bis jetzt leider nicht heraus. Um die Steuerung über Tasten und Maus sowie die Kollisionskontrolle kümmern wir uns im nächsten Tutorial.

Genesis-Konverter für neuere Delphi-Versionen

Es kann Probleme mit Genesis3D geben, wenn z.B. Delphi 6 benutzt wird.
Die auftretenden Probleme hängen offensichtlich mit den Zeilenenden der Quelltexte von Genesis for Delphi zusammen (die mal nur mit #13, mal mit #13#10 abgeschlossen werden).
Diese Probleme korrigiert das Programm G4DKorrekt.exe: Sämtliche G4D-Units werden kontrolliert und neu gespeichert, die alten Units werden von PAS- in BUP-Dateien umbenannt.
Download (215 KB)