[B2D] Scrolling über Internet

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ToeB

Betreff: [B2D] Scrolling über Internet

BeitragSa, März 15, 2008 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bei meinem NetGame (2D) gibt es eine große Map, auf der man sich nur durch Scrolling fortbewegen kann. Dass heißt, dass der Player immer an der Mitte der Bildschirmes gezeichnet wird. Nur die Map wird bewegt. 2 Fragen :

1.: Kann ich das auch anders lösen, dass nur die Playerposition geändert wird und dann ScrollX/Y dran angepasst werden oder muss ich dass so machen ?

2.: Wie finde ich bei der version wo der Player inner mitte gezeichnet wird die aktuelle Position auf der Map raus ?

thx und mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, März 15, 2008 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Mapposition ist - wenn nicht anders deffiniert - immer die negative Playerposition. Beispiel: Player bewegt sich nach recht um 100 Pixel, so muss die Map um 100 Pixel nach links verschoben werden, damit der Player in der Mitte des Bildschirmes sich befindet. Ergo ist die Mapposition - bei der einfachsten Scrollart - ein Spiegel der Playerposition und muss keiner Extrabehandlung aufweisen. Man kann aber natürlich die Mapposition auf unterschiedliche Arten umrechnen. Dazu habe ich hier mal drei uralte Beispiele raus gekramt.

Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()

xp%=100
yp%=100


;Hauptschleife
While Not KeyHit(1)

 ;Tastaturabfrage
 If KeyDown(203) xp=xp-1
 If KeyDown(205) xp=xp+1
 If KeyDown(200) yp=yp-1
 If KeyDown(208) yp=yp+1

 ;Hintergrund
 Color 120,120,120
 For q=0 To 400 Step 20
  Rect 0,q-yp Mod 20,400,1
  Rect q-xp Mod 20,0,1,400
 Next

 ;Spieler
 Color 240,240,240
 Rect 198,198,4,4,1

 Flip
 Cls
Wend
End


Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()

xp%=200
yp%=200
xm%=0
ym%=0


;Hauptschleife
While Not KeyHit(1)

 ;Tastaturabfrage
 If KeyDown(203) xp=xp-1:If xp<100 Then xp=100:xm=xm-1
 If KeyDown(205) xp=xp+1:If xp>300 Then xp=300:xm=xm+1
 If KeyDown(200) yp=yp-1:If yp<100 Then yp=100:ym=ym-1
 If KeyDown(208) yp=yp+1:If yp>300 Then yp=300:ym=ym+1

 ;Hintergrund
 Color 120,120,120
 For q=0 To 400 Step 20
  Rect 0,q-ym Mod 20,400,1
  Rect q-xm Mod 20,0,1,400
 Next

 ;Spieler
 Color 240,240,240
 Rect xp,yp,4,4,1

 Flip
 Cls
Wend
End


Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()

xp#=0
yp#=0
xm#=0
ym#=0


;Hauptschleife
While Not KeyHit(1)

 ;Tastaturabfrage
 If KeyDown(203) xp=xp-2
 If KeyDown(205) xp=xp+2
 If KeyDown(200) yp=yp-2
 If KeyDown(208) yp=yp+2

 If Not KeyDown(57)
  xm=xm-(xm-xp)/50
  ym=ym-(ym-yp)/50
 End If

 ;Hintergrund
 Color 120,120,120
 For q=0 To 400 Step 20
  Rect 0,q-ym Mod 20,400,1
  Rect q-xm Mod 20,0,1,400
 Next

 ;Spieler
 Color 240,240,240
 Rect 198+xp-xm,198+yp-ym,4,4,1

 Flip
 Cls
Wend
End


1. Beispiel ist am einfachsten, aber auch am ''anstrengensten'' für den Spieler.

2. Beispiel ist für langsame Spiele wie einem RPG ganz gut, für schnelle aber nicht geeignet.

3. Beispiel ist recht angenehm, aber auch wieder nicht für schnelle Spielarten geeignet.

Es gibt sicherlich noch weitere Scrollarten auf die ich nicht weiter eingegangen bin.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ToeB

BeitragSa, März 15, 2008 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, kk danke !

Aber ich wollt jetzt dein erstes Beispiel nehmen... Wie finde ich jetzt heraus, wo sich der Spieler auf der Karte befindet ? (Ich will das ja verschiken, und wenn ich X:400/Y:300 verschike, dann passt das ja net mehr Wink )

mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

The_Nici

BeitragSa, März 15, 2008 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
verschicke die Scrollvariable und zeichne dann den Gegenüberspieler am Punkt xscrollingp1-xscrollingp2 und das gleiche mit y. Sollte es einen Wert ausserhalb des Bildschirmrandes geben so solltest du ihn garnicht erst zeichnen.

MfG

ToeB

