![]() |
3D Spiel
Hallo zusammen!
Ich würde gern ein 3D-Spiel machen. Vorerst bräuchte ich dazu nur die richtige Software (Freeware) mit einem Leveleditor. Denn mein Ziel ist es erstmal einen Level zu erstellen, in dem man sich frei bewegen kann. (Dazu dann eine Story zu programmieren ist erstmal zurückgestellt, sollte aber auch möglich sein, am besten in object pascal...) Kennt jemand solche Software, mit der man leicht 3D-Spiele machen kann. Es sollte am besten schon so viel wie möglich integriert sein. ZB. Die Kollisionsabfrage möchte ich nicht selbst programmieren, sondern solche sachen sollte es schon geben. Danke schonmal! Simon |
Re: 3D Spiel
Ja
![]() |
Re: 3D Spiel
|
Re: 3D Spiel
Oo. die bücher kann ich NICHT empfehlen...
und wennes wirklich einfach sein soll ist GLScene im verhältnis zu den möglichkeiten VIEl einfacher |
Re: 3D Spiel
Zitat:
|
Re: 3D Spiel
hello
ich benütze gerade GLScene, und ich bin sehr zufrieden damit in etwa 1er stunde hab ich es gekonnt... bye |
Re: 3D Spiel
Zitat:
|
Re: 3D Spiel
Zitat:
wenn ja, hat wer eine deutsche anleitung? englisch würds auch tun, aber deutsch wäre besser ;-) |
Re: 3D Spiel
|
Re: 3D Spiel
Also erstmal vielen Dank für die vielen Antworten!
@ inherited und alle die erfahrungen mit Genesis3D haben: Ist Genesis3D wirklich eine gute engine? Kann ich damit auch wirklich besonders detaillierte level machen oder ist genesis3D nicht leistungsfähig genug? Ich weiß dass zb. Irrlicht eine sehr leistungsfähige Engine ist, aber um da erstmal etwas erfahrung zu sammeln wäre wohl ein Buch das beste... Anders oder schneller als mit nem Buch werde ich mich wohl kaum in so ein Thema einarbeiten können. :( Kennt jemand noch andere empfehlenswerte Bücher zu solchen Engines (Muss nicht unbedingt Pascal als Programmiersprache sein)??? |
Re: 3D Spiel
Genesis3D benutzt DirectX 7 (oder 6?! aber ich glaube 7) (also auf jedem Fall in diesen beiden büchern) und ist vergleichbar mit HL/CS (benutzt als maps auch die bsp dateien als format).
|
Re: 3D Spiel
Zunächst einmal: Ich hab das Buch "Game Programming for Kids". Ob ich's empfehlen kann oder nicht? Hmmm, ich hab's bisher noch nicht durchgearbeitet. Allerdings ist auf der beiliegenden CD alles dabei, was man braucht. Des weiteren kommt's (meiner M;einung nach) immer auf das Verständnis des Lesers an. So oder so, man sollte (was auch im Buch steht), sich mit Delphi auskennen.
Naja, und zum Thema 3D: Nun, 3D ist (meiner Erfahrung nach) nicht grad einfach. Grade Spiele (Level, Gegner, usw.) ist ein erheblicher Aufwand, das sollte Dir klar sein - so'n Ding hat man nicht unbedingt in einem Monat (vor allen Dingen, wenn man aleine an diesem Projekt arbeitet!!!) fertig. Mein Tipp wäre an dieser Stelle: Geh einfach mal in eine Bibliothek, besorg Dir Bücher über 3D und Delphi. Und such im Internet nach entsprechenden Tutorials (Links sind ja oben angegeben) |
Re: 3D Spiel
Ich hab mir
![]() |
Re: 3D Spiel
Proffessionelle Spiele? die aber alt sind.
wie proffessionell ein spiel ist, hat nichts mit der engine zu tun... aber was mich von den büchern abhielt, ist dass am anfang steht, alles würde gründlich erklärt werden, dann steht aber am anfang jeder schritt einzeln erklärt und dann nur noch gelegntlich, obwohl neue begriffe eingeführt werden So kam es manchmal vor, bei der "beschreibung", WIESO etwas so gemacht wurde und nicht anders, dass der autor entweder keine ahnung hatte, oder einfach keine lust hatte das zu beschreiben... und dann kann ich das buch nicht empfehlen, um zu lernen, denn dadurch das man nicht weiß, WIE es funktioniert, lernt man meiner meinung nach nicht viel. und wenn man sowas dann in der praxis braucht, ist man aufgeschmissen, weil es sich nicht eingeprägt hat, und so muss man immer wieder das buch zur hand nehmen, auch wenn man es schon zweimal gelesen hat. EDIT: also glscene ist ziemlich leistungsstark. man kann ohne probleme z.B. einen schatten werfen lassen oder auch shader verwenden, weil man nicht alle parameter und befehle, um directx (bei genesis3d) bzw. bei opengl (glscene) direkt zu steuern kennen muss, sondern man behandelt z.B. einen feuerball als object, bei dem man die x position verändert und glscene erledigt die arbeit sofort, indem die flammen korrekt neu berrechnet werden. |
Re: 3D Spiel
Nun GLScene lässt keine Wünsche offen man kann auch noch OpenGL benutzen nur GLScene selbst ist OO und in die IDE integrierbar dadurch kann man einfach Objekte erstellen auch alle gängigen 3D-Formate wie ".3ds" werden unterstützt. Das Positionierungs System von Objekten ist einfach Klasse, man kann nicht nur Objekten direkt Positionen Zuweisen sondern auch Objekte bewegen und einfach drehen. Auf einen modernen Rechner läuft GLScene 1a.
|
Re: 3D Spiel
Hallo blablab,
Nu will ich doch auch mal meinen Senf ablassen ;) Also ich habe definitiv ein winzig kleines 3D-Game geschrieben. GLScene mus ich ehrlich gestehen hab ich bis heute nicht verstanden. Mein Game benutzt die Standart OpenGL routinen, die uu. sogar dirkt aus der OpenGL.pas exportiert werden können. Sehr empfehlen kann ich da die tutorials vno ![]() Die Idee bzw den willen ein 3d Spiel zu schrieben finde ich sehr gut, allerdings immer ein schritt nach dem anderem wäre zu empfehlen. Eine Enginge wie GLScene ist bestimmt nicht schlecht, ich finde aber ein Anfänger ist mit der fülle an möglichkeiten etwas erschlagen. Ich selbst plane schon seit Jahren an einem Riesen 3D-Spiel und habe mit ![]() Ich weis nicht wie sehr du dich mit solchen Dingen auskennst ( 3D - Mathematik , OOP , Schrittketten ( bzw. Zeitgesteuerte Abläufe )) aber ich kann dir nur Raten erst an kleinen Projekten zu üben und alle Möglichen Fälle aus zu probieren bevor du dich an ein Echtes großes Projekt wagst. Sonst ist evtl die enttäuschung schnell da und groß. Oder es geht dir wie mir das du ständig nachbessern must. Zudem kommt ja noch das wenn du Dateien wie 3ds einbinden willst du nicht nur OpenGL Programmierung lernen must sondern auch ein 3d Programm ähnlich dem 3D-Studio-Max das dir die 3ds dateien erstellt. Wenn du Es Richtig machen willst, so das du definitiv auch was davon hast, schreib dir deine Engine sebst, oder noch besser mit einem Freund der ähnlich viel und gerne Programmiert wie du. Dann würde ich dir Dringend empfehlen, genaue Ziele fest zu legen( und erst sonderwünsche machen wenn alle ziele erreicht sind ). Und stell dich drauf ein das du sehr viel zeit in dein Spiel investieren mus wenn es einigermasen gut werden soll. Als grobes Maß ich habe momentan knapp 30000 zeilen code in etwa 14 Wochen erstellt, dabei habe ich unter der Woche ca. 4 - 6 h und an den Wochenenden bis zu 12 h Programmiert. Und zu letzt, wenn du dich erst mal dran gesetzt hast dein Spiel zu schreiben, schreibe alles so das du es nachher leicht ändern kannst, bzw das der Code sich späteren wünschen evtl automatisch anpasst. Wärmsten zu empfehlen OOP je mehr du Ableitest und vererbst desto mehr arbeit sparst du dir. In meine Game gibts z.b. ne Basisklasse von der alle Objecte abgeleitet sind. Neben dem Rendern übernimmt die dann auch solche sachen wie Positionsdaten speichern, Collision mit anderen Objecten, drehungen ... [edit] Ach und wegen des Leveleditors. Ich bin der meinung das du dir nen gewaltigen gefallen tust wenn du ihn slebst schriebst. So kannst du die möglichkeit schaffen das andere auch levels erstellen können, oder etwa das du Features hinzufpgst die ein Normaler Editor vielleicht gar nicht unterstützt. Auch kannst du so dein Eigenes dateiformat wählen. Zusatzinformationen mit in die Levels speichern und und und wenn du es nur machst um nicht gegen Lizencen zu verstosen oder welche kaufen zu müssen. [Edit] Link Korrigiert |
Re: 3D Spiel
Zitat:
|
Re: 3D Spiel
OT: bei corpsman's link muss das www weggelassen werden, sondern gehts nicht
|
Re: 3D Spiel
Zitat:
Wenn du in dem Buch einiges nicht verstanden hast, könnte das ja vielleicht auch daran liegen, dass du aufgrund deines Alters die erforderlichen mathematischen Kenntnisse in der Schule noch nicht hattest. Ich weiß jetzt nicht, wann genau Trigonometrie in der Schule drankommt, aber bei mir war's glaub ich erst in der 10. Klasse, und Vektor-Rechnung hatte ich selbst auch noch nicht (bin jetzt in der 12. Klasse). Edit: @ Corpsman: Du hast was davon geschrieben, einen Leveleditor selbst zu schreiben, gibt's dazu irgendwelche Tutorials im Internet, ich hätte jetzt nämlich keinen Plan, wie das gehen soll (dass es geht, beweist du ja mit deinem Spiel). |
Re: 3D Spiel
Genesis3D ist eine sehr schwere und von der Grafik her eine absolute Schrottengine.
GLScene muss man auch erst lernen, ich würde die Zeit lieber gleich in eine richtige Engine, statt VCL-Zeugs, investieren. |
Re: 3D Spiel
@ 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:
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.
Type TLevel = Class
Private Public end; 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:
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.
..
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; .. Ich hoffe das gibt euch eine Grobe Idee, für weitere Fragen stehe ich natürlich gerne zur verfügung. |
Re: 3D Spiel
Danke für den Einblick in deine Level-Editoren. Wenn ich dich richtig verstehe, speicherst du die Welt also 3-dimensional in Arrays und zur Darstellung rechnest du sie dann wahrscheinlich unter Berücksichtigung von Blickwinkel und Kameraposition in ein 2D-Bild um, welches du dann immer wieder neu auf dem Bildschirm. Ist das korrekt oder wie schaffst du die Darstellung?
|
Re: 3D Spiel
@ Cöster
NEIN, Wenn ich das so machen würde wärs heftig. 1. Speichere ich nur die Opbjecte diese sind alle in einem eindimensionalen Array gespeichert. Jedes Element hat eine Variable Position. Für alle neugierigen hier die Basisklasse von der alle Objecte im spiel abgeleitet wurden.
Delphi-Quellcode:
Und alles was zum Zeichnen benutzt wird macht OpenGL für mich.
TBalancedObject = Class
private FTexture: GLuint; // Pointer auf die Graphik unseres Steines. Fposition: TVector3f; FSchwerpunkt: TVector3f; Fpoints: Array Of TVector3f; Froty: Integer; Function FgetRotationY: integer; Procedure Setschwerpunkt; public Property RotationY: integer read FgetRotationY; Property Texture: gluint read Ftexture; Function Position: TVector3f; Constructor create(Pointcount: Integer); Destructor destroy; override; Procedure RotateY(Angle: Integer); virtual; End; D.h. seit dem Frustumculling nicht mehr alles, aber fast.( für einen Anfänger macht man alles und versteht irgendwann wie's geht und baut dann das Frustumculling ein, oder so) was du mit Blickwinkel und gruscht meinst bruache ich nicht machen. OpenGL ist genau wie Form1.canvas Es gibt Zeichenroutinen die benutze ich, nur eben das alles 3D ist. Den ganzen Optischen gruscht macht dann das OpenGL für mich. Das Rendern eines Rechtecks passiert bei mir im Spiel z.b. so
Delphi-Quellcode:
Wenn man es ganz scharf betrachtet kann man die Procedure DrawQuadPolygon schon als Engine Bezeichnen.
Procedure DrawQuadPolygon(LeftTop, RightTop, RightBottom, LeftBottom: TVector3f; Texture: gluint = 0);
Begin // Einbinden der Graphik If Texture <> 0 Then glBindTexture(GL_TEXTURE_2D, Texture); // Öffnen des Quad Modus glbegin(GL_QUADS); // Zeichnen Links unten glTexCoord2f(0.0, 0.0); glVertex3f(LeftBottom.X, LeftBottom.y, LeftBottom.z); // Zeichnen Rechts unten glTexCoord2f(1.0, 0.0); glVertex3f(RightBottom.X, RightBottom.y, RightBottom.z); // Zeichnen Rechts Oben glTexCoord2f(1.0, 1.0); glVertex3f(RightTop.X, RightTop.y, RightTop.z); // Zeichnen Links Oben glTexCoord2f(0.0, 1.0); glVertex3f(LeftTop.X, LeftTop.y, LeftTop.z); // Beenden des Quad Modus glend; End; |
Re: 3D Spiel
Zitat:
|
Re: 3D Spiel
@Corpsman:
Mit 1 Jahr Schuldelphi und ansonsten keinerlei Programmiererfahrung ist das wohl noch nix führ mich. Vielleicht sollte ich mir erstmal auf ![]() @vlees91: Was wär denn konkret so ein Beispiel, bei dem das Buch deiner Meinung nach nicht genug erklärt hat? |
Re: 3D Spiel
Hm, ich weiß nicht, ich hab ja selbst die bücher empfohlen. Klar ist bei glScene der einstieg leichter, aber(ich finde) man hat bei genesis3d später wesentlich mer möglichkeiten. Von Mathematischer seite her hatte ich keine großen Probleme.
|
Re: 3D Spiel
Genesis ist einfach nur schwer. Irrlicht ist viel leichter, wenn man einen Wrapper hat.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz