AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Edge2D - Engine to develop Games easily in 2D
Thema durchsuchen
Ansicht
Themen-Optionen

Edge2D - Engine to develop Games easily in 2D

Ein Thema von kddc.l3usch · begonnen am 27. Jan 2010 · letzter Beitrag vom 1. Apr 2010
Antwort Antwort
Seite 1 von 2  1 2      
kddc.l3usch
Registriert seit: 6. Nov 2007
Heyho,

Ich möchte heute Edge2D vorstellen.
Jeder kennt das wahrscheinlich - Der Einstieg in die Programmierung ist furchtbar schwer. Man weiß einfach nicht wo man anfangen soll. Genauso erging es mir auch. Aber dann fand ich Blitz3D, einen auf Spiele ausgelegten Basic Dialekt.
Ich machte mich also ans Programmieren und....tadaaaa....bereits 2 Wochen hatte ich in 3D einen PingPong-Clon erstellt. Nun gut...wahrscheinlich nicht die beste Programmierung, aber es lief und ist das nciht motivierend? Man lernst auf diese Weise wunderbar die Grundzüge des Programmierens. Allerdings halt nur ein Basic Dialekt. In der Schule ging es dann mit Delphi weiter. Mit meiner gesammelten Erfahrung war es nicht schwierig mich schnell an Delphi zu gewöhnen, eine Umstellung war es trotzdem. Nun lernte ich in diesem Kurs noch jemanden kennen und was soll ich sagen - unsere Interessen überlagerten sich leicht. Ich zeigte ihm die Spiele und Spielereien, die ich so machte und schnell kamen wir auf Ideen für gemeinsame Projekte. Welche Programmiersprache?....naja...Basic ist nciht wirklich was für die Zukunft also Delphi. Nunja...ähm...Canvas....und so weiter....das Ergebnis war nicht wirklich überzeugend. Und so entstand nun die Idee für Edge. Wie wäre es, wenn wir einfach mal die Grafikkarte nutzen...ne vorhandene Engine? och nööö...die sind immer so umfangreich und meist nicht wirklich so, wie man sie sich vorstellt. EInfach sollte sie sein und überschaubar, mit allem was nötig ist um kleine Spiele zu schreiben. Nun hatten wir noch 2 Möglichkeiten. DirectX oder Opengl? Wir entschieden uns für Opengl, nachdem wir eingesehen haben, dass DirectX zu umfangreich ist und unsere Möglichkeiten (NOCH) übersteigt. Also machten wir uns ans Programmieren....und haben inzwischen schon einiges geschafft. Außerdem ist Edge allein ja nicht alles. Hinzu kommt eine eigene Entwicklungsumgebung (eher simpel und einfach gehalten ) , die dem Entwickler die nötige Übersicht verschafft ( Delphi ist nun nicht gerade übersichtlich ) und sich den Entwickler auf das Wesentliche beschränken lässt - Was da wäre: Objekte erstellen ( Grafiken, Sound etc ) und sie dann miteinander interagieren lassen. Den Rest macht dann die Entwicklungsumgebung im Hintergrund. Das ist jedenfalls der Plan.
Naja...und einen wichtigen Punkt hätte ich nun fast vergessen...Die Entwicklungsumgebung bringt eine eigene Fensterklasse mit und lässt sich so wunderbar mit FreePascal kompelieren. Es wird also nicht Delphi selbst benötigt und ist somit kostenlos


Hier folgt nun eine Beschreibung für unseren Informatikkurs in der Schule, dem wir das Ganze auch noch vorstellen dürfen
Da ist recht übersichtlich dargestellt, was unsere Ziele eigentlich sind.


