![]() |
Zeichenfläche für Spiele
Wie erstelle ich am besten eine Zeichenfläche für ein Spiel und verarbeite dann die Tastendrücke?
Bisher habe ich das immmer über die normale VCL gemacht: Eine Form, ein TImage, auf dessen Canvas ich zeichne und einen Timer zum Zeichnen. |
Re: Zeichenfläche für Spiele
Liste der Anhänge anzeigen (Anzahl: 1)
es gibt da die delphix-komponenten. Ich such mal das Package auf meinem PC...
die hat eine Komponente wie Timage. Ich find sie jetzt aber gerade nicht. |
Re: Zeichenfläche für Spiele
Ich weiß. Hab ich sogar, verstehe ich aber nicht ganz. Wie geht das anders?
|
Re: Zeichenfläche für Spiele
Also DelphiX ist schon so ziemlich das einfachste was es gibt um kleinere Spiele zu programmieren. Such doch mal nach Tutorials ;)
|
Re: Zeichenfläche für Spiele
Zitat:
die sind schon sehr simpel. auf ehemals delphi-treff.de gabs ein tutorial dazu, dass das gut erklärt hatte. tja und wenn du es erstmal ganz simpel versuchen willst, nimm den canvas ;) der ist allerdings recht langsam, weshalb ich dir dann doch wieder hardwaregestützte sachen, wie DirectX oder openGL empfehle. |
Re: Zeichenfläche für Spiele
Ein Tipp : SDL + OpenGL. Sollte es dir gefallen, die beiden API-s zu verwenden, dann bist du "sehr" platformunabhängig.
SimpleDirectmediaLayer = SDL OpenGraphicsLibrary = OGL Damit wurde sogar Unreal entwickelt. |
Re: Zeichenfläche für Spiele
OpenGL ist aber Auslaufmodell. In Vista wird es von M$ plattgemacht und nurnoch in 1.4 über dx emuliert :wall:
|
Re: Zeichenfläche für Spiele
Zitat:
oder hey: ein spiel, dass auf jedem rechner läuft, da ein abgespecktes linux gleich mit dabei ist :D das wär mal ne idee^^ |
Re: Zeichenfläche für Spiele
linux, is das opensource? jedenfalls müsstest du den User dazubringen von der Cd zu booten oder die windowseigene Bootdatei manipulieren oder ein ganzes System emulieren, relativ schwer... Das wäre nicht DAU-kompatibel.
|
Re: Zeichenfläche für Spiele
Zitat:
|
Re: Zeichenfläche für Spiele
ich dachte ja nur, es is ja schliesslich gratis...
|
Re: Zeichenfläche für Spiele
Natürlich ist Linux OpenSource. Aber ich denke, ich werde es nochmal mit DirectX versuchen. Ich hab mir ein Tut durchgelesen, aber es hat nicht gefunzt.
|
Re: Zeichenfläche für Spiele
ES* funzt nie
* ES: immer das, worum es gerade geht |
Re: Zeichenfläche für Spiele
Zitat:
Das ist etwas OT und das is nur ein Smiley...aber als ich das gesehen hab, hab ich mich weggeschmissen :mrgreen: Tante Edith sagt mir grade noch, dass ein Screen davon sofort gemacht wird... :mrgreen: |
Re: Zeichenfläche für Spiele
1. SDL_OpenGL ist cool
2. Linux ist cool 3. Ja, Linux ist OpenSource, und es gibt bereits "Mini-Linux". Für ein Spiel, das Graka-treiber braucht, aber wohl kaum empfehlenswert. Eventuell aber sogar machbar. 4. NEIN, Vista wird OpenGL nicht komplett verbannen. Nur im Fenstermodus kann OpenGL nicht zusammen mit Aeroglass laufen und wird deswegen entweder auf DX gemappt oder bleibt ganz schwarz. Im Vollbild ist OpenGL immer noch komplett funktionsfähig. Im übrigen gilt DelphiX als veraltet. Da wäre es tatsächlich besser gleich n neues Fass aufzumachen mit SDL oder DelphiGL. Headerdateien, Tutorials, Texturenloader und alles was das herz begehrt gibt es auf ![]() ![]() |
Re: Zeichenfläche für Spiele
Also: Ich habe folgende Fehlermeldung bekommen, gleich nach Programmstart: "Cannot change Display Mode (1024 x 768 32bit)". Habe es auch mit 8 bit (Standardeinstellung) probiert. Aber da schmiert immer das ganze Prog ab, ich kann nicht mal mehr auf Delphi zugreifen und muss es mit Ctrl+Alt+Del killen.
|
Re: Zeichenfläche für Spiele
Hey,
wie schon in ganz vielen Threads zu den Themen OpenGL vs DelphiX/DirectX (und neulich erst wieder erwähnt), schau die beides an (ohne in die Tiefe zu gehen, nur die ersten Schritte) und entscheide dann was dir besser gefällt. Natürlich hat MS wenig interesse daran, OpenGL zu pushen, wer macht das schon für die Konkurrenz, aber das OpenGL ausläuft, hüstel, mehr als weit hergeholt. Beide haben ganz klar Vor- und Nachteile. Das OpenGL nicht all zu schnell auslaufen wird dürfte wohl schon daran liegen dass die wirklich teuren Profi-Karten immer noch OpenGL sind und benötigt werden, wenn man 3D und CAD zusammen benutzt. An sich ist hinter der CAD-Branche auch ne ganze Menge Geld (wenn ich mir so angucke was mein momentaner Arbeitgeber da so für Lizenzen ausgibt...) und zudem ist das ein Bereich, indem sich recht wenig geändert hat in den letzten Jahren (was die Darstellung angeht, die Komplexität der Berechnungen dahinter ist was ganz anderes). Um hier auch mal meine persönliche Meinung in den Raum zu schmeißen, MS-Direct X ist kurzlebiger (siehe wieviele Versionen es gibt). D.h. dass du Version 10 oder 20 miterlebst ist sehr wahrscheinlich, aber das macht es nicht schlechter. OpenGL ist plattfom unabhängig und beständiger, dass heißt dein OpenGL-Programm läuft auch noch in 10 Jahren ohne Änderung (höchst wahrscheinlich, kenne jmd. der sein erstes, das noch läuft wohl vor 7-8 Jahren schrieb). Heißt natürlich auch, das du länger mit den selben Effekten auskommen musst. Aber ich denke mal, für dich ist der größte Teil der Neuerungen vollkommen egal. Es sollte hier auch keiner sagen, dass es schlecht ist wenn du DelphiX nicht verstehst. Grafikmodelle sind schon lange nicht mehr trivial erfassbar und die Grundlage von diesen "3D-Sprachen" sind auch wirklich non-trivial (sonst wären die nicht so schön schnell). Es basiert vieles auf Vektorrechnungen, die du wahrscheinlich noch nicht in der Schule hattest. Und sich die anzulesen ist alles andere als einfach (auch wenn man es im Studium hatte). Ist und bleibt sehr mathematisch, liegt nicht jedem. So gut auch einzelne Komponenten da was kapseln, so bleiben immer stellen, wo man einfach das Prinzip dahinter verstanden haben muss, sonst kommt man nicht weiter. Da es bei einem einfachen Spiel (gehe davon aus, dass es sich bei deinem um ein einfaches handelt) nicht auf super tolle 3D-Welten mit Schatten und Kantenglättung und handoptimierten Assembler ankommt, solltest du dir wirklich einfach solange Tutorials zu Delphi Kapselungen von DirectX und OpenGL (z.B. GLScene und DelphiX, oder was auch immer) anschauen, bis du
Ich glaube was du wählen solltest sollte wirklich nur von den Tutorials abhängen, Geschwindigkeit und Möglichkeiten werden sich so minimal unterscheiden, dass man nicht darüber nachdenken sollte. Falls jmd. das anders sieht sei darauf hingewiesen, dass ich einfach mal pauschalisiere und denke das kaum einer der hier Schreibenden so sehr Profi-3D-Spiele Programmierer ist, dass er aktuelle Hardware sinnvoll ausreizt (in diesem Thread). Sorry falls doch, meinte es nicht als Beleidigung! Gruß Der Unwissende |
Re: Zeichenfläche für Spiele
Danke für den Tipp, aber eine Fehlerlösung brauche ich noch. Erwähnt sei, dass oben genannter Fehler nur beim Vollbildmodus auftritt.
|
Re: Zeichenfläche für Spiele
Nun ja, wie genau änderst du denn die Bildschirmauflösung? Bei mir klappt alles eigentlich ohne Probleme (auch im Vollbildmodus). Kannst du da mal posten was du machst?
|
Re: Zeichenfläche für Spiele
Genau genommen verwende ich UnDelphiX, da es kein DelphiX für Delphi 7 PE gibt. Und da tue ich einfach nur ein DXDraw auf Standardeinstellungen auf meine Form, stelle doFullscreen auf True und dann schmiert es mir ab.
|
Re: Zeichenfläche für Spiele
Ok, ich weiß zwar nicht, warum da ein Fehler kommt (bei mir dann auch), aber einer gute Alternative ist es, einfach bei deinem DXDraw die Eigenschaft Align auf alClient zu setzen und dann deinem Form die Eigenschaften Borderstyle = bsNone (achtung, die Knöpfe zum Minimieren und schließen verschwinden, also bau schon mal eine Methode zum schließen ein) und windowState = wsMaximized setzen.
Ergibt auch ein Vollbild. Die Auflösung kannst du mit Display setzen und die Einstellungen dort funktionieren ohne Fehler. |
Re: Zeichenfläche für Spiele
Also ich würde dir an dieser Stelle dann echt mal zu irgend einer Alternative raten. Ich muss mal sagen, die Doku von DelphiX die ich gerade lese ist echt mehr als mässig. Und letztlich sollten dir Komponenten für DirectX irgendeine Arbeit abnehmen. Hab da allerdings nicht wirklich die große tolle Alternative die ich dir empfehlen kann, aber die dürfte nicht viel Suche erfordern.
Hab zuletzt mit GLScene gearbeitet, aber ist a) OpenGL und b) Hilfe gibt es nicht wirklich (also kein API oder so), aber es war auch für ein paar Spezielle Probleme und nicht für ein Spiel, egal. Nimm lieber etwas, was ein wenig mehr bietet als DelphiX und vor allem etwas was keine Fehler schmeist |
Re: Zeichenfläche für Spiele
Gute Idee, nur was? OpenGL habe ich schon verwendet, ich hoffte eigentlich, dass DelphiX etwas mehr benutzerfreundlich ist.
Primär will ich Benutzerfreundlichkeit, sekundär wäre es sehr gut, wenn man 3D Effekte wie Kantenglättung hätte und Prozeduren zum Zeichnen von Primitiven schon vorhanden wären. |
Re: Zeichenfläche für Spiele
3D Effekte hättest du natürlich nur, wenn dein Spiel auch 3D wird, oder? Also ich weiß nicht ob du dir natives OpenGL oder eine Kapselung angeschaut hast. Bei GLScene hast du einen Echten kleinen Editor bei, bei dem du halt wirkich alle Standardformen direkt zu Designzeit anlegen kannst (z.B. Rechtecke, Kugeln, Pipes (mit beliebig vielen Punkten), Sprites, Kegel, ...) Und auf die ganzen Komponenten greifst du halt wie auf andere Delphi-Objekte zu. Die wichtigen Eigenschaften dort sind in der Regel TurnAngle, PitchAngle, dritte Achse gibts auch, mir fällt der Name nicht ein. Dann gibt es sowas wie die Eigenschaft Position.X, Position.Y, Position.Z (erklärt sich sicher von selbst) und du kannst natürlich auch AntiAliasing einstellen. Gibt natürlich noch jede Menge mehr, aber ist halt Geschmacksache. Insbesondere fehler echte Schrifttypen (3D) in OpenGL, wurden in der Spezifikation nicht vorgesehen. Müsstest du halt gucken, ob du damit zu recht kommst oder ob es eine gute DirectX Kapselung gibt.
Würde dir googlen nach DirectX + Delphi empfehlen oder hier in der DP nach DirectX suchen. Findest du bestimmt auch was. Ansonsten nettes kleines Spiel. Wann hast du das gemacht? Hat aber natürlich so seine Kleinigkeiten (die es sympatisch machen), in Runde 7 hat er bei mir mal kurz ne Pause eingeschoben, dann flackert das Bild leicht und 60% CPU Last ist auch mal nett :wink: , aber wirklich, nettes Programm! |
Re: Zeichenfläche für Spiele
Das habe ich vor 1-2 Monaten gemacht. Und ich habe DelphiGL verwendet, hatte den Nachteil, dass man jedes Polygon von Hand zeichnen musste und das Antialiasing furchtbar aussah. Und dann noch dieses unglaubliche Ruckeln, nachdem man 10 Polygone gezeichnet hat... (Battlefield 1942 und JediKnight 2 laufen ohne Probleme)
|
Re: Zeichenfläche für Spiele
Zitat:
Denkt mal nach, OpenGL ist ein gemeinschaftsprodukt von verschiedenen Firmen die Hardware herstellen, wenn Microsoft versucht OpenGL abzuschiessen wird dennen das nicht gefallen! Und wenn alle an einem Tisch sitzen, können sie auch sagen: Wir unterstützen die nächste DirectX Version nicht, und dann hat Microsoft ein Problem. Zudem wird OpenGL in einiger Zeit in Version 3.0 erscheinen, und dann kann sich meiner Meinung nach das Machtverhältniss gewaltig verschieben! |
Re: Zeichenfläche für Spiele
-- Edit: Sry 4 Doppelpost, aber er zeige mir keinen Post an?!?! --
|
Re: Zeichenfläche für Spiele
OK, ich hol den Thread nochmal hoch.
Ich habe mir jetzt mal eine kleine OpenGL-WinAPI Engine geschrieben und habe nun folgendes Problem: Für 2D Spiele wirkt es für mich etwas überladen, alle Grafiken als Texturen zu laden und dann als glQuads zu zeichnen. Daher: Gibt es keine Klasse oder irgendwas in der Art (ne API oder so) mit der ich einfach ähnlich wie auf einem Canvas zeichnen kann? Das TDXDraw bei UnDelphiX ist für mich komplett unverständlich, wie ich da zeichnen soll. Die Tutorials, die ich gefunden habe, sind veraltet und der Code kann nicht kompiliert werden. |
Re: Zeichenfläche für Spiele
Wieso empfindest Du das laden von Texturen unter OpenGL für 2D-Bereiche zu überladen? Immerhin ist das definitiv das, was man heutzutage als Königsklasse der 2D-Programmierung ansehen kann, da die Informationen von der durchaus (meist) leistungsstarken GPU verarbeitet werden kann und damit halt auch alle damit verbundenen Tricks ermöglicht. Schreibt man sich dafür ein paar Hilfsfunktionen wird das ganze sogar unglaublich konfortabel und man kann selbst lästige Dinge wie das Z-Sorting komplett von OpenGL übernehmen lassen. Oder ging es Dir darum die Grafiken als Texture zu laden und diese nicht über einen Canvas zu zeichnen? Seien wir mal ehrlich. Wer ein Spiel schreibt wird kaum einen Canvas verwenden, einfach weil das Pixeln in einem Bildbearbeitungsprogramm viel leichter ist. Auch würde dies bei einer Rotation zusätzlichen Aufwand bedeuten, den man ja gerade Dank OpenGL (meist) nicht hätte. Z.B. ein Raumschiff von oben müßte nur noch in einer Richung gezeichnet werden und könnte dann ganz leicht rotiert werden. Alles Vorteile, die die 3D-Welt für die 2D-Welt mit sich bringt.
Auf die Gefahr hin, dass Du bisher noch nicht einen Blick in die Tutorials von DGL geworfen hast: ![]() |
Re: Zeichenfläche für Spiele
Naa, ich zeichne immer die Bilder aus ner Imagelist auf ein Canvas.
|
Re: Zeichenfläche für Spiele
Zitat:
|
Re: Zeichenfläche für Spiele
ich hatte auch mal vor openGl oder direcx zu lernen bin aber bei beiden Grafikschnitstellen immer auf zwei hindernissen gestoßen:
1: die Mahte sachen 2: Die Menge an code im vergleich zum Ergbniss du brauchst ja alleine schon 8 zeilen um ein 3D würfel zu erstellen :???: nagut du kannst alles auslagern und brauchst dann ca 80% weniger schreiben aber dann gibt da noch probleme mit den Mahte kram.... auch wenn viele sagen das wird von OpenGl oder DX schon "fast" selstständig gemacht musst du immer noch wie COS und SIN funktioniren und CO.... Ich glaube dann währe es um einiges einfacher..... |
Re: Zeichenfläche für Spiele
Also Sinus, Cosinus, Tangens usw. ist kein Problem für mich.
Bei Matrizen und 3dimensionalen Vektoren wirds schon kritisch bei mir. |
Re: Zeichenfläche für Spiele
Der Umgang mit trigonometrische Funktionen sollte in der Tat bekannt sein, sonst wird man überall im Grafikbereich auf lang gegen die Wand fahren und sicherlich gibt es auch Bereiche in denen es kompliziert werden kann. Allerdings kann man diese auch als ungeschulter leicht umgehen. Fährt man 3D mit einer Achse fix, so hat man prinzipiell die gleiche Mathematik wie bei einer 2D-Anwendung und teilweise (z.B. bei isometrischer Grafik) sogar weniger. Das der Code für einen Würfel länger wird als die einer Linie, sollte klar sein, aber kaum wirklich ein Problem darstellen.
@TM:Khabarakh sagte es bereits. In den meisten Fällen wird es sich anbieten sich einfach selbst einen Texturmanager zu schreiben. In unserer SDK ist eine Unit namens "easySDLTextures" enthalt, die sich evtl. als Vorlage anbietet. Vielmehr als ein Load und ein Bind ist eigentlich auch nicht implementiert und von daher vermutlich sogar fast einfacher als die ImageList. Unabhängig davon, wenn man nicht den kleinen Sprung in GPU gestützes 2D wagen möchte, ist evtl. auch SDL selbst einen Blick wert, dass im Prinzip ähnlich wie DDraw (bzw. eigentlich ja sogar ist) rein auf die Verwendung von 2D abzielt und sicherlich lohnender ist zu erlernen als DelphiX. |
Re: Zeichenfläche für Spiele
falsches entfernt
|
Re: Zeichenfläche für Spiele
kennt denn einer ein link für SDL in deutsch für delphi ?
weil ich wollte mich damit auch schonmal beschäftigen. Aber ich bin mir eigentlich sicher, das ich sobalt ich englisch und mahte nachgeholt habe openGL lernen werde.Schon aus den grund weils nicht von MS ist *G* ob nun einfacher oder nicht ist egal. OpenGL läuft überall und hat keine probleme mit den Versionen, weil bei MS werden ja die versionen geändert und man muss sich anpassen(oder teusche ich mich da ?) |
Re: Zeichenfläche für Spiele
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 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