Eigene 2D Engine mit Canvas.

Zur Vorstellung von Komponenten und Units für Lazarus
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Eigene 2D Engine mit Canvas.

Beitrag von pluto »

Hallo,
ich habe im Letzten Jahr angefangen eine eigene 2D Engine zu schreiben.

Sie nutzt intern OpBitmap.
Es gibt ein kleines Test Projekt, wenn ihr das Komplieren könnt, läuft die Engine.

Das besondere an der Engine dürfte der Aufbau sein:
Die Engine zeichnet nur die bereiche neu die auch wirklich geändert werden also neu gezeichnet werden.

Es ist keine Komponente an sich sondern nur einige Klasse.

Da ich die 2D Engine schon einigemale erwähnt habe, möchte ich sie nun hier hochladen.

Auch aus den Grund da es anscheind unter Windows Probleme gibt.

Screen Shotts füge ich noch später ein...

Die 2D Engine besitzt auch einige Kollision Funktionen.
Die Grafiken von der Test Anwendung kommen von hier:
http://tsgk.captainn.net/index.php?p=sh ... =sr&sr=211
wobei das Hintergrund Bild stammt von mir *G*

Könntet ihr das mal unter Winodws testen ?
ihr müsst bevor ihr es Kompliert die Einträge unter Complier Einstellungen Anpassen, bevor ihr es Kompliert. und ihr braucht die neuste Version von opBitmap gibt es hier im Forum....
Ich würde gerne wissen ob es bei euch auch unter Windows zur Fehler Meldung:
"Datei kann nicht gefunden werden" kommt.


Ach ja die Engine Basiert komplett auf Canvas. Im Moment, seit Anfang Januar schreibe ich eine eigene GUI die mittlerweile 17 Komponenten umfasst *G* aber leider noch lange nicht Einsatz fähig ist. Auf der "2D Engine" Basieren viele weitere Projekte von mir.

Im Moment schreibe ich noch weitere 2D Spiele damit. Sowas hatte ich schon lange vor. Mit der 2D Engine glaube ich habe ich für mich und evlt für andere ein Tolles Projekt geschaffen *G*.

vorallen ist die Verwendung wie ihr im Beispiel Programm sehen könnt recht einfach.
Eine Dokumentation fällt leider noch. Bei Bedarf Erstelle ich aber eine.

Eine Musik/Sound Unterstützung gibt es noch NICHT, Kommt aber noch. Da meine letzten versuch mit FMOD recht vielversprechend waren . mit der 3,75 Version. Bei der neuen habe ich leider keine Header Gefunden die unter FPC/Lazarus laufen :(

Viel Spaß damit. Das Projekt ist "Open Soruce" und Freeware. Ihr dürft damit alles machen was ihr wollt. Für Schäden komme ich NICHT auf. Die ImageListe unterstütz zwei Formate. Nutzt bitte Das XML Lade Format. im Test Programm findet ihr beispiele dazu, wie ihr die Engine und wie ihr die ImageListe nutzen könnt.

Edit01: Wenn ihr den Stand der GUI erfahren wollte, könnt ihr hier nach schauen:
http://www.delphigl.com/forum/viewtopic.php?t=7214
und hier:
http://www.delphigl.com/forum/viewtopic.php?t=7215

Wenn ihr dort angemeldet seit könnt ihr auch die Bilder von der GUI sehen. Wenn ihr wollt lade ich hier auch noch einige Bilder davon hoch.

Die "2D Engine" ist bis jetzt das beste Projekt was ich jemals angefangen habe. Die Grund Idee war sehr einfach*G* evlt.war ja das der Grund. Übrings unter:
http://www.delphipraxis.net könnt ihr ein Projekt von mir finden was ich mit Hilf der 2D Engine geschrieben habe: Der Pacman Clone,dort bin ich mit mimi angemeldet.

Evlt. lade ich den Pacman-Clone auch noch hier hoch.

Edit00, 26.02.2008: Hatte einige Units vergessen hinzuzufügen. Sorry. Im Anhang ist eine neue Datei. Wo hoffentlich keine units mehr Fehlen.
Ich werde noch genauere Infos über die Engine geben bei Gelegenheit.

Mir kommt es erstmal auf diesen Test unter Windows an. Ob da bei euch die gleiche Meldung kommt wie bei mir... So in der Richtung: Datei kann nicht geöffnet werden(nur halt auf Englisch)
Dateianhänge
2D Engine.zip
2D Engine
(445.06 KiB) 163-mal heruntergeladen
Zuletzt geändert von pluto am Di 26. Feb 2008, 18:25, insgesamt 2-mal geändert.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Wollte es mal eben anschauen.
Da fehlen einige Units in dem Zip:
ucolorlist, uplutogamemenu.. hab's dann aufgegeben.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Oh ! Danke fürs Teten. Werde ich hinzufügen. Irgendwas vergesse ich immer...
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich habe gestern die zwei Units hinzugefüft die bei theos Test gefällt haben. Köntne jemand von euch das nocheinmal testen ? Vorallem unter Windows ? Die 2D Engine läuft prima unter Linux. Aber unter Windows kommt halt diese Fehler Meldung. Warum weiß ich nicht da ich nur Lazarus Funktionen verwände !
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Sag mal, die Engine wurde 12 Mal "runtergeladen". Ist euch eine Fehler Meldung aufgefallen oder sonst was ? Ich würde gerne wissen ob sie auch unter Windows läuft. Mir ist nur eine Fehler Meldung bekannt. Das irgendeine Datei nicht gefunden werden kann. Dabei nutzt ich nur Standard Funktionen. Selbst für / und \ nutze ich eine Variable.
MFG
Michael Springwald

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Windows XP Professional SP 2, Lazarus 0.9.24, 14.11.07, REV: 12752
uPluto2dEngine.pas(67,32) Fatal: Can't find unit opbitmap used by uPluto2dEngine

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ja du brauchst im Moment noch die OpBitmap von theo. du musst du hier runter laden und den Pfad dem Projekt mitteilen. Ich habe bei mir hier eine "neuere" Version evlt. lade ich die heute noch mal hoch.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Hier gibt es die OpBitmap:
viewtopic.php?t=434&start=0
allerdings könnte ich die auch rauß nehmen, dann kann allerdings nur BMPs verwendet werden.
Alle anderen Formate schein bei mir unter Lazarus Probleme zu machen.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

bembulak hast du dir OpBitmap runtergeladen und es getestet ?
Wenn du möchtest könnte ich die "Bindung" an opBitmap auch wieder rausnehmen sind nicht so viele Zeilen.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Andere Formate machen sicher keine Probleme, du musst um Sie zu laden aber TGraphic nehmen udn nicht TBitmap hast du das beachtet ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Werde ich gleich mal ausprobieren. Ich meinte z.b. bei png Bildern das Problem beobachtet zu haben wenn ich sie im Desinger in ein Timage packe sehe ich sie zu Laufzeit nicht.

Danke für den Tipp. Weil OpBitmap verwende ich im Moment nur wegen den Grafiken Formaten und natürlich auch um halbtranparenter Fenster hinzubekommen bzw. Flächen.

Aber wenn euch die Verwendung von OpBitmap stört kann ich sie auch rauß nehmen bzw. per Komplier schalte lösen.

Hat jemand von euch die Engine zum laufen bekommen ? Auch unter Windows ?
Ich meine jetzt das Beispiel Programm. Wenn das läuft, geht auch der Rest *G*
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich weiß langsam nerve ich bestimmt. Aber ich möchte halt wissen ob die Engine überall läuft und ob es noch verbesserungs Vorschläge gibt. Ich möchte noch ein Image List Editor hinzufügen.
und kleinere Änderungen machen.

Die 2D Engine ist im Übrigen mein besten Projekt. Was bis jetzt am längsten Überlebt hat.
Ich habe es im Letzten Jahr angefangen. Ich arbeite noch heute dran. habe bestimmt 20 Projekte die auf meine 2D Engine aufbaut.

Mein Ziel ist es eigentlich die Engien so Weit zu bekommen das selbst Anfänger mit Hilfe meiner Engine das Programmieren Lernen können.

Wie oft lese ich das ein Anfänger ein Spiel schreiben möchte ? Wie oft wird dann geantwortet das ist noch zu schwer. Aber das ist unsinn. Man muss nur genau wissen was man möchte und schon geht das eigentlich recht gut. Mit meiner Engine kann sehr einfach Spiele erstellt werden. Allerdings gibt es natürlich auch hacken:
01 - Sie basiert auf Canvas, d.h. sie ist relativ Langsam
02 - Jeder Benutzer sollte sich schon mit dem PC auskennen.

Ich habe auch noch vor ein Tutorial zu erstellen. Das Schritt für Schritt erklärt wie ein Spiel mit Hilfe meine 2D Engine erstellt werden könnten.

Natürlich wird es einige Probleme geben, gerade wenn man anfängt mit Object Pascal.
z.b. setzte ich Voraus das von der Sprite Klasse abgeleitet werden sollte. Muss aber nicht umgedingt.


Habt ihr noch Vorschläge wie ich disess Ziel erreichen könnte ?
ich bin seit einigen Tagen dabei so eine art GamePack für Lazarus zu schreiben. Das kommt diesem Ziel schon sehr nahe.
Das GamePack soll recht viele einfache 2D spiele beinhalten wie z.b.
Snake,
Sokubahn
Packman
Brekout
und soweiter.

Es soll eine Komponenten geben, die dann auf das Form platziert werden kann, in dieser Komponente wird dann eins der Spiele drin ablaufen.

Wenn eine Spiel erstellt werden soll das unhabänig von diesem GamePack läuft soll es noch eine weitere Komponente geben, die sowas ist wie wir es von DelphiX kennen.

Das GamePack kümmert sich um folgende aufgaben im Moment:
Das Auswählen von einem Spiel
Das Auswählen von einer Mission
Das Auswählen von einem Level.

D.H. Wenn ich einmal Fertig werde, und die Grundlagen erstellt sind, dürfte das erstellen/hinzufügen von neuen Spielen in das GamePack recht einfach ausfallen. Es gibt natürlich ein Paar regeln die zu befolgen sind. Z.B. sollte das Spiel von der Richtigen Klasse abgeleitet werden. Es sollen später Vier Klassen zu Verfügung stehen:
Normale Bases Klasse
Eine Klasse für Raster Spiele*
Eine Klasse für andere Spiele*

*Diese Klassen werden sich alleine um die Level Verwaltung kümmern und auch um das Speichern und Laden von Spielständen und neuen Levels.

Ich habe schon eine art "Daten Manger" erstellt der einmal verschiedene Datei Formate unterstützen soll.

Es soll auch noch ein universalen Level Editor geben. Für Level Basierte Spiele.

Die Spiele im einzelnen sind für mich kein Problem. Aber die Spiele alle unter einem Hut zu bringen, das ist gar nicht so leicht.

Im Moment bin ich dabei die Grundlagen zu erstellen. Aber ich verspreche mir viel davon.
Wenn ich Fertig bin. Einmal alles Richtig machen und schön aufwendig und dann nur noch benutzen(ausnutzen*G*). Unter diesem Gesichtspunkt ist auch die 2D Engine entstanden.

Hat jemand von euch lust hier mitzumachen oder sich an der Planung zu befassen?
Ich könnte auch den bisherigen Soruce-Code hochladen. So groß ist er ja noch nicht.

Mir geht es Vor allem um die Klassen-Struktur. Die soll sehr einfach sein, aber auch erweiterbar. Ich nutzte denke ich die OOP auch ganz gut aus.

Wenn jemand Interesse hat kann ich auch noch weitere Details zum Projekt preisgeben.

Mein Lieblings Thema ist die Grafik Benutzungs. Wie halt mit Canvas.
Und natürlich das erstellen von Komponenten für Lazarus. Was mir ja auch geglückt ist.
*freu*.

Das GamePack soll natürlich sehr viele einzelne Komponenten beinhalten, die dann wie andere Komponenten auch auf das From gezogen werden könnten. Z.B. in einem Info Dialog. Könnte das Spiel sichtbar gemacht werden durch eine bestimmte Tastenkombination oder sowas.

Oder was ich vorhabe für eine art Spiele Manger.

Ich weiß das ist sehr viel Aufwand. Wenn ich damit Fertig bin weiß ich auch noch nicht. Aber eins ist sicher: Fertig werde ich irgendwann damit.

Weil ich jetzt auch weiß was Früher meine Fehler wahr bei der Planung der Projekte.
z.b. ich wollte immer alles einbauen was mir eingefallen ist. Natürlich kann das nicht klappen.
Jetzt konzentriere ich mich nur noch auf den Kern. alles andere hebe ich mir für Später auf.

Das scheint recht gut zu klappen bis jetzt.
MFG
Michael Springwald

Antworten