Unser Ziel ist es, eine Engine, d. h. eine Art eigenständiges Programm bzw. einen unabhängigen Programmteil, zu entwerfen und zu programmieren, die eine einfache und unkomplizierte Entwicklung von relativ simplen 2D-Spielen ermöglicht. Diese Engine soll am Ende der Entwicklung folgende Merkmale aufweisen:
  • Hardwarebeschleunigte Grafikausgabe über OpenGL
  • Laden und Darstellen von Bildern mit Transparenz
  • Animationen basierend auf dem Wechsel des angezeigtem Texturbereichs
  • Textausgabe
  • Hardwarebeschleunigte Soundausgabe über OpenAL
  • Laden und Bereithalten von Sounddateien für die Wiedergabe
  • Asynchrone, also gleichzeitige Wiedergabe mehrerer Audiodateien
  • Verarbeitung von Eingaben über Tastatur oder Maus
  • Bereitstellen einfacher Funktionen zum Prüfen des aktuellen Status einer Taste
  • Einfache Physik
  • Grundlegende Kollisionsabfragen
  • Bereitstellung von unterstützenden Objekten
Diese Objekte beschleunigen und vereinfachen die spätere Programmierung eines Spiels, da sie häufig benutzte Funktionen wie das Laden einer Konfigurationsdatei, eines Spielstandes oder einer Karte zur Verfügung stellen.

Zusätzlich zu den oben aufgeführten Merkmalen wollen wir abhängig von der verbleibenden Zeit und den eventuell auftretenden Schwierigkeiten bei der Umsetzung folgende optionale Features in die Engine integrieren:
  • Partikelsystem
  • Automatische Erzeugung und Verwaltung von Partikeln zur Darstellung von Spieleffekten wie zum Beispiel Rauch oder Funken
  • Eigenen Texturloader
Laden von Bildern und Bereitstellung dieser als Textur für OpenGL
Ein selbstgeschriebener Texturloader hat den Vorteil, dass er leichter angepasst werden kann und sich somit besser in die Engine integriert.
Die gesamte Engine soll auf verschiedenen voneinander unabhängigen Objekten bestehen, die jeweils einen klar definierten Aufgabenbereich übernehmen und hierfür die entsprechenden Methoden bereitstellen.


Die Entwicklungsumgebung ist ein Programm, welches die Programmierung von Spielen auf Basis der Engine unterstützt. Sie soll die Übersicht bei der Entwicklung fördern und unabhängig von Delphi verwendbar sein, weswegen wir uns dazu entschieden haben, FreePascal als Grundlage zu verwenden. Die Entwicklungsumgebung soll am Ende folgende Funktionen besitzen:
  • Erstellen und Bearbeiten von Spielprojekten
  • Anlegen neuer Spielprojekte, Festlegen von Eigenschaften des Projektes, Bereitstellen einer Umgebung zum Programmieren
  • Verwaltung der für ein Spiel benötigten Ressourcen
    Dazu gehören beispielsweise Bilder und Sounds, aber auch Dateien wie Karten für verschiedene Spielwelten
  • Kompilieren des Spielprojektes
  • Erzeugen einer ausführbaren Datei
  • Weitergabe des fertigen Spieles
  • Funktion zum Zusammenfassen aller für das Spiel benötigten Dateien, damit das Spiel unkompliziert an Dritte weitergegeben werden kann.

Als Programmiersprache verwenden wir Object Pascal, sowohl in Form von Delphi als auch von FreePascal. Die fertige Engine benötigt für eine akzeptable Ausführungsgeschwindigkeit eine Grafikkarte mit Unterstützung für Hardwarebeschleunigung und passende Treiber.


Das war es zu den Zielen ...Nun mal dazu was sie denn schon kann - Das sieht man wohl am besten auf einem Bild:
Hier sieht man jetzt ne kleine Demo mit Sachen, die sie schon kann - Animationen ( die man heir zugegebenerweise schlecht sehen kann...aber das Meerschweinchen bewegt sich), Bilder anzeigen, Transparenz, Alphatranzparenz, Drehungen, Skalierung, Kollision etc

Naja...guckt es euch an

http://www3.pic-upload.de/27.01.10/7uf27zgn2i7j.png

Und hier kommt die Entwicklungsumgebung

Die Demos selbst kann man damit noch nciht schreiben, dazu fehlt uns noch die eigene Windowklasse, aber wir sind bzw. mein Kollege ist auf dem besten Weg, diese fertigzustellen, sodass wir bald mit ersten Tests aus der Entwicklungsumgebung Edge Develop heraus Anwendungen zu kompelieren. Hier ein Bild wie sie zur Zeit noch aussieht. ( Zugegeben noch wenig spektkulär)

