2D-Engine. Brauche einen Denkanstoß
-
FlameDiver schrieb:
Lohnt es sich überhaubt für ein 2D-Spiel eine enging zu schreiben?
Kommt immer darauf an, wie gross das Projekt werden soll und wieviel Spass du haben willst.

FlameDiver schrieb:
Was für Funktionen brauche ich?
Ein typischer Game-Loop besteht aus drei Teilen:
Input
Logik
Render (Output)Dementsprechend solltest du dir die Funktionalität herleiten.
Was brauch ich für Input? Tastatur und Maus? Wie ist es mit Gamepad oder Joystick? Brauch ich für den Render nur Grafik oder auch Sound? Usw.FlameDiver schrieb:
OpenGl oder DirextX da sind wir uns noch ned sicher. ich bin für OpenGL weil meines wissen nach umfangreicher.
Da täuschst du dich. Es ist gerade andersrum. Aber du vergleichst hier auch Äpfel mit Birnen. DirectX ist 'ne komplette Multimedia API, also Grafik, Sound, Netzwerk, etc. OpenGL lediglich Grafik. Der direkte Vergleich wäre also DirectX Graphics und OpenGL. Die nehmen sich vermutlich nichts in Funktionalität.
-
Nur mal so meine Gedanken dazu:
Ich würde die engne splitten. Einen lowlevelteil (der nicht mal objektorientiert sein brauch)
-3 Eben: vordergrund,hintergrund,akteure
-Alles basiert auf tiles: tiles sind kleine quadrate mit vorgegeben inhalt (ein bildchen)
-du sorgst also dafür das eine funktionrender(tile tiles[3][X_SIZE][Y_SIZE])alles korrekt darstellt
Dann hast du einen highlevel teil:
-ein sigleton das ein tiles array hält
-eine klasse objekt, die die tiles wrapt, nicht instanzierbar
-davon abgeleitet statisches_objekt, dass zusätzlich noch ein bool hat um zwischen vg/hg zu unterscheiden
-ebenfalls von objekt abgeleitet:
passiv_dynamisch_obj <- aktiv_dynamisch_obj <- spieler
-davon abgeleitet
-mvc:
m=objekt
v=eine klasse, die das tiles singleton verändert
c=je nachdem, wie dynamische das ganze sein soll, sowas wie statisch (vg+hg), passiv_dynamisch (mauern), aktiv_dynamisch (gegner), spieler; die controller sind jeweils von einander abgeleitet und nehmen das passende _obj entgegen
-du packst jeweils m+v+c in eine polymorphe klasse
-dann wrapst du noch den input
-und schreibst eine klasse, die alles zusammenführt
Das ist so ganz grob, wie ich es machen würde.
-
ness schrieb:
Nur mal so meine Gedanken dazu:
Ich würde die engne splitten. Einen lowlevelteil (der nicht mal objektorientiert sein brauch)
-3 Eben: vordergrund,hintergrund,akteureIch geh mal davon aus das Vordergund eingabe und hintergrund verarbeitung ist. aber was ist Akteure?
-Alles basiert auf tiles: tiles sind kleine quadrate mit vorgegeben inhalt (ein bildchen)
kenn ich

-du sorgst also dafür das eine funktion
render(tile tiles[3][X_SIZE][Y_SIZE])alles korrekt darstellt
sprich die map aus den tiles generiert.
Dann hast du einen highlevel teil:
-ein singleton das ein tiles array hältwas ist ein singelton?
-eine klasse objekt, die die tiles wrapt, nicht instanzierbar
was ist wrapen?
-davon abgeleitet statisches_objekt, dass zusätzlich noch ein bool hat um zwischen vg/hg zu unterscheiden
was ist vg und was hg?
-ebenfalls von objekt abgeleitet:
passiv_dynamisch_obj <- aktiv_dynamisch_obj <- spielerfallen physikalische objekte auch unter aktive_dynamisch_obj?
-davon abgeleitet
-mvc:
m=objekt
v=eine klasse, die das tiles singleton verändert
c=je nachdem, wie dynamische das ganze sein soll, sowas wie statisch (vg+hg), passiv_dynamisch (mauern), aktiv_dynamisch (gegner), spieler; die controller sind jeweils von einander abgeleitet und nehmen das passende _obj entgegen
-du packst jeweils m+v+c in eine polymorphe klasse
-dann wrapst du noch den input
-und schreibst eine klasse, die alles zusammenführt
Das ist so ganz grob, wie ich es machen würde.was ist ploymorph? ach mom ich guck nach.
ich hätte noch ne idee wie man das mit der map machen kann. baue die map über tiles auf (also im leveleditor. dann wird die nach dem prinzip:
0,0,0,0,0,0;
0,1,1,1,1,0;
0,1,0,0,1,0;
0,1,0,0,1,0;
0,1,1,1,1,0;
0,0,0,0,0,0;gespeichert. dann wird daraus ein bild generiert udn das den als map genommen.
wer sich jetzt fragt: wieso so? nunja das ist einfach. ich hatte vor das man die map mit den waffen sagen wir mal "verändern" kann
. ich nehm mit einfach ne transparanzfarbe und immer da wo ne kugel aufschlägt wird dann sozusagen ein teil der map gelöscht. und kollisiopns abfrage mach ich den über pixel.sorry wegen dem vergelich OpenGl und DX ist mit im nachhinein auch eingefallen dsa DX ja noch sound und alles hat

aber wie sieht das effectmäßig aus? gibt es in DX zb bumbmapping?
weil ich ahtte mir überlegt das auch die spielfiguren zu packen damit die plastischer aussehen. war aber auch nur sonne idee.aber danke schonmla für die viele hilfe. auch wenn ich viele fragen hab
-
ja, in dx gibt es bumpmapping...^^
-
wuderbar

ist auch zum glück nicht übertreiben für ein 2d spiel...
-
FlameDiver schrieb:
ness schrieb:
Nur mal so meine Gedanken dazu:
Ich würde die engne splitten. Einen lowlevelteil (der nicht mal objektorientiert sein brauch)
-3 Eben: vordergrund,hintergrund,akteureIch geh mal davon aus das Vordergund eingabe und hintergrund verarbeitung ist. aber was ist Akteure?
Nein. Es geht hier um die grafikausgabe im lowlevelteil, die 3 ebenen hat: den hintergrund, davor die akteure, davor den vordergrund
FlameDiver schrieb:
-Alles basiert auf tiles: tiles sind kleine quadrate mit vorgegeben inhalt (ein bildchen)
kenn ich

-du sorgst also dafür das eine funktion
render(tile tiles[3][X_SIZE][Y_SIZE])alles korrekt darstellt
sprich die map aus den tiles generiert.
Nein, sondern diesen vektor aus vektoren von tiles korrekt darstellt. sprich tiles[0] ist der hintergrund, tiles[1] die Akteure und tiles[2] der vordergrund
FlameDiver schrieb:
Dann hast du einen highlevel teil:
-ein singleton das ein tiles array hältwas ist ein singelton?
Sigleton ist ein entwurfsmuster, danach kannst du suchen
FlameDiver schrieb:
-eine klasse objekt, die die tiles wrapt, nicht instanzierbar
was ist wrapen?
Umhüllen. Soll heißen, du machst eine klasse objekt, die einen haufen tiles + deren position verwaltet
FlameDiver schrieb:
-davon abgeleitet statisches_objekt, dass zusätzlich noch ein bool hat um zwischen vg/hg zu unterscheiden
was ist vg und was hg?
vordergrund und hintergrund
FlameDiver schrieb:
-ebenfalls von objekt abgeleitet:
passiv_dynamisch_obj <- aktiv_dynamisch_obj <- spielerfallen physikalische objekte auch unter aktive_dynamisch_obj?
siehe unten. passiv_dynamisch=mauern und so (also alles was sich selbst nicht bewegt aber trotzdem berücksichtgt werden muss). aktiv_dynamisch sind z.B. gegner (also objekte die sich bewegen). Wenn du willst kannst du das ganze auch noch so ausbaun, dass es objekte gibt die sich bewegen und nicht bei den physics berücksichtigt werden müssen, das würde die vererbungshierarchie etwas ändern
FlameDiver schrieb:
-davon abgeleitet
-mvc:
m=objekt
v=eine klasse, die das tiles singleton verändert
c=je nachdem, wie dynamische das ganze sein soll, sowas wie statisch (vg+hg), passiv_dynamisch (mauern), aktiv_dynamisch (gegner), spieler; die controller sind jeweils von einander abgeleitet und nehmen das passende _obj entgegen
-du packst jeweils m+v+c in eine polymorphe klasse
-dann wrapst du noch den input
-und schreibst eine klasse, die alles zusammenführt
Das ist so ganz grob, wie ich es machen würde.was ist ploymorph? ach mom ich guck nach.
ich hätte noch ne idee wie man das mit der map machen kann. baue die map über tiles auf (also im leveleditor. dann wird die nach dem prinzip:
0,0,0,0,0,0;
0,1,1,1,1,0;
0,1,0,0,1,0;
0,1,0,0,1,0;
0,1,1,1,1,0;
0,0,0,0,0,0;gespeichert. dann wird daraus ein bild generiert udn das den als map genommen.
wer sich jetzt fragt: wieso so? nunja das ist einfach. ich hatte vor das man die map mit den waffen sagen wir mal "verändern" kann
. ich nehm mit einfach ne transparanzfarbe und immer da wo ne kugel aufschlägt wird dann sozusagen ein teil der map gelöscht. und kollisiopns abfrage mach ich den über pixel.sorry wegen dem vergelich OpenGl und DX ist mit im nachhinein auch eingefallen dsa DX ja noch sound und alles hat

aber wie sieht das effectmäßig aus? gibt es in DX zb bumbmapping?
weil ich ahtte mir überlegt das auch die spielfiguren zu packen damit die plastischer aussehen. war aber auch nur sonne idee.aber danke schonmla für die viele hilfe. auch wenn ich viele fragen hab
Ich glaube du solltest dich erst mal mit den basics auseinandersetzen, bevor du anfängst eine engine zu basteln.
-
Willst du immer noch die engine basteln? Wenn ja, meine ea steht im profil...
-
jap will ich.
-
ness schrieb:
Willst du immer noch die engine basteln? Wenn ja, meine ea steht im profil...
Ich meinte damit, dass ich dir, da ich z.zt. nich viel zu tun hab (was sich aber schnell ändern kann), helfen würde, wenn du das möchtest. Und das du dich bei meiner mail adresse, die im profil steht, melden sollst, wenn interesse besteht.
-
ich hab dir geschrieben
die einmal mit dem geistreichen titel: engine.
ich melde mich wenn ich irgendwie fragen hab.gibt es irgenwie ein tut für ne 2d engine? oich hab nämlich noch keins gefunden
-
Für "normales" 2D ohne zusätzliche Effekte würde ich DirectDraw nehmen.

So, und jetzt könnt ihr mich lynchen
-
*lynch* ^^
was gäbe es den noch für alternativen zu directDraw in direct x?
-
http://www.libsdl.org/index.php
tutorials usw findest du auch dortauf http://www.gamedev.net/reference/ findest du allgemeines und auch für sdl ein paar dinge