AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Andorra 2D [Ver. 0.4.5.1, 31.12.08]

Andorra 2D [Ver. 0.4.5.1, 31.12.08]

Ein Thema von igel457 · begonnen am 24. Nov 2006 · letzter Beitrag vom 14. Sep 2011
Antwort Antwort
Seite 68 von 103   « Erste     1858666768 697078     Letzte » 
Benutzerbild von igel457
igel457
Registriert seit: 31. Aug 2005
Andorra 2D

Was ist Andorra 2D?
Nein, Andorra 2D hat nichts mit dem kleinen europäischen Staat "Andorra" zu tun. Wie das "2D" im Namen auch schon erraten lässt, handelt es sich um eine 2D Engine. Diese wird für Delphi und Lazarus (Freepascal) entwickelt und zwar um das bekannte und oft verwendete DelphiX abzulösen (was an DelphiX nicht so toll ist lest ihr am besten hier). Andorra 2D hat einen ähnlichen Aufbau wie DelphiX - das Spriteengineinterface ist sogar zu 99% das Gleiche.

Features
Was ist nun das Besondere an Andorra 2D?
- Hardwarebeschleunigung
- Verwendung von Plugins zur Grafikdarstellung wodurch OpenGL, DirectX oder sogar die GDI mit Andorra 2D verwendet werden können
- Integrierte und beschleunigte Spriteengine
- Integrierte Zoomfunktion in der Spriteengine
- Modularer aufbau von den Loadern für Texturformate, es können einfach eigene Hinzugefügt werden
- orthogonale und perspektivische Projektionsmatrix
- Integration von 3D-Modellen (die Loader sind noch nicht geschrieben)
- Schnelle Partikelsysteme
- Ausnutzung von Multi-Core CPUs
- Lichter
- Shadersupport (Cg und HLSL)
- Einfaches Surface-System
- Einfaches Scenenmanagement
- Videowiedergabe mit MPEG2 Support
- Verwendung von mehreren "Windowframeworks", wodurch Unabhängikeit von der VCL/LCL erreicht wird.
- Clipping/Splitscreens
- 2D Physikengine mit Newton
- Integriertes "Hardware Canvas"
- Mächtiges, voll Skinbares GUI-System
- Nicht überladen - man wird nicht zum benutzen bestimmter Features gezwungen (wie zum Beispiel Datenpackages, wie dies in anderen Engines der Fall ist)
- Opensource, entweder unter der CPL oder der GPL verwendbar
- Mächtiges Bundle von Editoren und Tools
- Deutsche Tutorials
- Viele Demos
- Und natürlich die Banalitäten, die man sich von einer 2D-Engine so wünscht: Rotation, Additives Zeichnen, Skalierung, BitBlt, Texturzugriffe et cetera

Da die Plugins nur um die Basisfunktionalitäten der Grafikschnittstellen Wrapen, könnte man die Plugins theoretisch für eine Hybrid 3D-Engine verwenden

Mehr Infos...
...sowie Tutorials und weitere Links...
gibt es auf der Website: 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 posten.

Downloads:
Momentan gibt es die Version 0.4.5. 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 23MB

Tutorials:
Die Tutorials gibt es nicht nur auf der Website, sondern auch in der DP. Allerding möchte ich betonen, dass die Tutorials auf meiner Website aktueller sind. Ich kann meine eigenen Tutorials hier nämlich nicht mehr bearbeiten (@Daniel: dringend umändern!). Hier ist eine kleine Liste, wobei die Sterne die Schwierigkeit darstellen:
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngTutorial 1 - Installieren und Initialisieren
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngAndorra 2D über CVS aktualisieren
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngTutorial 2 - Das erste Bild
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngTutorial 3 - Die Spriteengine
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngPartikelsysteme
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngDer Canvas
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngDas GUI-System
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngAndorra 2D und Lazarus
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pngÜber Windowframeworks

FAQ:
Eine Sammlung oft gefragter Fragen findet sich hier:
http://andorra.sourceforge.net/index.php?section=FAQ

Wichtig:
Falls ihr ein Programm mit Andorra 2D geschrieben habt/daran schreibt, dann wäre es schön wenn ihr mir Bescheid sagen könnt. Dann bekomme ich nämlich mal einen Überblick, wer die Bibliothek nun überhaupt verwendet und außerdem kann ich auf meiner Website Screenshots von eurem Projekt einfügen und auch auf eine eventuelle Website eures Projektes verlinken.

Über diesen Thread:
Bitte schreibt hier nur Wünsche oder Anregungen herein, die direkt mit der Engine zu tun haben. Wenn ihr eine Frage über die Anwendung in eurer Anwendung habt, dann macht am besten einen eigenen Thread im Multimedia-Teil auf, bei dem ihr "[Andorra 2D]" vor den Titel schreibt.

Danke für euer Interesse,
Andreas
Miniaturansicht angehängter Grafiken
imagelisteditor_692.png   physics2_202.png   extended_spriteengine_868.png   wormhunter_412.png  
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
 
I.A
 
#671
  Alt 23. Jun 2008, 22:09
Hallo,

ich arbeite gerade das Kapitel "The Spriteengine" durch und erhalte eine
EAccessViolation an Adresse: $00459CBB, Lesen von Adresse 0024.
Der Debugger hält in der Unit AdDraws in der folgenden Prozedur auf der if-
Anweisung:
Delphi-Quellcode:
procedure TAdImage.Draw(Dest:TAdDraw;X,Y,PatternIndex:integer);
begin
  if (Texture.Texture.Loaded) and (Dest.CanDraw) and (AdMesh <> nil) then
  begin
    SetCurrentColor(255);
    if (PatternIndex < 0) then PatternIndex := 0;
    if (PatternIndex > PatternCount-1) then PatternIndex := PatternCount-1;
    DrawMesh(Dest, AdRect(X,Y,X+Width,Y+Height), Rects[PatternIndex],
      0, 0, 0, bmAlpha);
  end;
end;
Die Anwendung zeigt sich nicht an, ich erhalte stattdessen das Icon in der Taskleiste, das mir zeigt, das das Programm aktiv ist.

AUßerdem habe ich die Frage, wie groß das einzelne Bild ist. In der SetLine() Methode wird Start- und Enpunkt von 0..7 bzw 8..15 gesetzt, andererseits aber X = -96 bzw. Clientwidth + 96. Ich habe damit die Arbeitsweise der Methode noch nicht richtig verstanden. Was macht die SetLine() Methode?

Ist das bild 8 Pixel und der FRame 96 Pixel groß?

Die folgenden beiden Anweisungen stehen in der SetLine() Methode:
Delphi-Quellcode:
X:=ClientWidth + 96;
Y:=Clientheight - 96;

Ich verstehe nicht, warum ClientWidth addiert wird, um auf die neue Position zu kommen, bzw. ClientHeight subtrahiert wird, um auf die nächste Position zu kommen. Damit käme die Figur zwar, wenn sie rechts das Bild verlässt, links wieder rein, aber dann?

Die Anweisung Y:=Random(ClientHeight - 96) sagt mir, das die Figuren an zufälliger Position angezeigt werden sollen. Warum aber dann die Berechnung von X und Y mittels ClientWidth bzw ClientHeight?
Allerdings erhalte ich die o.g. Exception und mein Programm zeigt gar nix an. Ist das ein bekannter Fehler in der Bibliothek, oder habe ich was falsch gemacht?

