[B2D] Scrolling über Internet
Übersicht

![]() |
ToeBBetreff: [B2D] Scrolling über Internet |
![]() Antworten mit Zitat ![]() |
---|---|---|
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! |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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! |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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! |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group