Ansatz 2D Spiel

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von Popa21.

    Ansatz 2D Spiel

    Hi, ich programmiere gerade an einen 2D Spiel, Closed Source, und wollte nur mal meinen Ansatz posten.

    Beim Start wird der Launcher gestartet, wo man nach Updates suchen kann oder das Spiel starten kann. Beim Starten des Spiels wird der GameIniter aufgerufen, er kümmert sich um die Menüführung durch normale Form Controlls. Das Fenster ist eine Abgeleitete Klasse von System.Windows.Form, wo eigentlich nur ein paar Eigenschaften eingestellt werden. Beim eigentlichen Spiel wird dass Fenster an das Game übergeben, es erstellt eine PictureBox, wo das übergeben Level gerendert wird, dieses Level besteht aus Blocks, die eine Textur von 30x30 Pixel haben. Dann noch die Functions-Klasse, hier sind Funktionen drinnen, die benötigt werden.

    Ich hoffe es hat jemanden Geholfen.
    LG Popa21

    Ps: Falls im falschen Unterforum, bitte verschieben.
    Bei den Maßen der Einfachheit stößt man an Grenzen, aber: "Es geht immer komplizierter".
    So ist das, wenn man neu im Forum ist.
    Überaus eifrig und will alles schön präsentieren. ( Kenne ich manchmal allzu gut!)

    Aber: Komplett falscher Ansatz werter Freund.
    GDI+ ist nicht für Spiele.
    Ist nicht hardware beschleunigt, spätestens wenn das Spiel komplex sein soll, stößt du mit GDI+ auf Probleme.

    Nutze doch einfach DirectX, gibt genug Tutorials.
    Und Gott alleine weiß alles am allerbesten und besser.
    @Popa21: Graphics aus .Net? Das ist GDI+^^

    GDI ist(bzw. war - falls sich das geändert hat bitte sagen) Hardwarebeschleunigt, nur blöd, dass .Net Graphics komplett GDI+ und nicht GDI ist :D
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    @fufu:

    fufu schrieb:

    Was ist das? Eine Frage? Ein Tutorial?

    Popa21 schrieb:

    Hi, ich programmiere gerade an einen 2D Spiel, Closed Source, und wollte nur mal meinen Ansatz posten.

    Popa21 schrieb:

    Ich hoffe es hat jemanden Geholfen.
    Ich denke mal eher zweiteres ;D

    Popa21 schrieb:

    Irgendwie beides.
    ??? Dein Ernst? Du postest einen Beitrag und weißt selber nicht mal, was besagter Post darstellen soll?

    Popa21 schrieb:

    Controlls
    *Grammar Nazi* Das geht ja mal gar nicht! Controls schreibt man mit einem l, nicht mit zwei!

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    Popa21 schrieb:

    Aha, aber was sollte ich da sonst machen?
    Hier im Forum gibt es genügend Beispiele und einige Tutorials wie man mit verschiedenen C# Wrappern/GameEngines/Frameworks via DirectX spiele Programmieren kann.
    Das lässt deine GPU vor Freude jauchzen, da sie nun endlich das tun darf, wofür sie Entwickelt wurde, und nicht der CPU dabei zugucken muss wie sie sich sinnlos abmüht, und du kannst die CPU nun für andere Dinge benutzen, oder auch nicht, was dann den Anwender freut, da nicht sein PC einfriert solange das Spiel läuft.
    Danke, schau mir das gleich mal an.
    Edit:
    Bin auf SharpDX gestoßen, aber noch eine Frage: Reicht es, die Anzeige zu ändern, oder komplett alles?
    Bei den Maßen der Einfachheit stößt man an Grenzen, aber: "Es geht immer komplizierter".

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

    Popa21 schrieb:

    Ich wollte wissen was ihr davon haltet
    Um eine Meinung zu erhalten: Meiner Meinung nach ist der Ansatz das Ganze so, wie du es beschrieben hastm zu betreiben, nicht gut. Einfach aus dem Grund, als dass du im Kontext der Spiele Entwicklung das Wort Windows.Forms Controls in den Mund nimmst. Was du brauchst, ist eine GameEngine, die dir zum Einen die Spielwiese (also das Fenster, in dem alles passiert) zur Verfügung stellt und zweitens die Berechnug der Physic und der Übergänge der einzelnen anzeigen (Intro, Menü, eigentliches Spiel) abnimmt. Schau dir mal auf Github mein Projekt Pong auf Basis von @ThuCommix's Sharpex2D Engine an. Im Ordner /Core/Scenes sind die einzelnen Szenen definiert, welche macheinander im Maingame ablaufen. Innerhalb der Szenen werden wiederum die GameObjects (zu sehen unter /Core/Content) und UI Elemente (/Core/UI) verwendet.

    Popa21 schrieb:

    Reicht es, die Anzeige zu ändern, oder komplett alles?
    Welche Anzeige? Bitte drücke dich in verständlichem Deutsch aus!

    Popa21 schrieb:

    Also soll ich jetzt die GameEngine lassen, aber das Fenster mit SharpDX lösen, oder?
    SharpDX ist nur ein Wrapper um das DirectX. Sprich: Du brauchst dann keine WinAPI Calls mehr machen. Deswegen: Nimm als Einstieg erst einmal eine Engine (Sharepex2D) und spiel dich damit ein wenig. Dann - irgendwann - kannst du ja mal umsteigen ;D

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    Radinator schrieb:

    WinAPI Calls

    -> P/Invokes/Native Calls/API Calls/... ist aber nicht Teil der WinAPI, obwohl es von MS ist ;)

    mMn spricht nichts gegen WinForms für Menü/Settings/Launcher oder ähnliches, nur für Ingame UI wird das eher ziemlich unschön, weil man es dort nur schwer richtig integrieren kann. Nen Grund das Menü natürlich direkt mit der Engine zu machen ist, dass man es thematisch besser anpassen kann, also eher eine Designfrage. Und WinForms als Abhängigkeit find ich ist nicht schlimm, gibts ja schließlich (fast) überall direkt bei .Net/Mono dabei.
    Also zumindest für die PC-Betriebssysteme
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Gemeint ist das:
    In order to maintain compatibility, GDI performs a large part of its rendering to aperture memory using the CPU. In contrast, Direct2D translates its APIs calls into Direct3D primitives and drawing operations. The result is then rendered on the GPU.


    Alles andere ist imho Haarspalterei.
    Das Movens hinter der Entwicklung GDI+ ist ganz bestimmt nicht Spieleentwicklung.

    Post scriptum: Natürlich gibt es dann Differenzen( wenige?) zwischen GDI und GDI+ .. aber ersteres ist ja nicht so trivial implementiert.( nutzt Graphics nicht automatisch GDI+?)
    Und Gott alleine weiß alles am allerbesten und besser.

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

    Um ehrlich zu sein, ich bin auch gegen Spiele, wo das innere Spiel Controls sind (PictureBoxen, die durch die Gegend fliegen, bei mir wir eine Graphics gezeichnet). Ich hab die Umgebung nur mal so schnell zusammengekleistert, weil ich gleich die Logik beginnen wollt. Hab mir damals eh vorgenommen, die Darstellung auf SharpDX(DirectX) umzustellen.
    Bei den Maßen der Einfachheit stößt man an Grenzen, aber: "Es geht immer komplizierter".