2D Jump and Run Grafiken? Howto???

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

X-tra

Betreff: 2D Jump and Run Grafiken? Howto???

BeitragSa, Jun 02, 2007 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
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-X

Betreff: .....

BeitragSa, Jun 02, 2007 23:07
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jun 02, 2007 23:31
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jun 02, 2007 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
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? Wink
 

X-tra

BeitragSa, Jun 02, 2007 23:55
Antworten mit Zitat
Benutzer-Profile anzeigen
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-X

Betreff: .....

BeitragSo, Jun 03, 2007 1:16
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jun 03, 2007 1:53
Antworten mit Zitat
Benutzer-Profile anzeigen
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???


user posted image
 

X-tra

BeitragSo, Jun 03, 2007 2:15
Antworten mit Zitat
Benutzer-Profile anzeigen
okay habe die antwort grad selbst gefunden.

Beim kompilieren geht es alle mods im verzeichnis durch und sucht nach gebuildeten, sozusagen.

Daher der fehler.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group