http://www3.pic-upload.de/27.01.10/3w5wnx8kzinw.png

Soo das war dann der erste Post. In den nächsten Posts werde ich schonmal eine kleine Übersicht über die kommenden Befehle geben, Demos hochladen und über Fortschritte berichten. Ich denke mal bald ist auch shcon das erste kleine Spielchen fertig. Zwar noch in delphi geschrieben, aber auf Basis unserer Engine. Es handelt von dem zu sehenden Meerschweinchen...Ja ein Meerschweinchen!

Ich hoffe bei einigen ist das Interesse geweckt. Über Anmerkungen, bereits anstehende Kritik, Ideen, Vorschläge würden wir uns sehr freuen. Immerhin soll die Engine später evtl auch mal genutzt werden

Viele Grüße
Julian und Finn
 
Stoney

 
Turbo Delphi für Win32
 
#2
  Alt 27. Jan 2010, 18:51
Ihr habt ein interessantes Projekt ausgesucht. Wird das speziell für den Informatikkurs entwickelt oder in der Freizeit?

Allerdings ist eine Engine zu entwickeln ein großes Unterfangen, auch bei 2D-Engines. Ich bastle selber seit etwa fünf Jahren (mit Pausen) an meiner eigenen Game-Engine, die ich für eigene Spiele und z.T. auch Uni-Projekte hernehme.

Eine gute Übung bei der Entwicklung einer Engine ist es, sich andere Engines anzusehen (am besten nicht nur die FreePascal- und Delphi-Engines, sondern auch Engines, die mit anderen Programmiersprachen gemacht wurden, wie z.B. das C++-Prototyping-Framework von den Entwicklern von den World of Goo-Entwicklern 2DBoy, Pygame, Allegro, etc.), um zu sehen, wie dort verschiedenes (Window Management, Sprite Management, Audio, etc.) gelöst wurde und daraus zu lernen, ob es in der eigenen Engine nützlich ist zu implementieren oder nicht oder ob es anders implementiert sinnvoller wäre.
Außerdem ist es sicherlich nicht schlecht, die üblichen Gamedev-Foren durchzustöbern, um zu sehen welche Erwartungen heutzutage an eine 2D-Engine gestellt werden.

Und was ganz wichtig ist: Planung. Zeichnet UML-Diagramme, überlegt euch welche Daten in welchen Strukturen (Records) und Klassen gehören, welche Methoden wie und welchen Parametern aufgerufen werden sollen.

Es gibt noch einige Designmuster, die ich ganz nützlich finde:
Singleton Pattern (z.B. für Logger, oder evtl. für die Fensterverwaltung wenn sinnvoll)
Factory Pattern (z.B. für Fonts, Sprites oder Entities; ebenfalls auch möglich, um verschiedene Grafik-Backends anzusprechen, wird so bei der Asphyre Engine mit Abstract Factory Pattern verwendet)
Template Pattern (immer gut wenn ähnliche Funktionalitäten öfters implementiert werden müssen; gut nutzbar für GameStates und GameState Management als auch Sprite-Klassen, z.B. wenn man zwischen verschiedenen Sprite-Typen unterscheiden möchte (Tiled Sprite, Background Sprite, etc.))

Für Engineentwicklung ist auch diese Seite ganz interessant: http://wiki.delphigl.com/index.php/Enginepfad


Ich bin mal ganz gespannt darauf, erste Codeschnipsel und Demos von eurem Projekt zu sehen.
Johannes Stein
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#3
  Alt 27. Jan 2010, 18:54
Ihr könntet auch einfach bei der Entwicklung von Andorra 2D bzw. Audorra helfen.

Das wäre vermutlich Sinnvoller, als ständig neue Bibliotheken zu entwickeln.

Aber trotzdem wünsche ich euch viel Erfolg!
Andreas
  Mit Zitat antworten Zitat
kddc.l3usch

 
Delphi 7 Personal
 
#4
  Alt 27. Jan 2010, 19:13
