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 2 von 2     12   
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
 
mimi

 
FreePascal / Lazarus
 
#11
  Alt 7. Feb 2010, 11:41
Ich hatte vor einige Zeit die gleiche Idee. Allerdings mit meiner eigenen "2D Engine". Mein Ziel war es bzw. ist es immer noch, ein GamePack zu erstellen, mit dem das Programmieren von Spielen ein "Kinderspiel" wird. Wenn ich dich richtig verstanden habe, ist das auch deins /eures Ziel.

Mein Konzept sah allerdings etwas anders aus: Es gibt einige Bases Klassen, von den ein Spiel Abgeleitet werden können. Z.B. eins für Spiele die ein Level benötigen. Wobei ich hier noch unterscheide: Es gibt Spiele, da kann man Wunderbar einem 2D Raster abspeichern. Außerdem gibt es Spiele, wo das nicht geht, z.b. bei Spielen mit Unterschiedlich Großen Objekten.
Außerdem habe ich noch ein Universal Level Editor erstellt. Folgende Spiele sind bereits Vorhanden: Snake, Sokubahn, BreakOut, ein 2D Weltraum Shooter, ein Floss Spiel. Ich war wirklich erstaunt, wie schnell ich damit ein Spiel entwickeln konnte.
und alles Läuft über Canvas *G*. Geht Wunderbar, nur übertreiben darf man nicht. Sogar Animationen gehen *G*.

Heute würde ich sowas mit Andorra Versuchen. Wobei mein Gedanke war ja: Warum muss ein einfaches Spiel wie Snake 100% Cpu verbrauchen ? Bei meiner "2D Engine", wird die CPU / GPU Kaum beansprucht *G*...
Michael Springwald
  Mit Zitat antworten Zitat
kddc.l3usch

 
Delphi 7 Personal
 
#12
  Alt 23. Feb 2010, 14:21
Morgen ist es soweit...dann schreiben wir unsere mathe abitur...die Tage danach wird es mit der engine kurz wieder vorrangehen...danach müssen wir uns leider auf unser Physik abi vorbereiten...aber in gut 2 wochen können wir uns wieder voll auf die engine konzentrieren....bis dahin herscht weiter mehr oder wneiger Stillstand

mfg
  Mit Zitat antworten Zitat
kddc.l3usch

 
Delphi 7 Personal
 
#13
  Alt 11. Mär 2010, 18:17
So moin...woe letztes Mal melde ich mich auch heute einen Tag vor meiner Abi-Klausur....diesmal ist Physik dran...das heißt ab morgen habe ich endlich wieder den Kopf frei, weiter zu machen...und ich denk mal mein werter Kollege auch

Von daher waren wir bisher wie zu erwarten wenig produktiv....Gibt ne neue "Map"-Klasse zum erstellen und laden von Maps...jetzt mach ich mir noch Gedanken, wie damit jeder Hans und Franz möglichst leicht nen Leveleditor programmieren kann. Desweiteren wird ein(mehr oder weniger komplexer(darüber haben wir uns noch keinen Gedanken gemacht)) Leveleditor direkt in die Entwicklungsumgebung integriert sodass Maps, ähnlich wie Bilder auf einfachste weise in den Quellcode eingefügt werden können.

Ich weiß gar nciht ob ich shcon berichtet habe, das Bilder später einfach noch über ein Kontextmenü in den Quellcode eingefügt werden und man dazu keinen code mehr braucht....hab ich?

naja...das wars...am Wochenende guck ich mal was frameunabhängiges programmieren angeht...ob man da noch irgendwas vereinfachen kann um das dem Nutzer einfach zu machen

bis denne julian
  Mit Zitat antworten Zitat
kddc.l3usch

 
Delphi 7 Personal
 
#14
  Alt 1. Apr 2010, 13:02
Um euch auf dem laufenden zu halten....
Die Entwicklungsumgebung ist fast fertig und es müssen nur noch einige Kinderkrankheiten beseizigt werden.
Außerdem werden wir natürlich immer weiter gucken, ob man noch irgendetwas vereinfachen kann, sodass es für den nutzer einfacher wird diese zu benutzen.
Die Engine selbst ist auf dem gleichen Stand wie vor einigen Wochen und damit werden wir uns auch weiterhin nach und nach beschäftigen....Da gibt es sicherlich noch einiges zu tuen und dann werde ich den Schwerpunkt wohl erstmal auf Kollisionen setzen....die sind ja immer ganz besonders dreckig

SO....wie funktioniert das ganze zur zeit:
Also das kompellieren wird jetzt komplett von Freepascal übernommen. Es ist also keine Version von Delphi mehr nötig =)
Alles was ihr noch brauch ist Freepascal und unsere Engine.
Wenn ihr die Entwicklungsumgebung öffnet seht ihr dann zwei Prozeduren

procedure start;
begin

end;

Procedure idle;
begin

end;

Wie die meisten wohl vermuten werden wird in der Idle Prozedur alles gezeichnet und in der start prozedur alles geladen was man so braucht....Eigenschaften von Objekten, Maps, variablen, was weiß ich alles.
Über eine Shcaltfläche könnt ihr derzeit texturen hinzufügen. Png, Jpeg und bmp sind inklusive alphatransparenz möglich.
Diese werden später mit in der Exe gespeichert. Beim kompellieren sind also keine Ordner etc nötig. Das heißt alle Dateien werden über diese Schaltflächen geladen und in den Code eingefügt.

Wie wir das nachher mit den Objekten verknüpfen wissen wir noch nicht, aber bei denen soll das später genauso laufen.

Das man sich also nicht mehr auf das erstellen, laden von ObjektenTexturen konzentrieren muss sondern die Objekte nur noch zeichnen muss und das wars=)

Das funktioniert soweit auch schon ganz gut und die erste kleine Demo wurde bereits geschrieben....

Bilder und die wahrscheinlich erste testbare Version gibts dann nächste Woche=)

Juloian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:14 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