Meine 2.5D Engine (alternative? xD)

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

    Sehr gut gemacht.
    Das Crosseye-3D Testvideo sieht schon mal gut aus.

    Ich bin schon gespannt wie es weiter gehen wird.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Da es schon ewig nichts neues mehr gab habe ich eine kleine Testversion zusammengestellt. Die Arbeiten an der Server-Client-Verbindung gehen recht langsam voran, ich hoffe, dass ich das demnächst gelöst bekomme und man endlich gegeneinander spielen kann. NPCs sind jetzt auch erstmal außen vor - denn die werden letzten Endes vom Server gesteuert - und da es den noch nciht gibt.... xD

    Die einzige Neuerung ist eigentlich die animierte Bodentextur. Dass ich eine NPC-Klasse geschrieben habe die u.A. das Animationsverhalten zu verantworten hat (stehen bleiben = andere SpriteSheet als beim laufen) ist auf den ersten Blick nicht einsehbar, war aber doch ein Stück arbeit. Kollisionserkennung ist btw auch eingebaut, wenn auch noch sehhhr unschön.




    Performance
    Dieser Screenshot (800x600) ist unter 11-12 FPS entstanden. Das Youtube-Video wurde unter einer Auflösung von 400x300 aufgenommen - unter ca 30FPS. Die Demo#2 ist auf 320x240 Pixel Renderauflösung und 50FPS begrenzt - es können Frameraten von 60 - 140 FPS erreicht werden. Wie ich finde könnte man mit dieser "Grafikqualität" ein Spiel erstellen, dass kein Augenkrebs verursacht - wenn der Grafiker (oder ich xD) sich mehr mühe beim MapDesign macht, wird die Optik nochmal aufpoliert ohne Performance zu kosten.

    Links:
    Zum Downloaden einer leicht abgeänderten Version gegenüber dem YT-Video hier: Download RayCasting Demo#2
    Hier der Link zum Youtube-Video: linkzumvideo
    Einen Eintrag auf meinem Blog gibt es natürlich auch: RayCasting Engine – Endlich mal was Neues

    Quellcode

    1. Bewegen: WASD
    2. Umsehen (Rechts/Links): Pfeiltaste Rechts/Links
    3. Kamera rotieren: C + Pfeiltaste Rechts/Links
    4. Wichtig: Die Textbox unten links muss focus haben



    über Rückmeldungen würde ich mich wie immer freuen!
    PS: Hat vllt ijemand weitere SpriteSheets? (siehe textures-Verzeichnis)

    lg
    Dateien

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

    Sieht doch schonmal sehr gut, mir fallen echt viele Ideen ein was damit so alles realisieren könnte. Allerdings ist mir ein wirklich kleiner Schönheitsfehler aufgefallen, die Geschwindigkeit der Fußanimation passt nicht ganz genau mit der Geschw. überein mit der sich das Sprite über den Bode bewegt, is wohl nur en kleines Timing Problem. ich hoffe due weisst was ich mein..;)
    Ansonsten Großes LOB!
    mfg paulkoch95
    "yippieh! it compiles - ship it!"
    Das Spiel wird ja immer epischer!
    Was mir aufgefallen ist:
    Wenn man am Rand der Map entlang läuft und man die Kamera aus der Map "hinausschwenkt", werden die Wände komisch gezeichnet.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    @paulkoch95
    Das Timing hinzubekommen ist das kleinste Problem, die Zeit, wie lange ein Frame angezeigt werden soll kann man für jeden Charakter einstellen. Was man damit nicht kaschieren kann sind schlechte SpriteSheets - und ich habe keine guten: grob mit Paint zusammengerückt, wenig Frames pro Animation, Darstellung aus wenigen Winkeln.

    Eine Perfekte Spritesheet würde für mich so aussehen:
    - 360 Winkel-Ansichten der Figur (aktuell: 8)
    - 30 Animationszwischenschritte (aktuell: 4)

    Dann würde die Bewegung butterweich und realistischer aussehen..(und das beste: keine zusätzlichen Performancekosten!) aber woher nimmt man solche SpriteSheets?! xD
    Danke für die Rückmeldung! lg

    @Niko Ortner
    Danke! Das komisch ist ganz leicht zu erklären: Das Rendersystem welches die Wände zeichnet braucht keinen zBuffer, da es NUR die erste Wand zeichnet, die am nahesten (heißt es so?) zur kamera steht. Bei diesen Bäumen die das Gebiet begrenzen habe ich eine PNG-Grafik genommen, die teilweise Transparent ist - die "Mauern" aus Bäumen werden also auch transparent gezeichnet. Das gerenderte Bild wird über die Skybox gelegt, sodass sie an den Transparenten stetllen durchscheinen kann.

    Das ist gewollt und sieht meistens gut aus (von einer gewissen Entfernung aus betrachtet zumindest). Nicht gewollt ist, dass man, so wie du, von außen auf die Map schaust^^

    Mit dem gleichem Effekt lassen sich beispielsweise auch Pseudo-Spiegelungen an Fenstern machen. Die Fenster sind ganz leicht transparent - die Skybox kann etwas durchscheinen und wirkt (vor allem in Bewegung) wie eine Spiegelung:


    lg
    Macht schon ziemlich viel her das Ding, aber eigt. sollte es doch gehen, dass du es auf das Bitmap mit einer akzeptablen größe zeichnest und dann(ohne Interpolation zumindest) einfach hochskalierst, dann könnte man es auf dem ganzen Screen spielen(zwar pixelig, aber Minecraft ist ja nichts anderes so gesehen^^)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    jvbsl schrieb:

    Macht schon ziemlich viel her das Ding, aber eigt. sollte es doch gehen, dass du es auf das Bitmap mit einer akzeptablen größe zeichnest und dann(ohne Interpolation zumindest) einfach hochskalierst, dann könnte man es auf dem ganzen Screen spielen(zwar pixelig, aber Minecraft ist ja nichts anderes so gesehen^^)

    *Staub wegpust*

    Da fände ich die Implementierung einer dieser komischen Kantenerkennungsverfahren ganz interessant, wie sie bspw beim VisualBoy Advance Emulator genutzt werden. Dazu liest sich auch gut: Depixelizing Pixel Art. Hier ist die dazugehörige Website: research.microsoft.com/en-us/um/people/kopf/pixelart/

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    @vb-checker: Es ging darum die Performance zu steigern, wenn man das auf CPU Ebene einbauen würde, würde man so ziemlich das gegenteil erreichen :D
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---