JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Scrolling

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


Alter: 36
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 07.08.2004, 16:54    Titel: Scrolling Antworten mit Zitat

Hallo!

Hat jemand ein gutes tutorial zum Thema Scrolling? Also wie man das in der theorie macht. Ich meine natürlich mit Tiles , wie in RPG's. Ich möchte es mal mit meinem selber gemachten Scrolling vergleichen und schauen ob es auch besser und Performancesparender geht.

THX
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 07.08.2004, 17:04    Titel: Antworten mit Zitat

Tjo... tät mich auch mal interessieren...

Ich mach das kurz gesagt immer so:
- Tilemap oben/unten/rechts/links mit jeweils einer Spalte/Zeile Tiles zuviel zeichnen, so das diese praktisch über den Bildschirmrand hinausragen...
- wenn gescrollt wird das alles pixelweise verschieben
- wenn um soviele Pixel gescrollt wurde, wie ein Teil breit/hoch ist, werden die Tiles neu in das 2-dim. Vector/Array kopiert bzw. verschoben...

kA ob das jetzt irgendwie hilfreich war, ich schätze mal eher nicht, da das die einzige mir bekannte Methode ist ein pixelweises Scrollen in einer Tileengine zu realiseren und so schwierig ist die Umsetzung ja nicht.

Also wenn jemand noch eine andere, effektivere Möglichkeit kennt, bzw. mit Code Snippets dienen kann, nur zu! Interessiert mich wie gesagt auch!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 07.08.2004, 17:12    Titel: Antworten mit Zitat

Was gibt es da groß an Performace zu optimieren?
Man macht das doch einfach so:

Draw_with Scrolling(...)
{
Draw(global_Scrolling.x,global_Scrolling.y,...);
}

Man verschiebt einfach nur alle Objekte um die gescrollte x- und y-Position?

und dann blittet man? Confused Confused so mach ich das auf jeden Fall immer...
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 07.08.2004, 17:14    Titel: Antworten mit Zitat

TheMillenium hat Folgendes geschrieben:
Was gibt es da groß an Performace zu optimieren?
Man macht das doch einfach so:

Draw_with Scrolling(...)
{
Draw(global_Scrolling.x,global_Scrolling.y,...);
}

Man verschiebt einfach nur alle Objekte um die gescrollte x- und y-Position?

und dann blittet man? Confused Confused so mach ich das auf jeden Fall immer...


der meinung bin ich auch, auch wenn vorher nur die sichtbaren Bereiche gesammelt werden suche und diese dann bearbeite.

Was ist mit pixelweisen verschieben gemeint ? Nur die Tileposition ?
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 07.08.2004, 17:15    Titel: Antworten mit Zitat

Versteh ich nicht 100 pro...

Mal angenommen du hast eine 100x100 Tiles große Map, auf den Screen passen immer 10x10, dann zeichnest du doch logischerweise nicht immer alle 10.000 sondern nur die 100 die man wirklich sieht...

Edit:

Zitat:
Was ist mit pixelweisen verschieben gemeint ? Nur die Tileposition ?


Jo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 07.08.2004, 17:18    Titel: Antworten mit Zitat

GreveN hat Folgendes geschrieben:
Versteh ich nicht 100 pro...

Mal angenommen du hast eine 100x100 Tiles große Map, auf den Screen passen immer 10x10, dann zeichnest du doch logischerweise nicht immer alle 10.000 sondern nur die 100 die man wirklich sieht...

Edit:

Zitat:
Was ist mit pixelweisen verschieben gemeint ? Nur die Tileposition ?


Jo


Ich glaube TheMillenium macht seine Sichtbarkeitstests in der Draw Funktion.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 07.08.2004, 17:19    Titel: Antworten mit Zitat

wenn man schönes View Scrolling also als Animation machen will und man ist mit dem Ergebnis nicht so zufrieden dann geht das noch so:
Einfach ne Surface anlegen, die etwas größer als der Screen ist, den Speicher kann man sich schon leisten wenn man nen Backbuffer hat, ist meine Meinung, dann blittet man alles aus dem View Bereich dadrauf und dann mit der RectDraw Funktion auf die eigene Surface...ist schneller als Pixelweise...und mir kommts eher auf die Performance an, als Speicher den wir eh schon zu genüge vorhanden haben! Very Happy
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 07.08.2004, 17:22    Titel: Antworten mit Zitat

Dann musste aber jedesmal wenn ein neues Tile theoretisch auf dein Surface erscheinen muss as Surface locken und neu alles drauf rendern. Es sei denn du wählst dein Surface so gross das genügend Spielraum für weitere Tiles out of bound vorhanden sind.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beni5
Super JLI'ler


Alter: 36
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 07.08.2004, 18:03    Titel: Antworten mit Zitat

Naja, indemfall mach ich das schon richtig. Ich zeichne alles direkt in den BackBuffer. Ich mach auch immer ein Tile am Rand dazu. Wenn man sich bewegt werden die Tiles am Rand immer extra angepasst damit sie dargestellt werden können, da ich auch Surfaces benutze. Nur ist das Problem bei mir das manchmal unerklärbare Fehler auftreten, und zwar verschieben sich alle Tiles plötzlich um eine Position, oder Das erste Tile blinkt (wird mal angezeigt und mal nicht). Diese Probleme treten aber nicht bei den Surface Tiles auf sondern nur beim 2. Layer den ich mit Sprites mache, aber ich benutze die gleichen x,y Werte wie bei den Surfaces. Confused
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 07.08.2004, 20:09    Titel: Antworten mit Zitat

Ich wundere mich auch gerade, wieso ihr das so umständlich macht Shocked
Ich habe dafür zwei Variablen:
Code:
int scrollx;
int scrolly;

Dann gibts ein paar Funktionen, die die Screenkoordinaten in Weltkoordinaten umrechnet und umgekehrt.
Code:
//Screen->Welt
int worldx=screenx+scrollx;
int worldy=screeny+scrolly;
//Welt->Screen
int screenx=worldx-scrollx;
int screeny=worldy-scrolly;

Jetzt rechne ich einfach in der Renderfunktion aus, welcher Bereich sichtbar ist (ScreenToWorld(0,0) bis ScreenToWorld(Auflösungx,Auflösungy)) und zeichne die Tiles an die Position WorldToScreen(tilex,tiley).
_________________
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
Beni5
Super JLI'ler


Alter: 36
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 07.08.2004, 21:06    Titel: Antworten mit Zitat

*gnarr* *gnaarrrr* Ich hab überhaupt nichts Falsch gemacht. Aber ich habe beim FUnktionsaufruf die Tastenabfrage zwischen den vershciedenen Layern gemacht also so:

Layer1();
Input();
Layer2();

Das heisst die Koordinaten stimmen nicht mehr 100% prozent überein da DInput ja sehr schnell ist. Und ich habe erst garnicht dort nachgeschaut und immer probiert die Renderfunktion zu entbuggen... Smile

PS: Danke für die Hilfe!
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 -> DirectX, OpenGL 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