BeitragSa, März 15, 2008 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Also danke schonmal, nur kann ich leider nicht viel damit anfangen... Was ist den p1 und was ist p2 ? (xscrollingp1...) ???

Mein Test Code: [AUSKLAPPEN]
Graphics 800,600,16,1
SetBuffer BackBuffer()

Global x,y
SetPos(0,0)
Repeat
If KeyDown(200) Then y = y - 2
If KeyDown(208) Then y = y + 2
If KeyDown(203) Then x = x - 2
If KeyDown(205) Then x = x + 2
For xx = 0 To 100
For yy = 0 To 100
Color 100,100,100:Rect xx*20-x,yy*20-y,20,20,1
Color 255,255,255:Rect xx*20-x,yy*20-y,20,20,0
Next
Next
Color 255,255,0:Oval 400-7.5,300-7.5,15,15
Color 255,0,0 Oval XPos(x)-7.5,yPos(y)-7.5,15,15,0
Text 1,1 ,"   Scroll X/Y : "+x+"/"+y
Text 1,20,"PosPlayer X/Y : "+XPos(x)+"/"+yPos(y)
Flip
Cls
Until KeyHit(1)
End

Function SetPos(NewX,NewY)
x = NewX-400
y = NewY-300
End Function

Function XPos(ScrollX)
Return -(ScrollX+400)
End Function 
 
Function YPos(ScrollY)
Return -(ScrollY+300)
End Function   


(Wobei in die Functionen XPos/YPos den Wert auf der Karte wiedergeben möchte...)

thx + mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, März 15, 2008 14:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Verschicke die Playerposition und rechne an der Gegenstelle diese zu der negativen Mapposition um. Wenn du eine pixelgenaue Steuerung hast, sind es eben die Pixel. Wenn du eine tilebasierte Steuerung hast, musst du dieses eben noch umrechnen. Ansonsten verstehe ich das Problem nicht. Eventuell verschickst du etwas falsches oder interpretierst die ankommenden Daten falsch um.

Vielleicht meinst du aber auch, wie der Gegner an einer Bildschirmposition positioniert sein muss. Das wäre dann:


- Dein SpielerX = 0
- Deine [i]MapX = -SpielerX

- Dein Bildschirm aber SichtbareGegnerpositionX = GegnerSpielerX-MapX

Zu allen Angaben fehlt noch ein X/Y -Offset, entspricht den Abstand von links/oben zur Bildschirmmitte
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ToeB

BeitragSa, März 15, 2008 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Komisch... Wenn ich jetzt schreibe :
Code: [AUSKLAPPEN]
ScrollX = x(ID)
ScrollY = y(ID)


und dann :
Code: [AUSKLAPPEN]
   For xx = 0 To 20
      For yy = 0 To 20
         Rect xx*50-ScrollX,yy*50-ScrollY,50,50,0
      Next
   Next


Dann ist der Spieler immer schneller als die Map... Ich chek gar nichts mehr....

mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, März 15, 2008 15:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmmmmm, also so, kann ich grad nicht viel sagen, da ich die Vermutung habe, dass wir eventuell etwas aneinander vorbei reden. Zuerst müsste ich wissen, was genau du vor hast. Wozu ScrollX = x(ID) gut ist. Und eventuell solltest du die den Aufbau einer Tilemap genauer anschauen, denn For xx = 0 To 20 scheint mir etwas suspeckt. Man sollte immer nur so viele Tiles anzeigen, wie man sehen kann und nicht immer die ganze Map zeichnen.

Also:

- Wieviele Spieler können miteinander übers Netzwerk spielen?

- Wie groß sind die Maps in Anzahl Tiles?

- Ist die Playerbewegung Pixelweise fein, oder komplett Tileweise?

- Soll immer nur der eigene Spieler zur Biildschirmmitte gescrollt werden?
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ToeB

BeitragSa, März 15, 2008 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, ich hab ein bissel rumprobiert, hab mir zwei Function geschrieben und es Klappt alles (Die Spieler werden Pixelgenau auf der anderen Seite gezeichnet !)

Abner trotzdem danke an euch !

mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

ToeB

BeitragSa, März 15, 2008 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab eine Neue Frage, ich wollte deswegen keinen neuen Threat eröffnen, deshalb Doppelpost....

Zur Frage :

Ich hab jetzt alles soweit fertig (bis auf Maps und so ich mein die Übertragungen...), jetzt kommt das Abschießen drann.

Ich hatte mir das so vorgestellt, dass der HOST entscheidet, ob einer getroffen wurde oder nicht. Das Functioniert auch alles wunderbar, nur wie bringe ich den Spielern bei, welche Schüsse gelöscht werden müssen (= getroffen haben) (wichtig : es könne ja mehrere Schüsse Treffen !)????

thx und mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group