Meine 2.5D Engine (alternative? xD)

Es gibt 68 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    Hmm, ich dachte das GDI zeichnen übernimmt die Graka? Wenn nicht,
    gleiche FPS Werte wie im Post
    CPU: intel Pentium processor T4400 (2Kerne â 2.2GHZ, 800Mhz FrontSideBus)
    mfg paulkoch95
    "yippieh! it compiles - ship it!"
    Huhu,

    Intel Core 2 Duo P8700 @ 2,53Ghz
    Nvidia GT9400M

    ~6 FPS
    ~32 FPSu
    ~40 FPS

    Ich würde die Steuerung übrigens noch anpassen falls du daraus ein Spiel machen willst. Ich spiel seit 7 Jahren Call of Duty, und mir sträubts die Rückenhaare wenn man nicht gleichzeitig nach Vorne und zur Seite laufen kann (z.B. W+A, aka. "strafen"). Sonst aber saubere Arbeit, freue mich schon zu sehen was so draus wird.
    wie gesagt, es ist eine ALPHA-Version und die steuerung ist noch verbuggt weil sie nur vorläufig so ist.
    Das Zeichnen + Rechnen übernimmt komplett die CPU, die GraKa hat nichts damit zutun^^

    @ Tutorialsuchende
    lodev.org/cgtutor/raycasting.html
    dev.opera.com/articles/view/cr…-games-with-html-5-can-1/

    Wobei ich auf Winkelberechnungen verzichten würde auf Vektoren setzen würde. Jeder der weiß, was passiert wenn man tan(270°) in den Taschenrechner tippt weiß warum^^

    lg
    @FreakJNS
    Danke für die Links, besonders der erste hilft auch sehr viel..:)
    Wirst du die Source zur Verfügung stellen? Mich würde interessieren wie du so eine tolle Performance erzielt hast, meine Versuche mit CreateGraphics etc. sind aufgrund von Performace Problemen (ohne Texturen etc.)mehr als nur mangelhaft.....:|
    mfg paulkoch95
    "yippieh! it compiles - ship it!"
    So, wieder mal eine weitere Funktion erfolgreich realisiert: Man nehme an, man hat ein 3D Objekt aus verschiedenen Perspektiven aufgenommen. Je nach Blickwinkel könnte man ein Sprite so verschieden darstellen und einen realistischen 3D-Effekt erzielen. Ebenfalls werden so sehr einfache/Performante Animationen möglich. Das Funktioniert soweit auch sehr gut, allerdings habe ich keine entsprechenden Sprite Sheets zur Hand...

    So soll ein Spritesheet aussehen, wenn möglich jedes Bild 128x128Pixel groß, als PNG und der Hintergrund Transparent xD

    Quelle der Grafik. Wenn jemand weiß, wo man weitere Sheets herbekommt bitte melden!

    Das Ergebnis in meiner Engine (das Auswählen des passenden Bildes passiert übrigens automatisch, also wieder eine Sache bei der man keine Grauen Haare bekommt^^):

    dead link/404 an dieser Stelle entfernt ~VaporiZed

    @paulkoch95
    Das liegt in erster Linie daran, dass ich erst ganz am schluss mit GDI zeichne - und zwar um das fertige Bild auf den Bildschirm zu bringen (nagut, die Skybox und diverse andere Effekte die in Planung sind kommen dann mit GDI dazu). Zeichne die einzelnen Pixel also nicht mit GDI sonder mittels Lockbits in eine Bitmap. Des weiteren verwende Vektoren, in erster Linie weil es einfacher zu handhaben ist und meines wissens nach schneller ist.

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

    @FreakJNS
    Danke für den Tipp;) (Merke: Erst rechnen dann malen.)
    Und in LockBits werde ich mich mal einlesen (Hatte da nicht einer im Showroom mal irgendwas zu gemacht?)
    Und das mit den Spritesheets sieht sehr interessant aus, ich könnte dir auch welche erstellen wenn Interesse besteht meld dich mal(Hab en Zeichentablet, damit zeichne ich recht gern, egal was ^^).
    mfg paulkoch95
    "yippieh! it compiles - ship it!"
    @Samus Aran:
    Dafür verwendet man meistens 4x4-Matrizen für 3-dimensionale Vektoren. Dabei setzt man die 4. Komponente des Vektors auf 1, um eine Translation zu erhalten. Ist jetzt etwas schwer das anschaulich zu erklären, am besten einfach mal die Definition auf Wikipedia anschauen. Aber eigentlich bringt doch XNA bestimmt schon die ganzen Matrix-basierten Operationen, die man im allgemeinen so braucht (wie Rotation, Translation, etc.) schon mit und man muss diese nur noch richtig verketten? Schau' dir einfach mal die ganzen Matrix-Funktionen an und probier etwas herum. So schwer ist's gar nicht, wenn man das erst mal verstanden hat.

    @FreakJNS:
    Übrigens wäre das Einführen eines eigenen Bildformats extrem vorteilhaft. Damit hast du erstens keine Artefakte und zweitens kannst du vorherberechnete Grafiken für entfernte Objekte verwenden. Neben dem hast du noch den Vorteil, dass du einfach eine viel bessere Möglichkeit hast, eigene Sachen reinzubringen, wie Meshes, etc. Ebenfalls weg ist dann der Umweg über die Bitmap-Klasse. Hatte mir selber schon mal ein System überlegt für eine CPU-Grafik-Engine und damals habe ich sogar Dreiecke verwenden können. Gezeichnet wurde optional in mehreren Durchläufen pro Objekt, sodass auch Antialisierung mit behandelt werden konnte. Das war allerdings nur geplant.

    Gruß
    ~blaze~
    Ich bin beeindruckt von deiner Engine. Ich sehe darin echt Potenzial! (Vor allem wenn Du die Performance noch erhöhst :D)
    Kann man das auf- und abwackeln der Sprites und Texturen in den Griff bekommen? Oder ist das ein Problem meines (gammligen) Grafikchips?
    Ansonsten: Top!

    P.S.: Vll. Interessant für Explosionen Spritesheets: forums.create.msdn.com/forums/p/32476/185889.aspx
    SᴛᴀʀGᴀᴛᴇ01
    @~blaze~
    Ein solches System (quasie Multisampling) war bereits eingebaut, ich habe es allerdings wieder rausgeschmissen, da es sogut wie keinen Effekt brachte. Zumindest hat es keine Qualitätsverbesserung gebracht. Die Artefakte (du meinst sicher die Umrisse an dem Pinguin in Post#48) kommen von der unsauberen Bilddatei. Wenn schlechtes reinkommt geht schlechtes eben auch wieder raus xD
    Die "Pixelfehler" aus dem ersten Video und dem ersten Demospiel sind übrigens auch größtenteils verschwunden (NearsNeighborInterpolation ftw). Woher die blauen fehlgesetzten Pixel kommen (sieht man ja häufiger) weiß ich noch nicht, ich vermute iwo an den Rändern der Textur wird murks zurückgegeben. Wenn das ausgebügelt ist sollt die Grafik aber recht sauber aussehen - vllt bekomme ich den Punkt mit dem Shader/Filter realisiert um das Ergebnis nochmal zu verbessern. Nachträgliche Kantenglättung also.. das noch in den Algo einzubauen wäre zuviel des Guten.

    @StarGate01
    wird sich zeigen^^ An dienem Grafikchip liegt es definitv nicht, da alles per CPU berechnet wird.

    btw: Decken sind jetzt implementiert (kleine erweiterung der Bodenroutine, sogut wie kein weiterer performance-abfall)
    @FreakJNS
    Ich hab zum Spass mal ne Grafik mit nem klaren quadratischen Rand genommen und man erkennt eindeutig dass die GFrafiken doch sehr verzerrt werden (Nicht über die Grafik an sich wundern, hatte grad langeweile:D)
    Is das normal oder gar gewollt, denn komisch sieht es schona us...:|
    mfg paulkoch95
    Bilder
    • screeni.png

      480,26 kB, 672×521, 180 mal angesehen
    "yippieh! it compiles - ship it!"
    @paulkoch95
    Der Effekt ist mir bekannt, und wie ich ihn entferne auch:


    Problem: wenn man sich an den Grafiken vorbeibewegt wirkt alles starr und irgendwie falsch. Ich denke ich muss die Sprite-Render-Routine mal komplett generalüberholen xD
    @FreakJNS
    Okay, komischerweise sind die Häuser zum Beispiel nicht gebogen aber sie werden sdoch genau wie die anderen Sprites projeziert, oder kommt da ne andere Methode zum Einsatz?
    mfg
    "yippieh! it compiles - ship it!"
    Hallo @FreakJNS:!

    Ich muss erst mal sagen: Super!
    Das hätte ich im Leben nie hinbekommen.

    Ich habe hier bei einer Auflösung von 630 x 470 durchschnittlich 34 FPS.
    Das ist zumindest die Größe des angezeigten Bildes.

    Es wäre echt genial, wenn Du die Engine etwas abändern könntest, sodass zwei Bilder gerendert werden.
    Wobei das eine von weiter links ausgeht und nach rechts schaut, und das andere von rechts ausgeht und nach links schaut.
    Also für jedes Auge ein Bild. So könnte man per Crosseye-Methode 3D sehen. Das würde dann so in etwa wie im angehängten Bild aussehen.

    Ich hoffe, dass wir bald noch mehr von Dir sehen werden. Der letzte Post liegt ja schon eine ganze Weile zurück.


    Edit: Ich habe mal alle anderen Fenster zugemacht und die Prozesspriorität auf Echtzeit gestellt. Jetzt kommen so in etwa 40 FPS raus.
    Bilder
    • Unbenannt.png

      695,1 kB, 1.287×481, 169 mal angesehen
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    @Niko Ortner
    Das mit der Crosseye-Methode gefällt mir^^ Wäre ein einfaches soetwas zu realisieren - bräuchte eben nur die doppelte Renderzeit.

    Ich bin immernoch am weiterarbeiten, also das Projekt ist noch nicht bei Seite gelegt. Es "hängt" im Moment ein wenig, bin mit meinen NPCs noch garnicht zufrieden, da das Animationssystem (wann schießt einer, etc) aus reinem gebastel besteht.. Mehr dazu kann man auf meinem Blog lesen

    dead link/404 an dieser Stelle entfernt ~VaporiZed

    Die Bluteffekte werden übrigens nachträglich auf die Bodentextur gezeichnet. Fußabdrücke im Schnee könnte man so auch realisieren.

    btw: es gibt bereits 3D-Sound xD Die IrrKlang-Engine leistet da Top Arbeit: Die KI-Engine feuert Events wenn Sound-Effekte abgespielt werden müssen (NPC schießt, NPC stirbt, etc). Man kennt die Position des NPCs, die eigene Position und Rotation. Anhand dieser Daten ist es leicht zu berechnen wo sich der Soundursprung relativ zum "Höhrer" befindet. Diese Daten gibt man an die IrrKlang-Engine weiter und zack - läuft^^ Im gegensatz zu SFML unterstüzt diese Engine gottseidank auch mehrere Sounds parallel.

    Edit:
    @Niko Ortner
    Ich habe mal eine ältere (im gegensatz zur jetztigen) Version so umgebastelt, dass sie eine CrossEye3D-Ausgabe macht, sieht schon cool aus muss ich sagen! Danke für die Idee!

    dead link/404 an dieser Stelle entfernt ~VaporiZed

    lg

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()