Mit was bei einem map Editor für RPG anfangen ?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

nemo

Betreff: Mit was bei einem map Editor für RPG anfangen ?

BeitragMi, Jan 14, 2004 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

ich will mal einen einfachen map editor für ein RGP Game machen, aber ich weis nicht wie ich anfangen soll !?!?!? Ich wollte das mal schritt für schritt machen...er soll 2D werden...
könnte mir da mal wer sagen mit was ich anfangen sollte, würde mich da sehr freuen Smile))))))))))))

mfg,
nemo
 

René Meyer

BeitragMi, Jan 14, 2004 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich vermute mal, es soll Dein erstes Spiel werden.

Schritt für Schritt heißt: Programmiere zuerst ein einfaches Spiel, wie Pac-Man oder einen Space Shooter. Ein RPG gehört zu den anspruchsvolleren Aufgaben; damit sollte niemand beginnen.

Grundsätzlich funktioniert das so: Du hast ja eine feste Spielfläche von sagen wir ... 100x100 Feldern und eine bestimmte Anzahl von Graphiken (Tiles). Du bildest den Level auf einem Dim-Feld ab, wobei jede Graphik eine bestimmte Zahl ist. Es gibt eine Tutorial-Serie zu diesem Thema von Blitzmaster.
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb
 

nemo

BeitragMi, Jan 14, 2004 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, ein rpg ist etwas zu schwer !

aber ein pac-man ist eine gute idee natürlich ohne scrolling
mit einem einfachen editor , ich denke das soll alles rein:
- laden und speichern einer karte
- tiles setzten
- zwischen den tiles mit den nummern 1-9 wechseln
- irgentwie eine kollision
- startpunkt der figur


weitere sachen
- erster mal ohne gegner
- und restlichen power teile auch alle weg lassen

fehlt noch was ?
mit was sollte ich als erstes mit dem editor anfangen ?

Slayer

BeitragMi, Jan 14, 2004 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, hast Du schon ahnung vom Programmieren ?

Wenn nicht erstmal Grundlagen lernen, ein RPG ist ein ziemlich starker Tobak.

Ahnsonsten, einen Tile-editor/engine machen.


Hier mal ne anregung:

Code: [AUSKLAPPEN]
Graphics 640,480,16,2
;------------------------------------------------------1
SetBuffer BackBuffer()
;------------------------------------------------------2



While Not KeyHit(1)
;------------------------------------------------------3


For i_y = 0 To 10
;------------------------------------------------------4
   For i_x = 0 To 10
   ;------------------------------------------------------5
   
   
      Rect 0 + (i_x * 32),0 + (i_y * 32),32,32,0
      ;------------------------------------------------------6
      
         If MouseX() > 0 + (i_x * 32) And MouseX() < 0 + (i_x * 32)+32 And MouseY() > 0 + (i_y * 32) And MouseY() < 0 + (i_y * 32) + 32
         ;------------------------------------------------------   7
            Color 255,0,0
            ;------------------------------------------------------8
               Rect 0 + (i_x * 32),0 + (i_y * 32),32,32,1
               ;------------------------------------------------------9
            Color 255,255,255
            ;------------------------------------------------------10
         EndIf
         ;------------------------------------------------------11
         
   Next
   ;------------------------------------------------------12
Next
;------------------------------------------------------13




Flip:Cls
;------------------------------------------------------14
Wend:End
;------------------------------------------------------15




Edit: OOps, war zu langsam Smile
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version
 

nemo

BeitragMi, Jan 14, 2004 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
also etwas erfahrung habe ich schon

danke für den code werde ihn gleich mal ausprobieren ...


edit:
habe nun mal angeschaut, habe es auch soweit gecheckt
wie schafft man das nun das wenn man die linke maustaste drück ( mousehit(1) ) das auf dem feld dann ein roter kasten gezeichnet wird ?

edit 2:
so noch die größe angepasst und wechsel zwischen den farben rot (1) und blau (2)
Code: [AUSKLAPPEN]
Graphics 640,480,16,2
;------------------------------------------------------1
SetBuffer BackBuffer()
;------------------------------------------------------2

farbe = 1

While Not KeyHit(1)
;------------------------------------------------------3


For i_y = 0 To 14
;------------------------------------------------------4
   For i_x = 0 To 19
   ;------------------------------------------------------5
   
   
      Rect 0 + (i_x * 32),0 + (i_y * 32),32,32,0
      ;------------------------------------------------------6
       
         If MouseX() > 0 + (i_x * 32) And MouseX() < 0 + (i_x * 32)+32 And MouseY() > 0 + (i_y * 32) And MouseY() < 0 + (i_y * 32) + 32
         ;------------------------------------------------------   7
         If farbe = 1 Then Color 255,0,0
         If farbe = 2 Then Color 0,0,255
         If KeyHit(2) Then farbe = 1 ; taste 1
         If KeyHit(3) Then farbe = 2 ; taste 2
            ;------------------------------------------------------8
               Rect 0 + (i_x * 32),0 + (i_y * 32),32,32,1
               ;------------------------------------------------------9
            Color 255,255,255
            ;------------------------------------------------------10
         EndIf
         ;------------------------------------------------------11


         
   Next
   ;------------------------------------------------------12