Zitat:
Wird das speziell für den Informatikkurs entwickelt oder in der Freizeit?
Die Idee hatten wir schon vorher, hatten auch schon einen Ansatz und haben das dann bei der Projektarbeitauswahl also Projekt genommen. Als zusätzlichen Ansporn Wird aber auch noch drüber hinaus weiter entwickelt werden.

Natürlich ist dies ein großes Projekt, aber wir machen uns da auch keine Illusionen, dass es mal mit Andorra mithalten soll oder so. Man muss sich halt Grenzen und Ziele setzen, die man erreichen will und wenn man die dann erreicht ist alles gut=)...

Ursprünglich war sie ja eh für den Eigenbedarf gedacht, aber jetzt dachten wir könnten wir das auch so mal vorstellen und vor allem auch Programmieranfängern anbieten. Ich weiß grad nicht wirklich wieviel Komfort Andorra bietet, aber wir tuen halt auch unser Möglichstes das Ganze einfach und übersichtlich zu gestalten. Mit Andorra wollen wir uns wirklich nicht messen. Das sind zwei verschiedene Welten. Aber übern tut sowas wohl unheimlich und wenn man hinterher mit seiner eigenen kleinen Engine arbeitet ist man shcon irgendwie stolz wie Oskar und das ist was anderes als eine fertige zu benutzen.

Zitat:
Und was ganz wichtig ist: Planung. Zeichnet UML-Diagramme, überlegt euch welche Daten in welchen Strukturen (Records) und Klassen gehören, welche Methoden wie und welchen Parametern aufgerufen werden sollen.
Ja, da machen wir uns schon unsere Gedanken...Aber bis jetzt kriegen wir das mit den Klassen, Objekten etc noch ganz gut hin

Zitat:
Ich bin mal ganz gespannt darauf, erste Codeschnipsel und Demos von eurem Projekt zu sehen.
Demos und Befehle werden Stück für Stück folgen. Codeschnipsel am liebsten nur an Auserwählte ( )über PM
Vllt hast du ja sogar was anzumerken. Welche Schnittstelle benutzt du für deine Engine?
Da kann man sich ja vielleicht auch irgendwie austauschen

Viele Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Fussel9
Fussel9

 
Turbo Delphi für Win32
 
#5
  Alt 27. Jan 2010, 20:29
nun... 2D Fertig Programmierumgebungen gibts ja viele... G-Maker...Rpg-Maker...
C.D.
  Mit Zitat antworten Zitat
Stoney

 
Turbo Delphi für Win32
 
#6
  Alt 27. Jan 2010, 23:52
Zitat von kddc.l3usch:
Welche Schnittstelle benutzt du für deine Engine?
Meine Engine ist speziell für Rapid Game Prototyping entwickelt worden, sodass es auch gut für 48 Stunden-Contents (Ludum Dare, Global Game Jam o.ä.) verwendet werden kann. Für meine Engine wird nicht unbedingt Lazarus oder Delphi als IDE gebraucht, irgendein Texteditor und ein installierter FreePascal-Compiler reicht, dazu werden dann Build-Skripte und Makefiles zum Kompilieren bereitgestellt, die dann z.B. unter Mac OS X auch bereits eine Anwendung daraus erstellen, die fertig zur Vervielfältigung ist.
Momentan unterstütze ich die Plattformen Mac OS X, Linux, Windows und GP2X. An der iPhone-Unterstützung arbeite ich gerade, leider ist momentan Klausurenzeit, deshalb wird das noch etwas dauern.

Grafik-API: SDL (+ OpenGL optional oder alternativ GLFW + OpenGL)
Image Loading: Momentan SDL_image und selbstgeschriebenen kleinen Texture-Loader, künftig aber Vampyre Imaging
Textausgabe: SFont für Bitmapfonts, SDL_ttf für TrueTypeFonts
Soundausgabe: SDL_mixer
Scripting: Lua

Vom grundsätzlichen Design ist meine Engine ähnlich wie Gosu/Slick aufgebaut: Man hat eine Basisklasse, die abstrakte Methoden (Initialize, Render, Update) bereitstellt. Davon leitet man eine Klasse ab, ruft den Super-Konstruktor auf und füllt die Initialize, Render und Update wie gewünscht aus. In Initialize sollen die Objekte erstellt und Daten geladen werden; in Render sollen die Objekte gezeichnet werden und in Update sollen User-Events abgefragt und Spiellogik implementiert werden. GameStates sind nach änhnlichem Muster aufgebaut.

