2D-Game...



  • hi zusammen, ich habe wieder mal eine Frage 🙂

    ich will mit allegro ein 2D-Game programmieren. Es soll ein Action-Adventure-Game werden und man soll den eigenen Spieler von der Seite sehen (so Worms-Perspektive),es sollen auch noch andere Personen herumgehen, allerdings habe ich das Problem, dass diese Personen nicht aneinander vorbei kommen, da es ja kein 3D-Spiel ist (sie könnten einander immer überspringen, aber das will ich nicht...). Hat jemand von euch eine Idee, wie ich das lösen könnte?

    gruss

    nightmare_frog



  • Hi !

    Was möchtest du machen ? Pseudo3D in Allegro ? Wenn ja, heißt "paralaxe Eben" dein Stichwort 🙂



  • hmm.. er hat doch gesagt perspektive wie bei worms...warum sollten die figuren nicht aneinadnder vorbeikommen? stört es dich wenn sie ineinander laufen bzw duch sich durch? kapier die frage nicht ganz



  • hmm, wieso bin ich nicht auf die Idee gekommen, sie könnten durcheinander hindurch gehen? tnx 🙂

    @headhunter: was sind paralaxe ebenen?



  • Kennst du Moorhuhn ? Sicherlich 🙂
    Der Hintergrund wurde m.h. mit PE gemacht. Du zeichnest einfach mehrere Layer/Schichten,bei Moorhuhn halt Wolken :

    Layer1 : 100 meter entfernt, bewegt sich recht schnell
    Layer2 : 150 meter entfernt, mittelmäßig schnell
    Layer3 : 200 meter entfernt , recht flott

    Zusammen ergibt das einen wunderschönen Pseudo3D Effekt, der übrigens auch in Worms angewendet wurde.

    Alles klar ?



  • ja, das hab ich kapiert.
    Dann müsste ich aber für jede Figur eine eigene "Ebene" erstellen...
    ich denke, ich probier einfach mal...

    gruss

    nightmare_frog



  • Du musst doch einfach nur jeder Spielerposition(die du ja wahrscheinlich über Klassen verwaltest) eine weitere Float Variable mitgeben...

    Du gibst also z.B. der einen Figur den float Wert 1.2, sie ist also kurz hinter der "normalen" ebene, und gibst einer anderen Figur den Wert 1.8, sie ist also schon weiter hinten.
    Wenn du jetzt noch die Standardbreite der Spielfigur kennst, sagen wir 0.1Floats, dann kannst du ja ganz einfach berechnen ob sie sich treffen oder nicht 🙂

    PH



  • Wo kriege ich allegro her?



  • FAQ you 🙂



  • @Programmator: ich arbeite mit C, also habe ich keine Klassen, hab allerdings mal gehört, dass Strukturen etwas ähnliches wie Klassen sind (ich verwalte die Figuren mit Strukturen..). Danke für die Hilfe...

    gruss

    nightmare_frog

    ps ich habe mir Gedanken darüber gemacht, ob ich wirklich mit allegro arbeiten will und bin auf den Schluss gekommen, dass ich lieber mit OpenGL beginne (natürlich nur 2D..), könnt ihr mir sagen, ob C genug schnell ist, um ein "richtiges" 2D-Spiel zu programmieren?



  • Hi !

    Ich würde dir nicht raten mit OpenGL 2D Games zu programmieren. Das ist einfach viel zu umständlich, da OpenGL (ebenso wie D3D) keinen besonders guten 2D Support hat.
    Warum möchtest du nicht mit der Allegro Lib anfangen ? Da kannst du sogar 3D Funktionen (von OGL) verwenden :). Wenn dir Allegro allgemein nicht zusagt kann ich dir die Clanlib (www.clanlib.org) bzw die SDL (www.libsdl.org) nur wärmstens ans Herz legen. Weiterer Vorteil : Plattformunabhängigkeit, und (zumindest bei der Clanlib) : Viele weitere Helper Sachen (Netzwerk, Sound, Texturen usw), so dass du dich nicht noch mit DirectX rumplagen musst.

    Natürlich ist C schnell genug für Games, ebenso wie Visual Basic, Delphi C++, C#.... Jedoch würde ich dir C++ empfehlen, das objektorientierte hilft einfach enorm 🙂



  • also ich bin eigentlich auf OpenGl gekommen, weil ich mir dachte, wenn ich DirectDraw lerne, dann muss ich, wenn ich irgendwann dann mal ein 3D-Game programmieren will, alle Funktionen neu lernen (da ja direct3d sicher andere Funktionen beinhaltet als DirectDraw). Bei OpenGl hätte ich dann mindestens schon eine kleine Ahnung, da es ja ähnliche Funktionen sind wie die 3D-Funktionen (soviel ich weiss).
    Ich weiss nicht wie genau das mit Allegro / SDL ist, aber die greifen ja auch auf DirectX / OpenGL zu, dann möchte ich lieber "von Grund auf", beginnen.
    Gibt es eigentlich Gründe, wieso Spielentwickler mit DirectX/OGL arbeiten, wenn doch diese Funktionen alle in Allegro zusammengefasst und vereinfacht sind??

    gruss

    nightmare_frog



  • ... (da ja direct3d sicher andere Funktionen beinhaltet als DirectDraw)

    Jup, fast alles anders

    Bei OpenGl hätte ich dann mindestens schon eine kleine Ahnung, da es ja ähnliche Funktionen sind wie die 3D-Funktionen (soviel ich weiss).

    Dann kannst du direkt D3D lernen. Perspektivische Projektion abschalten, und schon kannst du mit absoluten Pixelwerten arbeiten. Würde ich aber nicht empfehlen, das ist ätzend 🙂

    Ich weiss nicht wie genau das mit Allegro / SDL ist, aber die greifen ja auch auf DirectX / OpenGL zu, dann möchte ich lieber "von Grund auf", beginnen.

    Das sind Libraries die dir für OpenGL 2D Funktionalität zur Verfügung stellen, ähnlich wie in DirectDraw. Gleichzeitig kannst du aber auch noch OpenGL Code benutzen. Viele Sachen, wie z.b. das laden von Texturen ist in 2d und 3d wohl das gleiche.

    Gibt es eigentlich Gründe, wieso Spielentwickler mit DirectX/OGL arbeiten, wenn doch diese Funktionen alle in Allegro zusammengefasst und vereinfacht sind??

    AFAIK net 😃 Wenns nach mir ginge würde die ganze Welt mit der Clanlib arbeiten 😃



  • appropo 2d und ogl

    wenn ich in ogl n 2d menü benutzen will, isses dann praktikabel eine menütextur auf n quad zu legen und direkt vor dem spieler aufzuziehn?



  • Nein, eigentlich nicht.
    Du soltlest die Orthogonale Projektion einschalten (keine Perspektive), und dann das GUI zeichnen. Dies ist aber imo schwerer -viel schwerer- als die Blitoperationen von Clanlib bzw SDL bzw Allegro 🙂



  • warum is das so schwer?



  • @headhunter: ich glaube, mein Problem ist, dass ich nicht allegro oder was auch immer lernen will, weil wenn ich dann auf 3D umsteige muss ich nochmal praktisch von vorne beginnnen. Darum bin ich auf OpenGL gekommen. Aber irgendwie geht das ja wohl nicht anders, dass ich, wenn ich von 2d auf 3d umsteigen will, alles neu lernen muss...

    was sind die Vorteile von OpenGl / DX gegenüber allegro / SDL? Es muss doch welche geben...



  • naja du musst ja nich alles neu lernen
    ein spiel besteht ja nich nur aus ner renderfuktion... genauso wichtig sind ki, logic, userinput... und das bleibt einigermaßen gleich

    ich mag an ogl besonders, dass sich die api nich so in den vordergrund drängt... man kann sich vollkommen auf das eigentliche spiel konzentriern und je nach bedarf die ogl optionen während der laufzeit verändern

    ehrlichgesagt is mir der einstieg in ddraw schwerer gefallen als in ogl... kann aber auch daran liegen, dass zu der zeit einiges für mich neu war... spielschleife... winapi etc.

    ich bin jedenfalls vollkommen zufrieden mit ogl... nach 5 stunden hat gestern auch endlich der import von .md2 files geklappt *freu*



  • na ja, dann werd ich mir mal die SDL-Libraries anschauen, wenn ich dann mein erstes Game irgendwann mal fertig habe, kann ich ja immer noch OpenGl anschauen...

    gruss

    nightmare_frog



  • [ Dieser Beitrag wurde am 04.02.2003 um 14:40 Uhr von nightmare_frog editiert. ]


Anmelden zum Antworten