Next
;------------------------------------------------------13




Flip:Cls
;------------------------------------------------------14
Wend:End
;------------------------------------------------------15
 

nemo

BeitragMi, Jan 14, 2004 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
so, habe nun mal an einen editorcode etwas umgeändert nun gibt es aber ein Problem und zwar wenn ich ein tile zeichne wir es ca 15 felder weiter link nochmal gezeichnet, am besten ist es wenn man es mal selber probiert ! hier der code :
Code: [AUSKLAPPEN]
;Auflösung und Buffer einstellen
Graphics 800,600,16,1
SetBuffer BackBuffer()

Global mapx = 19
Global mapy = 25

Global tilex = 32
Global tiley = 32

Global mx,my;maus possitionen
Global c=2;gibt an welches gelände gewählt ist
Global datei;Benötigt man beim Speichern. ERklährt sich weiter unten von selbst(Wissen wie man Speichert vorausgesetzt)

Dim grafik(4);Hier werden die Grafiken für Wasser,Wiese,Feuer,Sand gespeichert. Der RPG TutorialSChöpfer macht das anders, aber das ist fast genauso, nur das er alle Grafiken in einem BMP anstatt in 4 speichert.

For x=1 To 4;laden der Grafiken
grafik(x)=LoadImage("tile"+Str$(x)+".bmp")
Next

Dim map(mapx,mapy);die map

For y=0 To mapx-1
For x=0 To mapy-1
map(x,y)=1;Jedes Feld wird auf 1 gesetzt
Next
Next



;#########################################################################
;#################### HAUPTSCHLEIFE ######################################
;#########################################################################
Repeat
Cls

save()
load()


;mit den Tasten 1-4 wählt man eine Geländeart(Wasser,Wiese,...)
If KeyHit(2)Then c=1
If KeyHit(3)Then c=2
If KeyHit(4)Then c=3
If KeyHit(5)Then c=4

If MouseHit(2)Then;Wenn rechte Maustaste gedrückt wird, soll durchgescrollt werden
c=c+1;c wird um eins erhöht. Bewirkt das Durchschalten mit der Rechten Maustaste durch die Geländearten(wahlweise anstatt der Tasten 1-4)
If c=5 Then c=1;Wenn c=5 ist, muss es wider 1 sein, weil wir keine Geländeart 5 haben
End If
;zeigerkoordinaten
If MouseX()<mapx*tilex Then mx=MouseX()/tilex;Solange sich die maus in unserem 10*10 großen Feld befindet, ist mx,my=die Mausposition
If MouseY()<mapy*tiley Then my=MouseY()/tiley;es muss durch 30 dividiert werden, weil jedes unserer Felder nicht 1 sondern 30 Pixel groß ist.
;
If MouseDown(1) Then;wenn linke Maustaste gedrückt wird
map(mx,my)=c;Das Feld der map, an der sich die Maus befindet, wird auf die Zahl unserer ausgewählten Geländeart gesetzt. Auf der Stelle der Map befindet sich dann die Geländeart.
End If


For y=0 To mapx-1
For x=0 To mapy-1
DrawBlock grafik(map(x,y)),x*tilex,y*tiley;Die Karte wird gemalt. Und zwar die Grafik für die Nummer, die in dem Feld gespeichert ist(1 für Wasser,...). *30, weil die einzelnen Kacheln(Grafiken für die Geländeart) ja im Abstand von 30 Pixeln gemalt werdne sollen
Next
Next
;
;Eine Art Cursor wird gemalt. Der sieht aus, wie die ausgewählte Geländeart
DrawBlock grafik(c),mx*tilex,my*tiley

Color 255,0,0
Rect mx*tilex,my*tiley,tilex,tiley,0;Ein Rotes, lehres Rechteck wird um den Corsor gemalt

 
Flip
Until KeyHit(1)
End



;############## speichern ####################################################
Function save()
If KeyHit(31)Then
datei=WriteFile("map1.dat");Pfad
For y=0 To mapx-1
For x=0 To mapy-1
WriteLine datei,map(x,y);Für jedes Feld der Map wird die Zahl gespeichert, die wir dem Feld mit dem Editor übergeben haben. Wenn man die Karte dann laden möchte, muss man für jedes Feld eines Arreys diese Zahl laden(seht ihr in dem anderen Programm)
Next
Next
CloseFile datei
End If
End Function
;########## laden ########################################################
Function load()
If KeyHit(38)
datei=ReadFile("map1.dat")
For y=0 To mapx-1
For x=0 To mapy-1
map(x,y)=ReadLine(datei);jedes Feld bekommt die Zahl, die das Feld im abgespeicherten Arrey hat.
Next
Next
CloseFile datei
EndIf
End Function

die files gibt es hier
würde mich sehr freuen wenn mir da wer helfen könnte !

Slayer

