![]() |
Spiele programmieren mit Delphi.
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Alle!
Ich habe da mal eine dumme Frage in Bezug auf Spiele programmieren mit Delphi. Ich habe hier mal so ein Spiel programmiert. Viele kennen das als Space Invaders. Das Spiel erhebt keinen besonderen Anspruch. Ist ein einfaches Spiel. Ich wollte nur mal sehen wie man so etwas mit Delphi machen kann und wie aufwändig so eine Programmierung ist. Auf meinem Rechner (AMD 64, 3800) Läuft das Spiel super. Dann habe ich es mal auf einem Sempron 1200 laufen lassen, da läuft das Spiel so langsam, dass es keinen Spaß mehr macht damit zu spielen. Jetzt meine Frage, kann es sein, dass man bei so einem Spiel schon an die Grenzen von Delphi stößt? Oder muss man eine besondere Programmiertechnik anwenden? Gruß Heike |
Re: Spiele programmieren mit Delphi.
Es kommt darauf an, wie man z.B. die Bewegung macht. Wenn du die Geschenke als Images hast, welche du bewegst, wirst du schnell an die Grenzen des Prozessors geraten. Besser wäre dann OpenGL/DirectX zu verwenden.
|
Re: Spiele programmieren mit Delphi.
Zitat:
Ja, Du hast Recht, sind alles TImages. Aber nimmt man bei OpenGL/DirectX nicht auch Images? Ich muss zugeben, dass ich noch nichts mit OpenGL/DirectX programmiert habe. Gruß Heike |
Re: Spiele programmieren mit Delphi.
Hi,
nein, da nimmt man keine Bilder. Du hast da eine Zeichenfläche, vergleichbar mit Canvas, bloß viel schneller, auf die du alles zeichnest, bewegst etc. (ist allgemein falsch, nur damit du es verstehst). Für dieses Spiel reicht OGL/DX noch aus, aber wenn es krasser wird, dann brauchst du schon eine richtige Engine. Tutorials findest du z.B. auf ![]() |
Re: Spiele programmieren mit Delphi.
Zitat:
Vllt. sollte man auch erstmal die Frage stellen, was man unter "Engine" versteht. Bei komplexen Spielen ist das meist eine gesonderte Bibliothek, die, auf Basis von DirectX oder OpenGL, Funktionen wie die Grafikdarstellung, Soundausgabe (auf das Spiel zugeschnitten) oder die Physik (ohne Verwendung von OGL/DX) zur Verfügung stellt. Wenn du jetzt eine oder mehrere Klassen für dein Spiel schreibst, hast du im Prinzip schon eine eigene Engine für dein Spiel geschrieben. Das mal als kleine Kommentar meinerseits.. |
Re: Spiele programmieren mit Delphi.
Ich meine mit Engine schon eine richtige Engine, z.B. Irrlicht, also Engines, die man sich nicht mal schnell selbst schreibt. Ja, ich meine das richtige.
|
Re: Spiele programmieren mit Delphi.
Soweit mir bekannt nutzt man bei OpenGL auch Bilder nur das man diese als Texturen läd und somit mit dem zeichnen nicht die CPU sondern die GraKa bemüht wird welche ja fürs Pinseln auf den Schirm optimiert ist.
BTW da ich mich gerade selber durch die Tuts des ![]() Die Geschwindigkeit die man damit rausholt ist auch irre ( :) wenn man vorher nur mit normalen Images gearbeitet hat) Einen Blick ist die Seite jedenfall wert und für Spiele denk ich gut geeignet... da dort auch eine tolle Comm hintersitzt die einem genau wie hier oft mit guten und verständlichen Antworten weiterhilft. Der 3D kramm ist jedoch schon ne ganz andere Nummer - aber darum geht es hier ja nicht :) |
Re: Spiele programmieren mit Delphi.
Mit GLScene ist der 3D-Kram... ich will nicht sagen einfach, aber noch sehr viel stärker vereinfacht. Das liegt daran, dass man eine sehr viel höhere Abstraktionsebene hat und auch die mathematischen Kenntnisse nicht so hoch sein müssen wir bei direktem OpenGL, für Leute, die sich nicht so gut mit Matrizen auskennen.
|
Re: Spiele programmieren mit Delphi.
Nun ich würde sagen Spieleprogrammierung ist ein eigenes Kapitel. Man muss sich von den Meisten Klassen der VCL verabschieden. Man muss halt die neuen Klassen bzw. Funktionen der GrafikAPIs nutzen.
|
Re: Spiele programmieren mit Delphi.
also wenn smart nicht besser programmieren kann als ich wird sie nun von euch erschlagen sein...
ich habe mich damals drüber gefreut zu erfahren, dass es eine bitmapvariable gibt... |
Re: Spiele programmieren mit Delphi.
Für 2D Spiele reichen die funktionen der GDI (Windows Standard Zeichnen funktionen) bis 20 (oder mehr je noch Optimierungsmöglichkeiten) Frames locker aus.
|
Re: Spiele programmieren mit Delphi.
Na, da reden wiedermal Fische übers Fliegen :zwinker:
Natürlich kann man mit Windows-API-Rufen auch Graphik darstellen, aber warum? Mit ner ordentlichen Graphik-API krieg ich locker das Zehnfache raus, ohne meinen Code witer zu optimieren. GLScene ist zwar einfacher und man kommt schneller ans Ziel, hat aber das Problem, dass es zu allgemein gehalten ist, will heissen man kann hier grundsätzlich schnellere Graphik schreiben, wenn man sich direkt an die API wendet. Das gilt übrigens auch für alle DirectX-Wrapper. Ich warte noch, dass hier jemand DelphiX anbringt :)) neee... Besuch mal die DelphiGl Homepage und lies Dir die Tuts durch. Hier findest Du auch das DGLSDK, das kannst Du in Delphi integrieren und das bringt Templates mit, die sich erstmal um die Initialisierung von OpenGl kümmern. |
Re: Spiele programmieren mit Delphi.
Zitat:
Eine weitere Möglichkeit um relativ bequem auf eine Grafik-API zuzugreifen ist DelphiX. Dazu sollte es hier im Forum auch jede Menge Beiträge geben. Das ist aber natürlich nicht die einzige Möglichkeit DirectX zu nutzen. Eine andere mit einem ziemlich guten Tutorial zum Einstieg findet sich drüben beim ![]() //Edit: Tags setzen will gelernt sein :oops: |
Re: Spiele programmieren mit Delphi.
Vielen Dank, für Eure zahlreichen Antworten.
Ich muss aber zugeben, dass ich ein wenig verwirrt bin. Mit Bitmap statt Images habe ich schon versucht. Aber da ist kein großer Geschwindigkeitsvorteil. Was brauche ich denn jetzt tatsächlich um so ein Spiel schneller zu bekommen, bzw. zu programmieren? Ich habe z.B. gelesen OGL/DX würden reichen. Ich brauche auch nur 2D. Benötige ich da Komponenten oder dll’s? Wie fange ich da am besten an? Gruß Heike |
Re: Spiele programmieren mit Delphi.
Für OpenGl vielleicht hier mit:
![]() |
Re: Spiele programmieren mit Delphi.
|
Re: Spiele programmieren mit Delphi.
Hallo smart,
es gab vor einigen Jahren (2000-2001?) eine recht ausführliche Serie in der c't über DirectX-Programmierung in Delphi. Sehr gut geschrieben und wirklich mit Grundlagen beginnend. Leider war das damals für DirectX 7 geschrieben, heute sind wir bei Version 9, man muss also einige Sachen anpassen. Aber um überhaupt zu verstehen, wie DrectX arbeitet, ist die Serie klasse. Die alten c'ts sollte man in Uni-Bibliotheken finden, ansonsten könnte ich dir die Artikel kopieren. Darüber hinaus gibt es ein Buch "Spieleprogrammierung in Direct3D", grottenschlecht geschrieben und eigentlich für C gedacht. Aber hatte ich mir mal gekauft und ein paar hilfreiche Tricks waren da noch drin. Und wenn ich irgendwann mal viel Zeit habe, werde ich mich wieder an meine Eisenbahn-Simulation machen.... Gruß SirTwist |
Re: Spiele programmieren mit Delphi.
Für dein Spiel könnte evtl.
![]() |
Re: Spiele programmieren mit Delphi.
Zitat:
Ich hab mal ein BreakOut-Spiel geschrieben, das hab ich mit DirectX gemacht, um eine 100 fps Engine zu konstruieren. Aber für so kleine 2D Spiele, wie zB meine Apfelwürmchen (in Freewre zu finden) ist mir der Aufwand/Nutzen verhältnis nicht groß genug, das mit DirectX zu machen, außerdem langweilt sich mein 2.4 Ghz CPU bei 20 fps OHNE optimierung bei 1-3%... Edit: Und warum als Anfänger nicht mal mit einfacheren Dingen beginnen? |
Re: Spiele programmieren mit Delphi.
Zitat:
da hast Du Recht. Ich habe mir das GLScene gerade mal angesehen. Sicher man kann viel damit machen. Aber mir scheint das GLScene mehr für 3D gedacht ist. Es ist bei den Demos keines in 2D dabei. Gruß Heike |
Re: Spiele programmieren mit Delphi.
Richtig GLScene ist für 3D...
Aber im DF gibt es die ![]() |
Re: Spiele programmieren mit Delphi.
Zitat:
|
Re: Spiele programmieren mit Delphi.
Genau aus dem selben Grund würde ich von dem Erlernen von DelhiX abraten. Hier stößt man sehr schnell an die Grenzen des Machbaren (3d und so) und wenn man dann umsteigen will auf ne ordentliche API muss man alles neu lernen. Dann lieber gleich OpenGl oder DirectX.
Welche der beiden ist Deinem persönlichen Gusto überlassen. Der einzige wirkliche Unterchied besteht darin, das DirectX vom Microsoft ist und OpenGl hauptsächlich in der professionellen Graphik (CAD usw.) verwendet wird. p.s.: OpenGL kann man prima im 2D Modus nutzen und wenn man dann auf 3D umsteigt, weiss man das Wichtigste schon. p.p.s.: das mit dem ich warte auf DelphiX war ironisch gemeint |
Re: Spiele programmieren mit Delphi.
Hi.
Ich habe mir jetzt mal OpenGL, DirectX und DelphiX angesehen. Bei OpenGL und DirectX konnte ich kein 2D Demo finden, eigentlich schade. Bei OpenGL habe ich mir mal ein Demo mit einem Sternenhimmel angesehen. Da habe ich nicht schlecht gestaunt, 100% Prozessorauslastung für einen Sternenhimmel? Das finde ich ein wenig happig, oder? Ein Bild in allen Richtungen bewegen, auch 100% ? OK, ist auch in 3D, aber trotzdem. Bei DirectX ist es auch nicht viel anders. Es kommt mir auch so vor, als müsse ich vorher eine neue ‚Programmiersprache’ lernen. Nichts gegen lernen, aber für so ein Spiel lohnt sich im Prinzip der ganze Aufwand nicht. Das ist meiner Meinung nach etwas für 3D Autorennen oder so was. DelphiX scheint mir da etwas einfacher zu sein, allerdings habe ich auch hier kein Demo gefunden. Ich wüste jetzt nicht wie ich da mehrer ‚Images’ darstellen sollte. Hier in der DP sind wohl einige Bespiele wie man Linien zeichnet. Das klappt ganz gut und ist auch nicht schwer. Gruß Heike |
Re: Spiele programmieren mit Delphi.
In den allermeisten Fällen programmiert man ein Spiel so, dass es immer so schnell wie möglich läuft. Das unterscheidet ein Spiel von anderen Anwendungen. Aus diesem Grund werden die meisten Spiele immer 100% Prozessorauslastung haben.
Meistens hat man in einem Spiel eine sogenannte Hauptschleife, in der zuerst alle Berechnungen durchgeführt werden, und dann die Grafik dargestellt wird. Ziel ist es, diese Hauptschleife so schnell wie nur möglich zu durchlaufen. Man spricht dann von "Bildern pro Sekunde", und meint die Anzahl der Schleifendurchläufe pro Sekunde. |
Re: Spiele programmieren mit Delphi.
Zitat:
Gruß Heike |
Re: Spiele programmieren mit Delphi.
Zitat:
Gruß Heike |
Re: Spiele programmieren mit Delphi.
Es gibt zwei Arten des Haupschleifenaufrufs: Über Timer und über OnIdle.
-Über Timer sorgt man dafür, dass die Berechnungen alle n Millisekunden durchgeführt werden(auch das Zeichnen). Dann ist die Prozessorauslastung je nach System verschieden. Diese Methode nutzt man hauptsächlich, um bei Notebooks die Akkus szu schonen. -Über OnIdle sorgt man dafür, dass, wenn ein Berechnungszyklus(mit Zeichnen) abgeschlossen ist, sich sofort ein neuer anschließt. Das führt dazu, dass das System unter Vollast läuft und man die maximale Anzahl an fps rausholt. Bei dieser Methode muss man allerdings beachten, dass im Graphikkartentreiber eventuell die vsync angeschaltet sein kann, dann berechnet er nicht mehr Bilder pro Sekunde, als die Bildwiederholrate. Dann läuft das System natürlich nicht mehr unter Vollast. |
Re: Spiele programmieren mit Delphi.
Was ist denn überhaupt das Problem, wenn Spiele die CPU zu 100% auslasten? Also bei nem Notebook hab ich jetzt gelernt, dass der Akku dadurch zu schnell verbraucht wird (ist ja auch logisch). Wenn man im Hintergrund aber keine weiteren Programme laufen hat, wo liegt dann noch das Problem? Nur am Stromverbrauch?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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