Aufbau eines Jump'n Run's (like Turrikan)
-
- GESCHLOSSEN - Bevor hier zu viel Schei**e erzählt wird!!
-
Erstens heißt es Turrican, zweitens ist es von Manfred Trenz und rult derbst, drittens ist es kein
FinalbrainXP schrieb:
Jumpnrauns
sondern ein Shoot 'em Up, oder meinetwegen Shoot'nJump (lass' ich noch durchgehen)!
FinalbrainXP schrieb:
Dachte ich mache mir eine virtuelle kollisionsmap, welche einfach schwarz-Weiss ist..und ich dann nach der Farbe abfrage..aber
du muss ich viel Locken und unlocken..und das geht auf die Performance.Von Deiner "Kollisions-Map" braucht die GraKa doch überhaupt nichts zu wissen?!?
-
Turrican hatte zumindest aufm C64 8x8 Blöcke, und es fällt IMHO nicht negativ auf.
Bye, TGGC \-/
-
- GESCHLOSSEN - Bevor hier zu viel Schei**e erzählt wird!!
-
- GESCHLOSSEN - Bevor hier zu viel Schei**e erzählt wird!!
-
FinalbrainXP schrieb:
5.) Klar ..Turrican rult derbst..deswegen will ich auch eins basteln!
Metal Slug rult noch mehr
-
- GESCHLOSSEN - Bevor hier zu viel Schei**e erzählt wird!!
-
FinalbrainXP schrieb:
Metal Slug..was ist das...goggle mal danach
-
Ich habe doch 'nen ernstgemeinten Tipp gegeben: Nimm relativ kleine Blöcke, das merkt IMHO keiner. Pixelgenau braucht man nicht (when will they ever learn... 8).
Bye, TGGC \-/
-
- GESCHLOSSEN - Bevor hier zu viel Schei**e erzählt wird!!
-
FinalbrainXP schrieb:
Also ist es demnach ein Jump'n Run
und ein Shoot'em Run! Aber warum so kleinlich ? Bei Supermario sagt auch
keiner Shoot'em Run/Jump, obwohl man da durchaus schießen kann!Damit meinst Du sicher das, was man machen kann, wenn man die "Blume" aufsammelt?!?
LOL
Naja, das mag zwar lustig sein, aber einem Vergleich mit dem Dauerfeuer-Im-Kreis-Drehen eines Turrican oder Probotector hält es nun nicht stand... :pFinalbrainXP schrieb:
4.) Das mit dem Speicher stimmt, warum einfach wenns auch kompliziert geht
Hatte meine CollsionsMap im Videospeicher, was ja auch schwachsinn ist!Wenn Du Spaß dran hast kannst Du sie zur Abwechslung auch mal in den Soundkarten-RAM ballern oder durch den TCP-Stack...
FinalbrainXP schrieb:
Meine Engine wird cool. [...]
Engine.InitDirectDraw(WIN_WIDTH, WIN_HEIGHT, WIN_HWND); Engine.containerPool->GimmeContainer(0)->PumpSpriteInContainerFromCellFile(0,"Sprite3.bmp",true,265,400,0,0,32,32,COLOR_MAGENTA,true); Engine.BeginRender(COLOR_BLACK); Engine.containerPool->GimmeContainer(0)->PumpSpriteFromContainer(0)->DrawMe(0,0); Engine.EndRender();
Ist cool gewrapped..mann muss nix freigebn oder initialiseren bis auf das Engine-Objekt! Und man hat direkt nen fertig erstelltes Sprite im Container, welches man jederzeit holen kann. [...]
Der einzige der hier posen tut, bist Du! :p
*scherz*
-
- GESCHLOSSEN - Bevor hier zu viel Schei**e erzählt wird!!
-
+++ SSSCHHHHWOAAAAARZZZEEEEENNNNNNEGGGGGGAAAAAA +++
-
- GESCHLOSSEN - Bevor hier zu viel Schei**e erzählt wird!!
-
Yup.
EDIT: BTW: Manfred hat sich für das Cover von Turrican von ManOwaR's Kings Of Metal-Album inspirieren lassen (kam 2 Jahre vorher raus), womit jawohl eindeutig bewiesen wäre
auch ManOwaR herrschen wahrhaftig!
-
Engine.containerPool->GimmeContainer(0)->PumpSpriteInContainerFromCellFile(0,"Sprite3.bmp",true,265,400,0,0,32,32,COLOR_MAGENTA,true);
also des hät i anders gemacht
müssen das am ende echt 11 parameter sein? und wieso steht da gimme und nicht giveMe? containerpools sieht mir auch ziemlich public aus.Engine.GiveMeContainer(0).createSprite(0,"Sprite3.bmp",true,265,400,0,0,32,32,COLOR_MAGENTA,true);
oder gleich:
Engine.createSprite(0,0,"Sprite3.bmp",true,265,400,0,0,32,32,COLOR_MAGENTA,true);
aber an den parametern solltest echt was ändern^^.
-
- GESCHLOSSEN - Bevor hier zu viel Schei**e erzählt wird!!
-
löl. Das nennt man wohl "übermotiviert"
-
FinalbrainXP schrieb:
1.) Gimme ist cooler! Und ist ja meine Engine mein Style!
*ROFL*
Und zu viele Enter sind auch dein Stil?
Bye, TGGC \-/
-
- GESCHLOSSEN - Bevor hier zu viel Schei**e erzählt wird!!
-
FinalbrainXP schrieb:
Warum denn "Otze" ???
weil der name ne geschichte hat, und ich seitdem überall so heisse?
//edit jemals vom kapselung oder open-closed-principle gehört?
diese regelungen haben schon einen sinn^^//edit2
2.) Da sind 3 Objekte Public! ContainerPool, Container, Sprite!
Das sind alles 3 eingenständige Klassen...welche man auch ausserhalb
der Engine benutzen kann!! Wenn ich jetzt nen animerbares Objekt mache,
muss ich dem nur den Pool-Pointer übergeben..schön für die public objecte, aber wärs wirklich so schwer nen schönen geter/seter zu schreiben? wenn ich das objekt direkt habe, kann ich damit mit leichtigkeit schindluder betreiben(selbst wenns nicht absicht ist).
ne const referenz auf das objekt zurückzugeben ist sicherer, genau dasselbe gilt für const pointer, wenn du weist, dass du das objekt ändern willst, dann benutzt du den seter, sonst den geter,und schon kannst du sicher sein, dass kein schindluder damit betrieben wird.3.) Das mit den Parametern ist doch toll! Verstehe nicht warum es schlecht ist.
Bei direktX gibt es auch mäßig Parameter! Und dieses ist ja die größte
Funktion! Ob ich jetzt 11 untereinander oder hintereinander mache..ist doch
egal! Jedes Sprite braucht halt diese 11 Unterschiedlichen Parameter!
Es kommen deshalb soviele Parameter zustande, weil diese Funktion
Teilausschnitte aus Bitmaps lesen kann und direkt nen Sprite daraus kloppen
kann!bitte zähl mir mal direkt ausm kopp alle parameter der dx funktion
D3DXCreateTextureFromFileInMemoryEx
auf, sie hat nur 15 parameter,und dann schau dir deine aussage nochmal an.
viele parameter sind nicht gut, ziel soll sein, funktionen mit maximal 6-7 parametern zu schreiben.
zb bei deiner funktion:PumpSpriteInContainerFromCellFile(int pos,char * path, bool videoMemory, int bmpWidth, int bmpHeight, int startX, int startY, int partWidth, int partHeight, unsigned int colorKey, bool transparent)
ich würds so machen
createSprite(vector2 topLeft,vector2 downRight,const bitmap& bitmap,int spriteIdentifier,bool videoMemory=true);
den rest der infos kann man direkt aus dem bitmap nehmen, zb colorkeying oder die größe/breite des bitmaps,oder ob es transparent sein soll.
ich hab hier mit der bitmapklasse einfach eine zusätzliche abstraktionsebene eingebaut, und die positionen in vectoren zusammengefasst.