Beispielcode dazu, wenn es dich interessiert:
http://www.freeze-dev.de/files/Elysi...htly100127.zip (3,2 MB; nur das Framework mit ein bisschen Beispielbilder und Beispielmusik)
http://delphipraxis.net/topic164357_...n+defense.html (Spiel, schon ein bisschen älter)

Hab dir auch mal eine PM gesendet.


Was mich noch interessiert, wie sieht es mit der Plattformunabhängigkeit aus? Ist es geplant? Es bietet sich ja regelrecht an, wenn man auf OpenGL und OpenAL setzt.
Johannes Stein
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

 
Delphi 6 Personal
 
#7
  Alt 28. Jan 2010, 14:53
Hi,

ich habe etwas gegen das OpenAL-Zeugs da man es erst installieren muss und der Treiber in
das Windowsverz. möchte. Ich nutze da lieber die Bass.dll.
Matti
  Mit Zitat antworten Zitat
Teekeks

 
FreePascal / Lazarus
 
#8
  Alt 28. Jan 2010, 15:31
Da bin ich aber mal gespannt was ihr daraus macht ^^
Hört sich/sieht ja viel versprechend aus/an
Peter
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#9
  Alt 28. Jan 2010, 16:07
Zitat von turboPASCAL:
Hi,

ich habe etwas gegen das OpenAL-Zeugs da man es erst installieren muss und der Treiber in
das Windowsverz. möchte. Ich nutze da lieber die Bass.dll.
Ist vielleicht etwas OT: Als Lösung für dieses Problem bietet sich die soft_oal.dll an (http://kcat.strangesoft.net/openal.html). Hiermit wird keine OpenAL-Installation benötigt.
Andreas
  Mit Zitat antworten Zitat
kddc.l3usch

 
Delphi 7 Personal
 
#10
  Alt 4. Feb 2010, 21:10
Sooo,

Ich melde mich mal wieder. Geht im Moment leider immer nur stückweise vorran, da das Mathe-Abitur mit großen Stücken näher rückt, aber ein bisschen Zeit zwischendurch wird dann doch noch gefunden.

Nun, was wurde die letzen Tage geschafft?..

Unter Delphi wird das Fenster natürlich einfach, über Delphi selbst erstellt und verwaltet. Freepascal bringst das ganze leider nicht ganz so einfach mit sich, sodass mein werter Kollege genötigt war selbst eine Fensterklasse zu erstellen. Diese funktioniert soweit und man kann die Engine sogar shcon über die Entwicklungsumgebung und somit Freepascal laufen lassen. Das Ganze ist bis jetzt dennoch nur halb zufriedenstellend, weil der Texturloader beim besten Willen nciht unter Freepascal zum laufen zu bringen ist und somit ein neuer geschrieben werden muss. Dennoch zeigt das wohl, dass wir insgesamt gut vorran kommen=). Das erste Progrämmchen wurde schon mit Edge Develop geschrieben und kompelliert und zeigt einfach nur eine veränderliche Hintergrundfarbe, genauso wie die ersten Tests unter Delphi, als wir OpenGL zum ersten mal initialisiert bekommen haben. Der Texturloader wird aber wohl noch ein Weilchen in Anspruch nehmen.

Zur Engine selbst. Es sind jetzt n paar unterstützende Funktionen zur Spieleprogrammierung hinzugekommen, wie pixelgenaue Kollisionen, und Funktionen zum Erstellen, Bearbeiten, Speichern und Laden von Maps. Das ganze wird natürlich allerdings erst so richtig nutzbar wenn wir ne Maussteuerrung drin haben, die allerdings erst kommt wenn die Fensterklasse komplett fertig ist. Bis dato müssen wir uns noch auf die Tastatur beschränken

So...das war es erstmal. Auf eine Demo müsst ihr noch ein Weilchen warten, aber ich halte euch auf dem laufenden
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:41 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