Genesis Game Engine 2 (2D)

    • Beta
    • Open Source

    Es gibt 38 Antworten in diesem Thema. Der letzte Beitrag () ist von enba.

      Genesis Game Engine 2 (2D)

      Genesis Game Engine 2

      Die Genesis Game Engine 2 ist ein einfaches in Java Geschriebenes Game Framework für 2D und 2,5D Games. Die Engine kann mehrere Szenen Managen, besitzt ein eigenes UIFramework so wie die wichtigsten Physikalischen Berechnungen, aber auch Animationen können Abgespielt werden, wie auch das Nutzen von Simplen AI Funktionen.
      Für die Zukunft ist geplannt, dass die Engine Sound Abspielt und auch Daten über das Netzwerk Sendet und Entfängt.

      System Anforderungen

      Betriebssystem :Windows XP, Vista, 7, 8, Ubuntu, Mac OS
      Sonstige Software: Java
      Arbeitsspeicher : 512 MB Ram
      Rechen Leistung: 2 Ghz Prozessor

      Screenshots

      Hier kann ich nur die Online Dokumentation Anbieten ( doc.genesis-engine.org )

      Techniches

      Genutzte IDE: InteliJ IDEA Community Version, NetBeans 8
      Java

      Lizenz / Weitergabe

      OpenSource (MIT) oder (CC-BY)
      Weitergabe unter den o.g. Lizenz Bedingungen

      Downloads

      Über Github ( github.com/Andy16823/Genesis-Game-Engine-2/ )

      Ich Freue mich über jede Konstruktive Kritik ;)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Andy16823“ ()

      Hast du denn irgendwelche Demos vorzuweisen? Finde nämlich die "Engine" sehr, sehr, sehr minimalistisch gehalten. Es gibt hier nämlich Leute die haben alleine für ein Input-System 3x so viel Code ;) .
      PS: Es ist rein gar NICHTS auch nur annähernd dokumentiert noch irgendwelche Beispiele o.a. dabei. Damit kann keiner was anfangen.


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
      Die Demos und Tutorials folgen noch ... Werde heute damit beginnen. Es ist ja auch egal, wie viel Umfang die Engine hat. Man kann ganz einfach Spiele Entwickeln, die Funktionieren. Das zählt doch.
      Ich hab mal nen Blick auf den Code geworfen.
      Deine Vector-Klasse ist nur eine Gruppierung von X- und Y-Koordinate, wesentliche Funktionen wie Länge, Skalarprodukt, Vektorprodukt, Addition/Subtraktion, Skalarmultiplikation und Normierung fehlen. Matrizen gibt es überhaupt nicht und damit keinerlei Transformationen. Und "KI" ist imo die falsche Bezeichnung für das, was ich da gesehen hab, es wird lediglich ein Element einen vordefinierten Pfad entlangverschoben. Desweiteren ist die Architektur extrem einschränkend; du erzwingst, dass jedes Element aus einer einzigen Textur automatisch an einer vorher festgelegten Position gerendert wird und Gravitation ist ebenfalls fertig vorimplementiert, der Entwickler hat da keine Möglichkeit einzugreifen. Solche Dinge gehören komplett ausgelagert, sodass sie bei Bedarf nach eigenen Parametern durchgeführt werden können, aber update und render sollten mmn in der abstrakten Basisklasse (eig. hätte ichs sowieso als Interface implementiert, aber das sei mal außen vor gelassen) leer bleiben.
      Moin,

      Du nennst den einen Namespace Physik, kein englischer Name. Solltest Du ändern.
      Was ich nicht ganz verstehe, wieso hältst Du dich so streng an die Regel, dass Eigenschaften privat sein müssen und man das Zeugs über Konstruktoren und Setzmethoden initialisieren muss? Das ist imo unnötig. Mach' sie Public, dann sparst Du Dir das alles und schon wieder etwas Code. Da ist rein nichts dabei, da Du so oder so die Werte änderst, von daher...

      Ansonsten: naja, wrappt halt größtenteils das Standardzeugs, da braucht man imo eig. keine extra Klassen (z. B. Random), aber gut, das ist diskutierbar.

      Was mich interessiert, basiert das auf OpenGL? Zu faul, das irgendwo nachzulesen...
      Außerdem fehlt Debugging/Logging für Überwachung von CPU, Speicher und Threads etc., Matrizen (wie soll man dann Objekte transformieren) und entsprechende Operatoren für z. B. Addieren von Vektoren, was manchmal sehr wichtig ist.

      Ansonsten: Wie funktioniert der GameLoop? Über einen Timer? (ist das die entsprechende Klasse?)

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      @Trade
      Habe was von GamePanel gelesen, also wird das auf ein JPanel gezeichnet.

      Werde es mal in den nächsten Tagen mal testen :D
      ~ Alex-Digital :D

      if(!Internet.VBP.Get<User>("Alex-Digital").IsOnline) this.Close(); :D
      Hallo Andy,

      Also ich will dir ja wirklich nicht auf die vor den Kopf stossen, aber bei jedem weiteren Klick in deiner "Dokumentation" sehe ich ... Mangelware. :D Nee, was war das nochmal... Mängel! DAS war's! :D Zum Beispiel Denglisch: "Physik" ist deutsch, "Physic" englisch. Ich klicke also auf den Namespace und... Was soll ein Collider sein? Wohl eher ein CollisionFinder oder sowas? Klick ich also auf diesen "Collider"("Kollidierer" - macht ja nicht mal auf Deutsch Sinn... 8| ) und schaue mir mal an, was der so kann... "IsEnable"... 8| Das wäre wohl eher "IsEnabled". Und das kann man also nach Belieben setzen... Nur: Wozu muss ich einen Kollisionsfinder ein- und wieder ausstellen??? ?(
      Naja, egal... Wieder zurück in den Namespace... Wait! "Gravitation"? Wieso hat dieser Typ einen X-Wert, den man setzen muss??? 8| Ich meine, ok, Y-Wert ist durchaus berechtigt, aber den X-Wert zu setzen finde ich jetzt schon etwas... Es erscheint mir etwas suspekt, muss ich sagen. Was machst du da genau? Und: Wieso kann man das ganze auch noch je nach Belieben ein- oder ausschalten???(Übrigens auch da wieder Denglisch)
      Und wieder zurück und was sehe ich? Einen "IntersectCollider"... 8| Wo liegt jetzt da genau der Unterschied zum ersten? Heisst das, wenn ich eine Punkt-Kollision und eine Flächenintersektion finden will, muss ich zwei Instanzen haben(für je eine dieser beiden Typen)? Nee, zu unhandlich - mach' ich nicht.
      Also nichts gegen dein Bemühen, eine eigene Gameengine aufzubauen, aber das kannst du doch bestimmt besser, oder? Darf ich fragen, wie du da herangegangen bist? Du hast hoffentlich nicht einfach so drauflosprogrammiert, sondern dir erst mal auf einigen Blättern notiert, was du wie haben willst, oder?

      Grüsse,

      Higlav

      PS: Mal sehen, wieviele Posts mittlerweile schon erstellt wurden... :rolleyes: EDIT: 4
      @Artentus Rotation folgt noch, somit auch Matrizen. @Trade die Engine basiert auf Graphics2D, wie das in Java intern gerendert wird weiß ich nicht. Bei Java3D z.b. wird bei Windows DirectX genutzt und bei anderen OS OpenGL @Alex-Digital stimmt, der Hintergrund ist einfach, man kann auch das Spiel in einem Applet im Browser laufen lassen. @Higlav die Basis Klasse ist Collider, es können also eigene Collider erstellt werden. Es gibt nur den IntersectCollider zur Zeit.
      Muss ich mir das so wie GDI(+) bei .NET vorstellen?
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Sorry, aber ich hasse es, mich zu wiederholen(besonders in einem Forum, wo man alles nochmals nachlesen kann), weil meine Frage einfach so übergangen wurde...

      Higlav schrieb:

      Darf ich fragen, wie du da herangegangen bist? Du hast hoffentlich nicht einfach so drauflosprogrammiert, sondern dir erst mal auf einigen Blättern notiert, was du wie haben willst, oder?
      Ach jetzt seh ich es erst. Du hast eine Dokumentation verlinkt. Nunja. Leider dokumentiert die Dokumentation nur den Autor und das Erstellungsdatum. Also genau die zwei Dinge die für einen Entwickler der sich am Kopf kratzt rein gar nicht relevant sind :D . Das ist übrigens rein sachlich und nicht persönlich gemeint. Nicht damit es wieder Missverständnisse mit Neuankömmlingen wie @Marcel1997 gibt (siehe Arroganz bzw. Unnötige Kommentare einiger User).


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
      Wie werden denn die Controls gerendert? Wundert mich, dass du für ein DataGridView so wenig Code benötigst. Ich brauch schon für ne blöde Listbox ~800 Zeilen. Wobei man die transformieren kann. Bevor du überhaupt Controls implementierst musst du Transformationen rein bringen. Das geht im Nachhinein nicht. Kannst dich ja mal durch gcl::matrix wühlen (Zeile 215-411). Für 3D muss da natürlich eine andere rein.

      @Trade
      Das mit den privaten Membern ist schon richtig. Allerdings fehlen mir da extrem stark Events, aber das wird wohl nicht machbar sein.
      @Higlav Ich habe das mit bedacht erstellt. Ich habe ja auch bereits eine Vorherige Engine geschrieben. @Artentus das Rotieren von GameElementen ist nun auch drinnen. Allerdings ohne Matrizen, einfach eine Variable in der Klasse.
      Da ist jetzt mal eben so Rotation drin? Wie rotierst du denn etwas ohne Matrizen, oder prüfst auf Kollision?
      /Edit:

      Quellcode

      1. BufferedImage DrawTexture = new BufferedImage(Texture.getWidth(), Texture.getHeight(), BufferedImage.TYPE_INT_ARGB);
      2. Graphics2D ImgG2d = DrawTexture.createGraphics();
      3. ImgG2d.rotate(Rotation, DrawTexture.getWidth() /2, DrawTexture.getHeight() / 2);

      Und was mach ich jetzt als Programmierer, wenn ich um einen anderen Punkt rotieren möchte? Oder irgendeine andere Transformation machen möchte? Erzeugst du bei jedem Rendern für jedes Element eine neue Textur?

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gonger96“ ()

      Nun es gibt zwei Render Modes, zum einem bei jedem Game Update und zum anderen, wenn der Mapbuffer erstellt wird. Bei dem Render Mode OnGameUpdate, wird aber nur das Sichtbare gerendert und nicht die Ganze Szene.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Andy16823“ ()