Entwickler-Ecke
Open Source Projekte - Andorra 2D - The Next Generation 2D Engine
igel457 - Fr 26.01.07 19:50
Titel: Andorra 2D - The Next Generation 2D Engine
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 [
http://wiki.delphigl.com/index.php/WhyOpenGL#DelphiX])
Ich selbst verwende DelphiX in meinem Spiel CrashPoint [
http://crashpoint.sf.net] 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)
http://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 [
http://sourceforge.net/projects/andorra] posten.
Downloads:
Momentan gibt es die Version 0.15. Einen Überblick über alle Downloads gibt es
hier [
http://andorra.sourceforge.net/index.php?section=downloads].
Das Package mit allen Demos, Prerequisiten und Binaries gibt es in der neusten Version hier:
Andorra 2D All-In-One-Package 6,39MB [
http://sourceforge.net/project/platformdownload.php?group_id=182128]
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 [
http://www.delphipraxis.net/topic101980_andorra+2d+tutorial+1+installieren+und+initialisieren.html]




Tutorial 2 - Das erste Bild [
http://www.delphipraxis.net/topic102166_andorra+2d+tutorial+2+das+erste+bild.html]




Partikelsysteme [
http://www.delphipraxis.net/post686775.html#686775]
Danke für euer Interesse,
Igel457
PS:
Crosspost zu Delphipraxis [
http://www.delphipraxis.net/posting.php?mode=editpost&p=643541&sets=1169836924]
rizor - So 18.02.07 13: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 - So 18.02.07 15:20
in den optionen den ausgabepfad ändern?
Chryzler - So 18.02.07 15:34
Also basiert die Engine jetzt auch auf DirectX7 oder auf OpenGL oder wie?
Heiko - So 18.02.07 15:40
Titel: Re: Andorra 2D - The Next Generation 2D Engine
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 - So 18.02.07 16: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.
theromi - Sa 24.02.07 16: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 - Sa 24.02.07 16:29
Man geht in die Projekt-Optionen und unter Verzeichnisse/Bedingungen änderst Du den Ausgabepfad für DCU's
igel457 - So 11.03.07 14: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 [
http://andorra.cvs.sourceforge.net/andorra/andorra/src/dll/directx/DX3DMain.pas?revision=1.16&view=markup] 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 - So 11.03.07 15: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.
igel457 - Do 15.03.07 15: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 - Do 15.03.07 16:20
schreiben die forenrichtlinien nicht einen direkten downloadlink vor ?
sobald ich auf den mirror klicke passiert bzgl download nicht mehr sonderlich viel,
mfg
igel457 - Do 15.03.07 16: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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!