Thema: Delphi 3D Spiel

Einzelnen Beitrag anzeigen

Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#21

Re: 3D Spiel

  Alt 11. Aug 2006, 17:24
@ Cöster

Tutorials gibts da leider keins, zumindest kenne ich keine.

Balanced ist nicht mein erstes Spiel das ich schreibe, von daher habe ich schon ein wenig erfahrung im Leveleditor schreiben gehabt.

Ich fange eigentlich immer gleich an.

Als erstes wird ne Klasse TLevel gebastelt.

Delphi-Quellcode:
Type TLevel = Class
      Private
      Public
     end;
Dann überlege ich mir was für ein Leveltyp ich haben will und wie ich die elemente im Level speichere, was für Proceduren Tlevel unbedingt haben mus und welche auf keinen Fall.

Im 2D- Bereich habe ich da bisher fast immer 2D-Arrays als Platzhalter der Koordinaten genommen.

In Balanced ( 3D ) habe ich Dynamische Arrays gemacht, da ein 3D-Array in den größen die es in meinem Game gibt ziemlich gewaltig werden würde.

Als nächsten wichtigen Punkt das Zeichnen / Rendern

Tlevel mus auf alle Fälle eine Zeichen Routine haben die du von deiner Anwendung aufrufen kannst ohne dir gedanken machen zu müssen.

D.h. in Balanced gibts Tlevel.render die Rendert mir dann einfach alles was es zum Level gibt.

Der Leveleditor beginnt dann schnell zu wachsen. Ich bin beim Balanced Leveleditor ja immer noch nicht fertig. Immer wieder baue ich neue Elemente ein.

Weitere Proceduren die es dann so gibt sind in Ballanced :
Delphi-Quellcode:
    ..
    Procedure DeleteObject(x, y, z: integer);
    Procedure RotateCoord(x, y, z, Angle: integer);
    Procedure Render;
    Procedure RenderSky;
    Procedure SaveToFile(Filename: String; viewer: Tviewer; Cursor3d: TCursor3d; bc: Boolean); // Still Gelegt
    Procedure SaveToFile2(Filename: String; viewer: Tviewer; Cursor3d: TCursor3d; bc: Boolean);
    Procedure LoadFromFile(Filename: String; Var viewer: Tviewer; Var Cursor3d: TCursor3d; Var BC: Boolean); // Still Gelegt
    Procedure LoadFromFile2(Filename: String; Var viewer: Tviewer; Var Cursor3d: TCursor3d; Var BC: Boolean);
    Procedure Loadhighscores(Filename: String);
    Procedure ClearLevel;
    Procedure Setnewton(Const Newtonworld: Pnewtonworld);
    Procedure UnsetNewton(Const Newtonworld: Pnewtonworld);
    Procedure Collision(PlayerPos: TVector3f; PlayerMat: shortint);
    Procedure Restart(Const Newtonworld: Pnewtonworld);
    Procedure ResetLevel(Const Newtonworld: Pnewtonworld);
    Procedure resetHighscore;
    Procedure setBarierGroup(ID: Gluint; Const Newtonworld: Pnewtonworld);
    Procedure SetCoordText(x, y, z: integer; Value: String);
    Function Coordid(x, y, z: integer): String;
    ..
Wie du sehen kannst gibts jede menge I/O schnittstellen. Ganz zu schweigen von den 96 Add Proceduren die ich hier mal nicht kopiert habe um den Post nicht unnötig auf zu blähen.

Ich hoffe das gibt euch eine Grobe Idee, für weitere Fragen stehe ich natürlich gerne zur verfügung.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat