2D Jump and Run Grafiken? Howto???
Übersicht

X-traBetreff: 2D Jump and Run Grafiken? Howto??? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich hab bisher nur bissl in PlitzPlus gecodet, und da ich auf Linux umgestiegen bin, hab ich jetzt BM am Start.
Und ich möchte ein kleines absolut simples Jump and Run programmieren. Ohne Gegner für den Anfang usw. Einfach nur nen Level, mit vielleicht einem kleinen Ball, oder einer Figur, die durch die Gegend hüpft. Jetzt zu meiner absoluten Noob Frage: Wie funktioniert das mit den Sprites? Also die Figur, die Gegend hüpfen soll, sowie die Levelgestaltung. Also ne Landschaft is klar, aber Bäume, Hindernisse usw. wie macht man das? Also nich wie man die malt, oder im Spiel benutzt, sondern wie man sie ins Spiel an geeigneter Stelle lädt. Tiles????? Wenn ja, kann mir das jemnad grob erklären, oder gibts ein Tut dafür? Ich will mir das schon selbst erarbeiten, aber so grobe Umrisse wären super. Keine Angst, ich will das game auf jeden Fall komplett selbst coden, ohne irgendwelche Quellcodes einfach nur reinzukopieren, denn ich will es ja später noch ausbauen. Oder gibts vielleicht ein Tut für sowas? Weil wenn das mit Tiles geht, dann hab ich dafür überhaupt keinen Plan, hab nur schonmal von Tiles gehört bzw. gelesen, und daß es da so ein z.B. .jpg File ist, mit vielen kleinen Bildern drin, mehr weiß ich nicht. Und wenns denn so sein sollte, wie man dann diese kleinen Tiles so ins Spiel einbindet, daß auch die richtigen Sprites an der richtigen Stelle sind. usw usw. Über Hilfe von Euch würde ich mich echt sehr freuen. |
||
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tiles sind schon das richtige für so ein Spiel und das Prinzip dahinter ist recht Simpel. Du hast ein Bild mit den Tiles (Tileset) und lädst es in einzelnen Stücken mit LoadAnimImage.
Dann brauchst du ein zweidimensionales Array für die Map, das du mit Werten füllen kannst. Jeder dieser Wert steht für einen Frame des Tilesets. Beim zeichnen übergibst du diesen Wert bei DrawImage und fertig ist. Hier mal ein kleines Beispiel: Code: [AUSKLAPPEN] Strict Graphics 800,600,0 Local Tileset:TImage = CreateImage(32, 32, 4) SeedRnd(MilliSecs()) For Local i:Int = 0 Until 4 Cls SetColor 100,100,100 DrawRect 0,0,32,32 SetColor Rand(50,150), Rand(50,150), Rand(50,150) DrawRect 1,1,30,30 GrabImage(Tileset, 0, 0, i) Next Local Map:Int[15, 15] For Local x:Int = 0 Until 15 For Local y:Int = 0 Until 15 Map[x,y] = Rand(0,3) Next Next SetColor 255, 255, 255 Repeat Cls For Local x:Int = 0 Until 15 For Local y:Int = 0 Until 15 DrawImage Tileset,x*32, y*32, Map[x,y] Next Next Flip Until KeyHit(KEY_ESCAPE) Übrigens ist das JPG Format nicht für Spiele geeignet. Einmal als JPG Datei gespeichert, ist ein Bild wegen der kompression für immer zerstört. Mfg |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
X-tra |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Für mich als Noob, CreateImage(32, 32, 4) bedeutet x=32, y=32, in 4 bit farbtiefe, richtig?
und die 32 sind schon pixel? Und damit ist nur ein Tile von einer tilemap gemeint, ja? Ist die größe der tilemap wichtig, oder muß die genau angepasst sein, bzw.müssen die tiles genau nebeneinander liegen, kein pixel dazwischen? |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die 4 bedeutet, dass das Image 4 Frames bzw. Tiles enthält, die alle 32x32 Pixel groß sind.
Damit hätten sich die Fragen 3 und 4 auch erledigt, oder? ![]() |
||
X-tra |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Japp, haben sich erledigt, also genau nebeneinander.
Eine Frage habe ich da noch. Und zwar, müssen die Tiles nebeneinander, oder oben zwei drunter zwei angeordnet sein auf der map? Oder ist das wurscht? Hab mir been den code oben nicht komplett angesehen, is ja auch schon bissl spät, oder aber bestimmt man dann mit dem auslesen, wo gelesen wird, oder gibts da einfach eine reihenfolge, sozusagen eine durchnummerierung? Achja, die einzelnen Tiles sind ja nun viereckig, und wenn ich da jetzt ein dreieck machen möchte, wie bekomm ich das hin? Sodaß die nicht ausgemalten Flächen durchsichtig sind, und das auch mit den Kollisionen hinhaut. Ich weiß, Noob Fragen über Fragen. Das ist alles, was ich im Moment wissen möchte. |
||
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kannst die Tiles ja anordnen wie du willst. Sollte am Ende halt nur eine Map ergeben, die deiner Vorstellung entspricht.
Wenn du nicht willst, dass Teile eines Bildes gezeichnet werden, zeichne es einfach nicht in dein Tileset ein. Über Kollisionen musst du dir noch keine Gedanken machen. Habe dir mal ein Beispiel mit einem besseren Tileset gemacht. Das Bild dazu wird aus dem Internet geladen, habe das Tileset mit google gefunden. Code: [AUSKLAPPEN] Strict Graphics 800,600,0 Local bank:TBank = LoadBank("http::nboumal.free.fr/RPGEngine/images/TileSetExample.PNG") If Not Bank RuntimeError("Bild konnte nicht aus dem Internet geladen werden") EndIf Local Tileset:TImage = LoadAnimImage(Bank, 32, 32, 0, 256) Local Map:Int[15, 15] 'Die Steinränder For Local i:Int = 0 Until 15 Map[i,0] = 0 Map[0,i] = 0 Map[14, i] = 0 Map[i,14] = 0 Next 'Gras For Local x:Int = 1 Until 14 For Local y:Int = 1 Until 14 Select Rand(0,1) Case 0 Map[x,y] = 21 Case 1 Map[x,y] = 16 End Select Next Next Repeat Cls For Local x:Int = 0 Until 15 For Local y:Int = 0 Until 15 DrawImage Tileset,x*32, y*32, Map[x,y] Next Next Flip Until KeyHit(KEY_ESCAPE) Hier habe ich schon ein kleines Level gebaut. Außen sind Steine und innen das Gras. Dafür habe ich die Frames 0, 16 und 21 benutzt. Normalerweise hat man auch einen Mapeditor, der einem die Auswahl der Tiles vereinfacht. In dem Beispiel habe ich halt kurz auf dem Bild nachgezählt, an welcher Position sich die gewünschten Tiles befinden. Teste halt mal ein bisschen rum und versteh das Prinzip hinter dem ganzen. Mfg |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
X-tra |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank schonmal, werde aber stmal schlafen gehen, is ja schon spät langsam.
Kurze Frage noch. Die Bereiche bei einem Tile, die ich nicht möchte, daß sie mitgezeichnet werden, lasse ich sozusagen frei, aber es gibt doch immer noch eine Hintergrundfarbe, was ist mit dieser? Hab ein Tileset gesehen, wo eine Art Lila als Grund bzw. Hintergrundfarbe bei dem Tileset verwendet wurde, und diese sieht man ja dann im spiel auch nicht. So, wollte grad dein beispiel probieren, da kam dies heraus! Code: [AUSKLAPPEN] Building untitled2
Compiling:untitled2.bmx flat assembler version 1.64 4 passes, 6273 bytes. Linking:untitled2.debug /usr/bin/ld: cannot find /home/nutzer/BlitzMax118_Linux/BlitzMax/mod/pub.mod/sas.mod/sas.debug.linux.x86.a collect2: ld returned 1 exit status Build Error: Failed to link /home/nutzer/BlitzMax118_Linux/BlitzMax/tmp/untitled2.debug Process complete und diese datei exitiert tatsächlich nicht. Und die Ordnerstruktur ist auch anders. nämlich so wie im anhang. hab den sas mod vorhin zufällig mit reingenommen, ist der überhaupt nötig??? ![]() |
||
X-tra |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
okay habe die antwort grad selbst gefunden.
Beim kompilieren geht es alle mods im verzeichnis durch und sucht nach gebuildeten, sozusagen. Daher der fehler. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group