JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=047b72bf4567e7d0df630c01182f006dMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Scrolling-Theorien

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 01.08.2003, 12:03    Titel: Scrolling-Theorien Antworten mit Zitat

Ich mach grad ein Autorennen aus Vogelpersp., bei dem das Auto immer im Mittelpunkt steht und der Hintergrund immer gescrollt wird. Nachdem ich jetzt schon ewig versuche, aus meinem Hintergrund(sysmem) eine Zeile und Spalte rauszukopieren, und auf einem Buffer und dem Backbuffer richtig wieder zusammenzusetzen, und es immer noch nicht richtig funkt, hab ich mir gedacht, dass ich es jetzt vorerst einfacher mache.
Ich will mir meinen ganzen Hintergrund im AGP-Speicher anlegen und dann einfach immer das ganze nächste Bild rauskopieren. Der Auschnitt, der kopiert wird, ist dann etwa 500x300.
Bevor ich das jetzt so mache, wollte ich wissen, ob das von der Performance her noch vertretbar ist. Dass es keine optimale Lösung ist, ist mir klar.

-chewie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 01.08.2003, 12:20    Titel: Antworten mit Zitat

500x300x32 Bit (?) ist nicht so wenig. Aber für einen ersten Test, kannst du es ruhig so machen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 02.08.2003, 21:07    Titel: Antworten mit Zitat

Hi, bin jetzt auf folgendes Problem gestossen:
Ich rechne mir den Stepx und Stepy in jedem Durchgang aus und berechne daraus dann den neuen Auschnitt...sieht dann ca. so aus:
Code:

StepX = cos(TempRot) * m_CurSpeed / Framerate;
StepY = (sin(TempRot) * m_CurSpeed / Framerate)*(-1);

// nächstes Bild
m_CurScreen.left += StepX;
m_CurScreen.top += StepY;
m_CurScreen.right += StepX;
m_CurScreen.bottom   += StepYy;


wenn das Auto jetzt langsam fährt, und man noch eine hohe Framerate hat, dann ist z.b. y oft kleiner als 0.5, wodurch gar nicht gescrollt wird, obwohl das Auto schon eine Rotation von 30 Grad hat.
Hab mir dann gedacht, ich zähl die Steps jeden Durchlauf rauf und setze Sie auf 0 zurück, wenn >1. Das funkt aber auch nicht gut...
Habt ihr da Ideen?

-chewie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mr. Data
Mini JLI'ler



Anmeldedatum: 16.09.2002
Beiträge: 39

Medaillen: Keine

BeitragVerfasst am: 02.08.2003, 21:48    Titel: Antworten mit Zitat

Der Vorschlag den ich jetzt mache ist mit Sicherheit nicht der beste
aber ne Möglichkeit.

Fang doch erst an zu scrollen wenn der Wagen ne bestimmte Geschwindigkeit erreicht hat bzw. überschreitet.

Vielleicht geht´s so
_________________
nothing is inmpossible
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 02.08.2003, 21:56    Titel: Antworten mit Zitat

Wenn du das Auto immer in der Mitte haben willst, dann kannst du doch einfach von den Koordinaten das Autos die Hälfte der Auflösung abziehen.
D.h. Das Auto wird sowieso in die Mitte gezeichnet(Bildschirmgröße durch 2)
Und jetzt hast du ja die Koordinaten des Autos in Relation zum Hintergrund. Wenn du nun von diesen Koordinaten die Hälfte der Bildschirmgröße abziehst, hast du den Punkt, der links oben bei 0/0 gezeichnet werden soll.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 02.08.2003, 22:23    Titel: Antworten mit Zitat

@Mr.Data
Die Sache ist, das Problem besteht bis zu ziemlich grossen Geschwindigkeiten...wenn
s=100 (also 100px/sec)
r=0
dann krieg ich bei 85 Frames 1,1 als StepX....und das ist bei gerader Bewegung auf x....wenn dann eine Rotation dazukommt wirds eben <1, d.h er scrollt nicht mehr...

@Lord
ich bin mir nicht sicher ob das richtig verstanden hab, aber ich glaube so hätte ich das gleiche Problem Confused
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 02.08.2003, 23:56    Titel: Antworten mit Zitat

@Chewie: Wenn du es so machst wie Lord, dann nicht... und warum scrollt er nicht mehr? Nimm doch für's berechnen floats und erst wenn du Blitten musst, castest du die Koordinaten zu Integer.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 03.08.2003, 13:11    Titel: Antworten mit Zitat

Chewie hat Folgendes geschrieben:

@Lord
ich bin mir nicht sicher ob das richtig verstanden hab, aber ich glaube so hätte ich das gleiche Problem Confused

Nein, da hättest du, wie Hazel schon richtig sagt, nicht das Problem.
Ich erläutere es nochmal:
Wenn du z.B. eine Auflösung von 800*600 hast, dann ist der Bildschirm auch 800 Pixel breit und 600 P. hoch. Für die größe des Sprites nehmen wir mal 100*100 Pixel.
Wenn du nun das Auto immer in die Mitte des Bildschirms zeichnen willst, dann zeichnest du es einfach an die Stelle X=(800/2-100/2)=350 | Y=(600/2-100/2)=250
Dann hast du die Koordinaten des Autos(XAuto und YAuto). Die linke obere Ecke des Terrains hat nun 0|0. Angenommen, du hast jetzt das Auto an der Stelle 1000|1200, dann müsstest du jetzt an die Stelle 0|0 des Bildschirms ab der folgenden Stelle des Terrains zeichnen: X=(XAuto-800/2)=600 | Y=(YAuto-600/2)=900.
Jetzt zeichnest du als Hintergrund an 0|0 das Rect (X=600|Y=900|Breite=800|Höhe=600) aus dem Terrain
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 03.08.2003, 15:40    Titel: Antworten mit Zitat

Yo, danke Lord...jetzt hab ichs kapiert und jetzt funkts auch einwandfrei...gute Idee das so herum anzugehen Exclamation (wieso gibts hier keinen thumbs-up smily??)

@Hazel
wenn du fragst, warum er bei meiner Methode nicht scrollt: selbst mit floats geht es nicht, wenn du dir die Steps in jedem Durchlauf ausrechnest, weil z.B:
stepx = cos(20*pi/180) * 100 / 85
stepx = 0.41

wenn ich jetzt auf long caste, krieg ich 0 raus, ergo: er scrollt nicht!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum