Autor |
Beitrag |
igel457
Hält's aus hier
Beiträge: 12
Win XP Home
Turbo Delphi Explorer
|
Verfasst: Fr 26.01.07 20:50
Wer von euch hat nicht schon von DelphiX gehört oder sogar damit gearbeitet?
Bei DelphiX handelt es sich um ein populäres System mit dem man einfach graphische Spiele und dergeleichen programmieren kann. Allerdings ist DelphiX in der letzten Zeit ein wenig aus der Mode geraten. Es verwendet nähmlich nur DirectX 7 und wurde von seinem Entwickler nicht weiterentwickelt. Es gibt zwar einige Projekte, die versucht haben DelphiX wieder aufzumöbeln doch nur mit mäßigem Erfolg: Dinge wie Alphablending lassen die Framerate in den Keller sinken. (Mehr über DelphiX erfahrt ihr hier)
Ich selbst verwende DelphiX in meinem Spiel CrashPoint und funktioniert dort auch sehr gut. Jedoch vermisse ich einige Effekte: Warum kann ich keine Lichtquellen einbauen? Warum ist Alphablending so langsam? Warum kann ich keine Texturen mit Alphachannel erzeugen?
Aus diesen Gründen habe ich mich daran gesetzt eine eigene 2D Engine zu schreiben: Andorra 2D.
Sie verwendet die 3D Schnittstelle wodurch im 2D Bereich Effekte möglich werden, die man sonst nur aus 3D Spielen kennt.
Eine weitere Besonderheit von Andorra 2D ist, dass sie nicht nur mit DirectX läuft: Alle Graphikausgaben werden über ein Plugin dargestellt. So kann man auch OpenGL mit Andorra 2D verwenden und seine Programme unter Linux laufen lassen, ohne eine Zeile Code auszutauschen.
Weitere Informationen gibt es auf der Projektwebsite (englisch)
andorra.sourceforge.net/.
Dort findet ihr auch Demos, Tutorials und Screenshots...
Wenn ihr Fragen, Kritik oder Anregungen habt, dann könnt ihr diese entweder hier oder bei SourceForge posten.
Downloads:
Momentan gibt es die Version 0.15. Einen Überblick über alle Downloads gibt es hier.
Das Package mit allen Demos, Prerequisiten und Binaries gibt es in der neusten Version hier:
Andorra 2D All-In-One-Package 6,39MB
Tutorials:
Die Tutorials gibt es nicht nur auf der Website, sondern auch in der DP (die Sterne stellen die Schwierigkeit dar):
Tutorial 1 - Installieren und Initialisieren
Tutorial 2 - Das erste Bild
Partikelsysteme
Danke für euer Interesse,
Igel457
PS: Crosspost zu Delphipraxis
Zuletzt bearbeitet von igel457 am So 11.03.07 15:51, insgesamt 1-mal bearbeitet
|
|
rizor
Beiträge: 209
WIN XP
Delphi 2005 PE, Visual C++
|
Verfasst: So 18.02.07 14:41
Hi,
ich habe ein Problem mit AdClasses.
Beim Kompilieren bekomme ich folgende Fehlermeldung.
[Pascal Fataler Fehler] AdClasses.pas(846): F2039 Ausgabedatei '..\..\dcu\AdClasses.dcu' kann nicht erstellt werden
Wie kann ihc das beheben?
|
|
HelgeLange
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: So 18.02.07 16:20
in den optionen den ausgabepfad ändern?
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
Chryzler
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: So 18.02.07 16:34
Also basiert die Engine jetzt auch auf DirectX7 oder auf OpenGL oder wie?
|
|
Heiko
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 18.02.07 16:40
igel457 hat folgendes geschrieben: | Eine weitere Besonderheit von Andorra 2D ist, dass sie nicht nur mit DirectX läuft: Alle Graphikausgaben werden über ein Plugin dargestellt. So kann man auch OpenGL mit Andorra 2D verwenden und seine Programme unter Linux laufen lassen, ohne eine Zeile Code auszutauschen. |
Wie du siehst, läuft diese scheinbar standardmäßig mit DirectX (8/9) und kann alternativ dazu auch mit OpenGL betrieben werden.
|
|
HelgeLange
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: So 18.02.07 17:24
mal ein paar tipps zu deiner Engine :
Plugin ist gut, aber so ist es zu lahm. Stichwort : Funktionszeiger-Mapping. Callaufrufe kosten zeit. Also wenn es geht, nicht durch TAdDraw zum Plugin routen, sondern gleich das vom Plugin aufrufen. in einer grafik-engine ist alles zeitkritisch.
Schalt das painting von deiner form ab (WM_ERASEBKGND und WM_PAINT), das geht mit überschreiben der windows-nachrichten. Bringt dir einige fps.
Performancecounter sollte man nicht im Object machen, sondern in deiner main-render-loop. Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var FPSCount : Integer = 0; g_dwCurrentTime : DWORD; procedure TfMainForm.FormIdle(Sender: TObject; var Done: Boolean); begin MainScene.RenderScene; If GetTickCount - g_dwCurrentTime >= 1000 then begin g_dwCurrentTime := GetTickCount; Caption := 'FPS : ' + IntToStr(FPSCount); FPSCount := 0; end else Inc(FPSCount); Done := False; end; |
Das ganze erspart dir nen call-aufruf in dein object... und das bei jedem Rendervorgang. Ich weiss, dass es sche**** ist, da es dann bei jeder anwendung gemacht werden muss, aber man kann sich ja ein Template-formular schreiben, welches jedes Projekt später benutzt.
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
theromi
Beiträge: 22
|
Verfasst: Sa 24.02.07 17:16
rizor hat folgendes geschrieben: | Hi,
ich habe ein Problem mit AdClasses.
Beim Kompilieren bekomme ich folgende Fehlermeldung.
[Pascal Fataler Fehler] AdClasses.pas(846): F2039 Ausgabedatei '..\..\dcu\AdClasses.dcu' kann nicht erstellt werden
Wie kann ihc das beheben? |
Ich habe das selbe Problem
Kann da jemand weiterhelfen?
HelgeLange hat folgendes geschrieben: | in den optionen den ausgabepfad ändern? |
Wie?
Danke schonmal,
Roman
|
|
HelgeLange
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: Sa 24.02.07 17:29
Man geht in die Projekt-Optionen und unter Verzeichnisse/Bedingungen änderst Du den Ausgabepfad für DCU's
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
igel457
Hält's aus hier
Beiträge: 12
Win XP Home
Turbo Delphi Explorer
|
Verfasst: So 11.03.07 15:49
Hallo erstmal,
ist schon ein weilchen her, dass ich hier das letzte mal rein geschaut habe.
Mittlerweile ist auch schon Version 0.1.5 meiner Engine draußen.
Zitat: | Plugin ist gut, aber so ist es zu lahm. Stichwort : Funktionszeiger-Mapping. Callaufrufe kosten zeit. Also wenn es geht, nicht durch TAdDraw zum Plugin routen, sondern gleich das vom Plugin aufrufen. in einer grafik-engine ist alles zeitkritisch. |
Kannst du mir das nochmal erklären? Soll ich es etwa wieder so machen? Das war mir alles viel zu "unstrukturiert".
Zu dem Problem mit den DCUs: Ihr müsst die Verzeichnisstruktur beibehalten um die Demos ohne Probleme compilieren zu können, ansonsten müsst ihr die Ausgabepfade anpassen, wie schon geschrieben.
Danke fürs Testen,
Igel457
|
|
HelgeLange
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: So 11.03.07 16:29
ja, ungefähr so solltest Du das machen. Und es ist eigentlich nicht unstrukturiert, beim Init stellst Du deinen Renderer fest, DirectX oder OpenGL und mappst halt deren Funktionen auf die Funktions-Variablen. Ab dann sollte es Dir dann egal sein, ob Deine Engine mit OpenGL oder DirectX läuft. Und genauso kann das mit anderen Sachen gemacht werden, die du häufig brauchst und welche zeitkritisch sind.
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
igel457
Hält's aus hier
Beiträge: 12
Win XP Home
Turbo Delphi Explorer
|
Verfasst: Do 15.03.07 16:58
Hallo,
ich habe jetzt mal nochmal nachgeschaut: Zweimal genau das selbe Programm, nur die anders aufgebaute Engine: Beides mal hatte ich in etwa die gleichen FPS... Also scheint der Unterschied, der entsteht nicht gravierend zu sein. Außerdem denke ich, dass es so stark darauf ankommt, ob ein 2D-Spiel jetzt mit 200,1000 oder nur 85 FPS läuft.
Bei dem TPerformanceCounter zwinge ich ja niemanden dazu ihn zu verwenden. Es ist für viele Entwickler halt einfacher, wenn sie einfache Objekte haben, die gewisse Funktionalität kapseln. Viele, die einfach ein kleines Spielchen mit Delphi schreiben möchten, schreckt es schon ab, weil sie mit meinem Andorra 2D keine Komponentensammlung wie in DelphiX haben.
Igel457
|
|
F34r0fTh3D4rk
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Do 15.03.07 17:20
schreiben die forenrichtlinien nicht einen direkten downloadlink vor ?
sobald ich auf den mirror klicke passiert bzgl download nicht mehr sonderlich viel,
mfg
|
|
igel457
Hält's aus hier
Beiträge: 12
Win XP Home
Turbo Delphi Explorer
|
Verfasst: Do 15.03.07 17:56
Leider schreiben die Regeln von SourceForge vor, dass ich keinen direkten Downloadlink verbreiten darf, sondern auf den Mirror, wie oben geschehen, linken muss.
Aber anscheinend ist SF mal wieder überlastet.
|
|