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

nemoBetreff: Mit was bei einem map Editor für RPG anfangen ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() mfg, nemo |
||
René Meyer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version |
nemo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab Dir die Fehler mal Markiert und ausgebessert ![]() (<<<<<<<<<<<<<< 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke euch *freu freu freu*, es geht nun !
wie macht man es denn das man mit der maus den startpunkt der spielfigur festlegt ? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group