BeitragDo, Jan 15, 2004 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab Dir die Fehler mal Markiert und ausgebessert Wink
(<<<<<<<<<<<<<< Fehler 1........)
Vergleich es mal mit Deinem Code oben, Du hast da Mapx und Mapy vertauscht.


Code: [AUSKLAPPEN]
;Auflösung und Buffer einstellen
Graphics 800,600,16,1
SetBuffer BackBuffer()

Global mapx = 19
Global mapy = 25

Global tilex = 32
Global tiley = 32

Global mx,my;maus possitionen
Global c=2;gibt an welches gelände gewählt ist
Global datei;Benötigt man beim Speichern. ERklährt sich weiter unten von selbst(Wissen wie man Speichert vorausgesetzt)

Dim grafik(4);Hier werden die Grafiken für Wasser,Wiese,Feuer,Sand gespeichert. Der RPG TutorialSChöpfer macht das anders, aber das ist fast genauso, nur das er alle Grafiken in einem BMP anstatt in 4 speichert.

For x=1 To 4;laden der Grafiken
grafik(x)=LoadImage("tile"+Str$(x)+".bmp")
Next

Dim map(mapx,mapy);die map

For y=0 To ( mapy-1) ;<<<<<<<<<<<<Fehler 1 (behoben)
For x=0 To (mapx-1) ;<<<<<<<<<<<<<Fehler 2 (behoben)
map(x,y)=1;Jedes Feld wird auf 1 gesetzt
Next
Next



;#########################################################################
;#################### HAUPTSCHLEIFE ######################################
;#########################################################################
Repeat
Cls

save()
load()


;mit den Tasten 1-4 wählt man eine Geländeart(Wasser,Wiese,...)
If KeyHit(2)Then c=1
If KeyHit(3)Then c=2
If KeyHit(4)Then c=3
If KeyHit(5)Then c=4

If MouseHit(2)Then;Wenn rechte Maustaste gedrückt wird, soll durchgescrollt werden
c=c+1;c wird um eins erhöht. Bewirkt das Durchschalten mit der Rechten Maustaste durch die Geländearten(wahlweise anstatt der Tasten 1-4)
If c=5 Then c=1;Wenn c=5 ist, muss es wider 1 sein, weil wir keine Geländeart 5 haben
End If
;zeigerkoordinaten
If MouseX()<mapx*tilex Then mx=MouseX()/tilex;Solange sich die maus in unserem 10*10 großen Feld befindet, ist mx,my=die Mausposition
If MouseY()<mapy*tiley Then my=MouseY()/tiley;es muss durch 30 dividiert werden, weil jedes unserer Felder nicht 1 sondern 30 Pixel groß ist.
;
If MouseDown(1) Then;wenn linke Maustaste gedrückt wird
map(mx,my)=c;Das Feld der map, an der sich die Maus befindet, wird auf die Zahl unserer ausgewählten Geländeart gesetzt. Auf der Stelle der Map befindet sich dann die Geländeart.
End If


For y=0 To mapy-1 ;<<<<<<<<<<<<Fehler 3 (behoben)
For x=0 To mapx-1 ;<<<<<<<<<<<<Fehler 4 (behoben)


DrawBlock grafik(map(x,y)),x*tilex,y*tiley;Die Karte wird gemalt. Und zwar die Grafik für die Nummer, die in dem Feld gespeichert ist(1 für Wasser,...). *30, weil die einzelnen Kacheln(Grafiken für die Geländeart) ja im Abstand von 30 Pixeln gemalt werdne sollen
Next
Next
;
;Eine Art Cursor wird gemalt. Der sieht aus, wie die ausgewählte Geländeart
DrawBlock grafik(c),mx*tilex,my*tiley

Color 255,0,0
Rect mx*tilex,my*tiley,tilex,tiley,0;Ein Rotes, lehres Rechteck wird um den Corsor gemalt

 
Flip
Until KeyHit(1)
End



;############## speichern ####################################################
Function save()
If KeyHit(31)Then
datei=WriteFile("map1.dat");Pfad
For y=0 To mapx-1
For x=0 To mapy-1
WriteLine datei,map(x,y);Für jedes Feld der Map wird die Zahl gespeichert, die wir dem Feld mit dem Editor übergeben haben. Wenn man die Karte dann laden möchte, muss man für jedes Feld eines Arreys diese Zahl laden(seht ihr in dem anderen Programm)
Next
Next
CloseFile datei
End If
End Function
;########## laden ########################################################
Function load()
If KeyHit(38)
datei=ReadFile("map1.dat")
For y=0 To mapx-1
For x=0 To mapy-1
map(x,y)=ReadLine(datei);jedes Feld bekommt die Zahl, die das Feld im abgespeicherten Arrey hat.
Next
Next
CloseFile datei
EndIf
End Function
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version
 

nemo

BeitragDo, Jan 15, 2004 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
danke euch *freu freu freu*, es geht nun !
wie macht man es denn das man mit der maus den startpunkt der spielfigur festlegt ?

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group