Falls der Fehler bei mir liegt, hier noch mein aktueller Quelltext. Es ist der Quelltext des Kapitels "My first picture" und zwar der Teil, wo die Datei "Boy.bmp" geladen wird und Einzelbilder angezeigt werden, oder halt eines der Einzelbilder an zufälliger Position. Kann ich aus o.g. Grund nicht testen. Wer kann mir weiter helfen?
Angehängte Dateien
Dateityp: pas main_165.pas (4,1 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
delphifan2004

 
Delphi 10.3 Rio
 
#672
  Alt 24. Jun 2008, 08:41
Hallo!

Hab grad mal wieder bissl hier rumgesurft und bin auf das Theme hier gestossen. Schnell Andorra runtergeladen und das erste Handbuch Kapitel durchgearbeitet. Funzt ja klasse. Wir werden bestimmt wieder voneinander hören. Hoffentlich bin ich dann aber einer derjenigen, die eine Frage zur Programmierung beantworten, staa selber Fragen zu stellen. Bis bald.

Delphifan2004
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#673
  Alt 24. Jun 2008, 09:30
@I.A
Die Namen in der ImageList sind CaseSensitive. Du musst immer die gleiche Groß- und Kleinschreibung verwenden
Andreas
  Mit Zitat antworten Zitat
I.A
 
#674
  Alt 24. Jun 2008, 12:07
Danke @igel457: Habe jetzt die Schreibweise angepasst und voila, die Anzeige funzt.

Jetzt will ich weiter machen und deshalb hier das nächste Problem:

Ich verstehe die SetLine() Methode nicht vollständig, hier ist sie:
Delphi-Quellcode:
TForm1.SetLine;
begin
  XSpeed := -XSpeed;
  if XSpeed > 0 then
  begin
    StartPt := 0; //Den Zwck dieser Anweisungen
    EndPt := 7; //verstehe ich nicht!
    X := -96;
  end
  else
  begin
    StartPt := 8; //Den Zwck dieser Anweisungen
    EndPt := 15; //verstehe ich nicht!
    X := ClientWidth+96;
  end;
  Y := Random(ClientHeight-96);
end;
Ich nehme mal an, das die Figur 96 Pixel hoch und 96 Pixel breit ist. In die Breite geht der Bewegungsspielraum mit ein. Welcher Teil ist dann aber 8 Pixel breit? StartPt u. EndPt sagen mir das.

Wenn XSpeed < 0 ist, dann ist StartPt = 8 und EndPt = 15 und wenn XSpeed > 0 ist dann StartPt = 0 und EndPt = 7.

Welche Bedeutung haben diese Anweisungen für die Bewegung der Figur. Ich sehe zwar im Quelltext der Methode die Anweisungen und weiß, was die machen, kann aber deren Sinn in Bezug auf die Bewegung der Figur nicht nachvollziehen.

Kann mir jemand dabei helfen?

Es bringt ja nix, wenn ichb jetzt das nächste Kapitel durcharbeite, ohne den Bewegungsablauf der Figur wirklich verstanden zu haben.

Es wird eine Imageliste erzeugt.

Da drin wird Platz für eine Figur geschaffen.

Dann wird die Datei boy.bmp da rein geladen.

Aber da drin sind alle Figuren, das heißt alle Einzelbilder, nicht nur eines davon.

Woher weiß mein Programm, welches Einzelbild angezeigt werden soll

     AdImageList.Find('figur').Draw(AdDraw,round(X),round(Y),round(Pattern)); Mit dieser Methode wird das Einzelbild gesucht. Aber wo ist der Index in die Liste?
Ich nehme an es ist 'Pattern'

In der Liste mit dem Namen "figur" wird das Einzelbild gesucht.

Ist meine Annahme richtig, das Pattern der Index in die Liste der Einzelbilder ist? Dann wären X und Y die Position der Figur auf dem Bildschirm. Wäre dem so, könnte ich ins nächste Kapitel gehen. Will aber noch mal rückfragen. Will es ja lernen. Habe auch die Diskussion "Hilfeverhalten im Forum" mitgekrigt. Und ich habe nicht vor, mir "meine Hausaufgaben machen zu lassen". Ich will es selber können. Wenn ich schon richtig liege mit meinen Annahmen, um so besser. Dann kann ich weiter machen mit dem nächsten Kapitel.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#675
  Alt 24. Jun 2008, 12:23
"StartPt und EndPt" steht für "StartPattern und EndPattern" und soll die aktuelle Animation spezifizieren.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

 
Turbo Delphi für Win32
 
#676
  Alt 24. Jun 2008, 12:45
StartPt ist der erste Index der Animationsbilder, EndPt der Letzte. Wenn das Bild animiert wird, soll er ja nur die Animationsschritte anzeigen die zur aktuellen Bewegungsrichtung passen.
Nikolai Wyderka
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#677
  Alt 24. Jun 2008, 23:28
Ich habe noch einen Bug gefunden.
Und zwar geht es um das GUI-System.
Dort wird der Mauszeiger auch dann noch im Andorra Fenster angezeigt, wenn er das Fenster eigentlich schon verlassen hat.
Im Screenshot kann man das eigentlich nicht sehen, da bei einem Screenshot der Mauszeiger nicht mit auf dem Bild ist.
Er ist allerdings auf der Form zu sehen. Dort dürfte er nicht mehr sein.
Das ganze ist beliebig reproduzierbar.
Miniaturansicht angehängter Grafiken
bug_166.jpg  
Fabian E.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#678
  Alt 25. Jun 2008, 08:30
It's not a bug, it's a feature
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#679
  Alt 25. Jun 2008, 08:32
Will ich ja mal nicht hoffen
Sollte aber wahrscheinlich kein Problem sein zu beheben oder?
Fabian E.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#680
  Alt 25. Jun 2008, 08:51
Der Fehler (der wie gesagt kein Fehler ist, von daher war das schon ernst gemeint) kommt einfach daher, dass das Andorra 2D interne Mauszeigersystem für die GUI verwendet wird. Das bedeutet, das die Mauszeiger kein Grafikkarten-Overlay-Sprite im eigentlichen Sinn sind, sondern (wie in jedem Spiel auch) komplett von der Engine gezeichnet werden. Dadurch können die Mauszeiger auch mit Alphablendeffekten sowie Animationen versehen werden. Da ich jedoch nur auf das MouseMove-Event des Fensters reagiere, bekomme ich keine Mauszeigerbewegung mehr mit, sobald der Mauszeiger das Fenster verlassen hat.

Lösung:
Besorge dir jeden Renderschleifendurchlauf die aktuellen Zeigerkoordinaten (GetCursorPos, unit Windows), vergleiche diese mit den letzten, wenn sich diese verändert haben rechne Sie in Fensterkoordinaten um und rufe Manuell AdGUI.MouseMove auf.

Allerdings sollte man meinen, das die meisten Spiele sowieso im Vollbildmodus ablaufen, da ist das dann egal.
Andreas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz