![]() |
Spieleprogrammierung
Also ich will mich kurz fassen:
Ich hab vor ein Spiel zu programmieren, hab bis jetzt aber nur Spiele in Blitz BASIC geschrieben. Ich hab mal DelphiX angeschaut, hab kein gescheites Tutorial gefunden, sonst eigentlich ganz gut. Bei OpenGL brauch ich glaub ich C++ oder geht das auch mit Delphi? Und dei DirectX brauch ich auch C++. Muss ich denn extra C++ lernen? Oder geht das ganze auch mit Delphi? |
Re: Spieleprogrammierung
Du kannst OpenGl auch in Delphi in allen Versionen benutzten, Tutorials dazu gibt es hier zu mass. Beispielsweise hier:
![]() Gruß DelphiFreund |
Re: Spieleprogrammierung
Zitat:
|
Re: Spieleprogrammierung
|
Re: Spieleprogrammierung
Danke erstmal. Ich schau mir mal das an, schreib aber bitte weiter fleißig weiter in dieses Thema rein. Ist eigentlich OpenGL oder DirectX besser?
|
Re: Spieleprogrammierung
Zitat:
Ich denke beide haben ihre Vorzüge |
Re: Spieleprogrammierung
Hm...gute Frage. Was hat welche Vorteil, welche Nachteile? Was ist schneller? Was funktiert besser?
|
Re: Spieleprogrammierung
OpenGL hat den Vorteil, dass es nicht nur wie DirectX unter Windows läuft, sondern auch auf anderen Betriebssystemen (z.B. Linux).
Außerdem finde ich (Achtung: persönliche Meinung) OpenGL besser und leichter als DirectX. MfG Binärbaum |
Re: Spieleprogrammierung
Das hatte ich erwartet, dass OpenGL leichter ist, hat aber DirectX nicht irgendeinen überwähltigen Vorteil gegenüber OpenGL? Oder wieso höre ich niemals, dass ein Spiel über OpenGL programmiert wurde, aber wenn ein Spiel über DirectX programmiert ist, dann wird das manchmal sogar angezeigt, wieso? Das mit dem Linux finde ich gut.
|
Re: Spieleprogrammierung
Hi,
meine Meinung: DirectX ist viel leichter und logischer als OpenGL, hab aber keine Lust mich darüber zu streiten. |
Re: Spieleprogrammierung
Ich weiss nur, dass mir OpenGl nicht besonders liegt, ich bin damit nicht so richtig zurecht gekommen, DirectX könnte ich mal probieren ...
|
Re: Spieleprogrammierung
@gamer: in einem deiner
![]() Wenn du weitere Fragen bezüglich Spieleprogrammierung hast (API-unabhängig), stell sie. die OpenGL vs. DirectX-Flamewars würden in den oben genannten Thread besser hinpassen, wennse unbedingt nötig sind.... |
Re: Spieleprogrammierung
Generell ist es eine Frage der Philosophie. Schlägst Du Dich lieber mit Klassen und deren Doku herum => DirectX, wenn Du lieber strukturierte Programmierung verwendest, dann solltest Du OpenGL anschauen. Generell empfiehlt sich ein Vergleich von beiden um zu sehen, was einem wirklich besser liegt. Das es keine Spiele gibt die OpenGL verwenden, bringt mir ein Schmunzeln übers Gesicht ;) CS, Half-Life, Quake, Doom3, UT2k4-Engine zum Teil auch ... und entsprechende Ableger. Liegt wohl letztendlich am weniger intensiven Marketing ;) Leistungstechnisch wirst Du nirgendwo wirklich Vorteile haben. Letztendlich sind D3D und OpenGL nur Grafik-APIs die die Grafikkarte ansteuern. Die Algorithmen für die eigentlichen Problematiken sind meist erstaunlich identisch. Ich persönlich finde OpenGL leichter und kann auch DirectX. Ich denke mit dieser Kombination fährt man auch am besten, wenn man ein wenig intensiver sich mit den Funktionsweisen der APIs auseinander setzen möchte.
|
Re: Spieleprogrammierung
Allerdings ist eines in den meisten PC-Magazinen deutlich zu sehen:
Wenn man OpenGL verwendet, hat man mit weniger Frames eine passable Spielbarkeit, bei DirectX ist das nicht so! |
Re: Spieleprogrammierung
was ich zu den beiden sachen sagen kann:
(Un)DelphiX ist sehr einfach und wirklich schnell geproggt, nur hat man begrenzte Möglichkeiten... bei openGL bin ich noch am suchen, aber man sollte nur sagen, dass fast alles möglich ist, wenn man genug dafür coded ;) also meiner meinung nach sollte man DelphiX zum Einstieg nehmen und dann auf openGL umspringen :) |
Re: Spieleprogrammierung
Nein, die letzte Empfehlung kann ich in keinster Weise teilen, selbst wenn ich diesen Weg damals auch gegangen bin. DelphiX suggeriert von der Spieleentwicklung einen sehr falschen Eindruck und weckt auch schnell falsche Erwartungen. Vielmehr wäre es wichtig möglichst bereits zu Beginn sich mit Nachrichtenschleifen auseinander zu setzen. Gerade dann, wenn das Ziel OpenGL ist, würde ich eher zu SDL raten. Dies ist eine sehr native Schnittstelle, die auch einiges mehr vom Programmierer abverlangt als DelphiX. Als Entschädigung gibt es dann 2D, dass plattformunabhängig ist und direkt auf Spiele zugeschnitten ist. Für einen Einstieg findet man zahlreiche gute Beispiele (sei es OpenSource). Auch wenn der Einstieg schwerer fallen wird, hat dies einige sehr große Vorteile: 1. Man ist in diesem Bereich hoffnungslos verloren, wenn man a) nicht mit der Dokumentation klar kommt b) nicht schleunigst C/C++ zumindest "lesen" lernt. 2. Ist SDL der perfekte Unterbau um später 3D mit OpenGL nachzurüsten.
Hat man sich erstmal mit SDL angefreundet, stehen einem weitaus mehr Türen offen als bei DelphiX. Der Umweg über DelphiX hat mir im nachhinein fast gar nichts gebracht, weil man die "Schnittstelle" DelphiX lernte und dieses wissen weitesgehend nichteinmal bei der direkten Verwendung von DirectDraw mehr verwenden konnte. |
Re: Spieleprogrammierung
Bei Phobeus wundere ich mich, das er noch nicht auf dieses hier Verwiesen hat ^^:
![]() Also es gibt vor und nachteile bei OpenGl und DirectX ... ich will mal meine Sicht der Dinge (bin OpenGl-ler, aber was solls) darstellen: DirectX: Pro: - Bietet viele Loader für verschiedene Dateiformate mit sich - Wird von Microsoft stark supported - Hat eine Sound- und Eingabe-Api direkt dabei Kontra: - Lässt sich nicht auf andere Betriebssysteme portieren - Hat imho eine recht Hakelige Art und weise zu programmieren OpenGL: Pro: - Portierbarkeit auf andere Betriebsysteme - Schnellere Einbindung von neuerungen über Extentions, die mit jedem neuen Grafikartentreiber den weg nach OpenGl finden - Imho sehr einfache Struktur Kontra: - Man muss sich um Sound und Input selber kümmern (kann auch Pro sein ... ja nachdem... man kann aber in diesem Zusammenhang auch Direct X und OpenGl mischen ^^) - Wird teilweise von Microsoft sehr stiefmüttelrich behandelt (OpenGL-Support in Windows Vista wirds wohl nur im Fullscreen geben oder wenn man die ganz neue benutzeroberfläche abschaltet ...) Von der reinen 3d-Api (also Direct 3d gegen OpenGL) würde ich sagen sind beide Speed-mäßig gleichwertig (Half-Life, Quake I - III (IV), Doom I-III und viele viele daruaf basierende Titel und Hobbyprjekte haben bewiesen, das man mit OpenGL gut arbeiten kann, was Games angeht!) ... wobei halt die Portierbarkeit für OpenGl spricht sowie die einfache Handhabung, während für Dx sichelrich das integriete Laden von Texturformaten und einigen Modellen (*.x) spricht ... Ich finde es dürfte damit so ziemlich Geschmackssache sein, außer man will seine Programme gerne nach Linux portieren, etc. Von So Dingen wie DelphiX oder GlScene würde ich aber nur abraten ... die vemitteln einen flashcne Eindruck vom Game-Coding und man lernt hauptsächlich für den Müllkorb! |
Re: Spieleprogrammierung
Mit DirectX hat man halt nicht nur eine Grafikschnittstelle, sondern gleich noch alles andere was man für ein Spiel braucht. Und wenn man es sich beim Programmieren nicht zu kompliziert machen möchte, bringt DirectX auch noch die DirectX Extensions mit (eine umfangreiche Sammlung an Schnittstellen und Funktionen, die man anderenfalls mühsam selbst schreiben müsste).
|
Re: Spieleprogrammierung
Wenn man WIRKLICH was lernen will, erfindet man das Rad neu und baut sich wie ich, eine 3D Engine ohne Hardwareunterstützung, ohne opengl und ohne directx.
|
Re: Spieleprogrammierung
Zitat:
Außerdem: es treten trotzdem noch OpenGl.dll Fehler auf. ![]() Zitat:
@gamer: ist wirklich deine Sache Zitat:
Damit der Streit weiter geht :mrgreen: : Ich halte zu directx :zwinker: |
Re: Spieleprogrammierung
Zitat:
Naja vlt. kommt es auch drauf an wie die Spieleprogrammierer OpenGL und DirectX implentiert haben. |
Re: Spieleprogrammierung
ich will hier auch mal was loswerden: Es gibt kein besser oder schlechter, schneller oder langsamer, einfacher oder komplizierter bei OpenGL vs. DirectX. Alles ist Meinungssache bzw. Abhängig von der Programmierung.
Ein Spiel läuft mit OpenGL schneller als mit DX, ein anderes umgekehrt. Und nochmal das ganze umgedreht auf einer anderen Grafikkarte. Es gibt zu viele variable Faktoren um sagen zu können, das eine wäre besser, schneller oder sonstwas. Am Ende sieht so aus: Eine 3D-API ist immer so schnell, wie man sie auslastet. D.h. die Geschwindigkeit ist eher unabhängig von der API, sondern eher von der Programmierung, wie das ganze eingebunden wurde ect. Zudem spielt logisch die Hardware eine wichtige Rolle. Lange rede, kurzer Sinn: Es hat keinen Sinn darüber zu streiten, was man nehmen soll. Mein Tip: Probier beides aus. Les dich in beides ein bisschen ein, und schau was dir besser gefällt. Und noch ein Wort zu Dingen wie DelphiX oder GLScene: lass die Finger davon. Es ist so, alsob du lernen möchtest, ein Flugzeug fliegen und dabei den Autopiloten einschaltest... PS: Bezüglich OpenGL kann man mit weniger Frames spielen: Hä? Ein Frame ist ein Frame. Bei einer FpS-Rate fängts irgendwann an zu stocken und wird unspielbar. die FpS-Rate ist aber nicht API-Abhängig, sondern Abhängig von der Abtastungsrate unserer Augen. Ich versteh das Argument irgendwie nich :gruebel: |
Re: Spieleprogrammierung
An diejeniegen, die bei OpenGL als Vorteil die Plattformunabhängigkeit ins Feld geführt haben: habt ihr schonmal eine Anwendung geschrieben, die auf mehreren Plattformen läuft? Für einen Anfänger halte ich dieses Argument für völlig überflüssig.
Dann zur Aussage, dass OpenGL ja nur für Grafik sei: ja und? Wozu gibt es denn Libraries wie FMOD, Bass, HawkNL oder ähnliche? Ansonsten werf ich nochmal in den Raum, dass es auf meiner Webseite ( ![]() |
Re: Spieleprogrammierung
Ja, habe ich :)
Und ich denke auch, das geradebei kleinen Projekten es durchaus sinn macht die nach Linux zu portieren! Warum? Naja, recht einfach: es gibt sehr wenige Native Linux Spiele, die mit einer zeitgemäßen Grafik daherkommen. Die, welche es tun (komerzielle Projekte wie Quake, Doom oder Unreal Tournament) feiern unter Linux einen ziemlich guten Marktanteil am Game-Markt, halt einfach, weil es wenig Konkurenz in dem Segment gibt. Auch wenn man sich kleinere Games ansieht wie z.b. Tux-Racer: unter Linux kennt es fast jeder und viele haben es auf ihrer Festplatte ... aber ich wage es zu bezweifeln, dass das Spiel, wenn es für Windows only wäre so viele Leute begeistern würde. Selbst wenn es Freeware wäre nicht, weil der Markt überlaufen ist. Deshalb halte ich sehr viel von portierbarkeit, welche man teilweise ja sogar umsonstr bekommt ... man nehme nur mal Freepascal / Lazarus, SDL als Initialisierungsschnittstelle, OpenGl für die Grafik und von mir aus OpenAi für 3D-Sound und Newton für die Physik. Alle diese Packete sind genauso unter Linux vorhanden... man muss nur wenige Zeilen in den Headern des Quellcodes ändern um ein solches Projekt auch unter Linux-Systemen zu kompilieren. Ich finde der sehr geringe Aufwand ist für das was man bekommt (nämlich mitunser eine doch größere Zeilgruppe für sein Projekt) sicherlich angebracht in meinen Augen. Naja ... aber darum geht es an sich ja eigentlich nicht in diesem Thread ... es geht um OpenGl oder Direct 3d (DX wäre unfäir ... primär gehts ja um die Grafik-API) und da muss ich sagen haben wir ein nahezu Patt .... |
Re: Spieleprogrammierung
Prinzipiell hast du ja recht. Wenn man ein kleines (vorzeigbares) Spiel hat, erreicht man natürliche ein größeres Publikum, wenn man dieses sowohl für Windows als auch Linux (oder andere Plattformen) anbieten kann.
Wenn aber jemand fragt, ob er DirectX oder OpenGL lernen soll, ist ja davon auszugehen, dass derjenige Windows benutzt (sonst würde er erst gar nicht nach DirectX fragen). Häufig fehlt am Anfang auch noch das mathematische Verständnis, so dass einiges an Zeit vergeht, bis man etwas vorzeigbares hat. In der Regel fängt man ja mit rotierenden Würfel, o.ä. an, bevor man sich an 'größere' Projekte wagt. Und deshalb finde ich es anfangs völlig unerheblich, ob man plattformunabhängig programmiert oder nicht. Zumal es auch bei der Portierung erhebliche Schwierigkeiten geben kann. Nachdem ich aber noch mal den Anfangs-Post gelesen habe, in dem es heißt, dass der Threadersteller, schon mal ein Spiel programmiert hat, muss ich dir natürlich recht geben, dass es eine Rolle spielen könnte. |
Re: Spieleprogrammierung
Für DirectX ist das Buch von Martin gut.
![]() |
Re: Spieleprogrammierung
@joachim: Aber halt! Sicherlich ist es für einen Einsteiger sekundär uninteressant, ob es auch auf anderen Plattformen läuft. Aber z.B. SDL hat ja keine Nachteile als solche... die Unabhängigkeit gibt es quasi als Goodie dazu. Wenn also jemand auch nur im entferntesten daran denkt seine Anwendung irgendwann einmal unter Linux laufen zu lassen (aus den von MrT) genannten gründen, würde ich stets SDL (als Ergänzung OpenGL) empfehlen und zwar nur aus einem Grund: Gleich ein Gefühl dafür zu entwickeln, wo Grenzen der Lib und des darunter liegenden Systemes ist. Dies gleich zu beginn zu lernen ist für jemanden, der in dem Bereich sich fortbilden will, enorm wichtig. Das bei der darauf folgenden erfolgreichen Karriere man vermutlich nicht darum herum kommt auch die "Konkurrenz" zu erlernen und keine API einem die Optimierung von Algorithmen abnimmt, ist hoffentlich jedem Einsteiger klar. Letztendlich sollte die Frage nach der API von zwei Dingen abhängig gemacht werden a) Ideologie (Der OSS-Flagge schwingende Linux-Nuter im Delphi-Forum ist mit DX sicher nicht gut bedient b) (vermutlich wichtiger) ... wie er mit der Dokumentation der jeweiligen API zurecht kommt.
Umso mehr Frage ich mich immer wieder, warum solche Fragen "Was ist besser" eigentlich aufkommt. Trifft man seine Entscheidung nicht immer nach der Verfügbarkeit von Informationen und nicht danach, was andere Leute sagen? ... Utopie, hm? Schon gut, ich troll mich wieder ;) |
Re: Spieleprogrammierung
Zum Thema DirectX steht auf der Spieleverpackung wollte ich nur noch sagen:
Das steht darum drauf, damit man weiss, welche Version man benötigt. (wenn z.B.: DirectX9 draufsteht und diene GraKa kanns nicht, dann brauchst Du das Spiel garnicht erst kaufen). Bei OpenGL ist das anders. Da liefert spätestens der Treiber für die Graphikkarte die dll mit und wenn die da ist, ist eigentlich egal, welche Version sie ist. Normalerweise prüft ein Programm mit einem Aufruf, ob eine best. extension/version vorhanden ist und wenn nicht, werden die Aufrufe weggelassen. Die Folge ist eigentlich nur eine schlechtere Graphik, aber spielen kann mans. |
Re: Spieleprogrammierung
Zitat:
Zitat:
|
Re: Spieleprogrammierung
Ich habe mich versucht in beiden Apis einzuarbeiten: erst mit OpenGl und dann mit DX.
Bei beiden APIS stoße ich an ein großes problem, ich verstehe den Mathe kram nicht, jetzt wird gesagt das kein mahte benötig wird das machen die APIS selbst(habe ich oft genug gelesen). Aber du brauchst mathe z.b. Zusammenstöße, Licht, Isomap,... berechnen. Und wenn ich immer den aufwand sehe wie viel zeilen code ich schreiben muss damit ich ein einfachen kleinen 3D Raum sehen kann verschwindet irgenwie die lust weiter zumachen und dann noch die sachen mit Sin und Cos und den Bogenmaß.... Ich habe auch verscuht mich in SDL einzuarbeiten aber dafand ich keine Deutsche dokumenation und auch keine Tutors. Also kreife ich jetzt eifnach auf PowerDraw zurück(eine Kapslung von DX) wird upgedatet ist schneller und besser als DelphiX(in machen fällen). Und für kleine spiele wie z.b. Packman, Brakout, Sokubahn, Snak,... reichen solche kapslungen vollkommen aus. Du musst klein anfang erst lerhnen wie Spiele geschrieben werden(egal welche API) dann den mahte kram verstehen und auch anwenden. Zum schluss kannst du eine API Lerhnen das ist finde ich der beste weg. nachtrag: und wengen meiner grafikarte habe ich mit dem versuchen aufgehört :( |
Re: Spieleprogrammierung
Zitat:
Zitat:
Zitat:
da muss man schon eine ganze menge machen das die alten karten damit nicht zurecht kommen. das haben sogar unsere alten Schulrechner geschafft als ich auf ihnen 3d programmiert hab. die hatten nicht mal eine 3d beschleunigerkarte. |
Re: Spieleprogrammierung
ich wollte ein beispiel testen wo sich wasser bewegen sollte und das tat es nicht. :(
Aber ich glaube der "Mahte-Kram" war der hauptgrund das mit den Vectoren, Matrizten,... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 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