Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

1

20.04.2007, 16:37

Shooter Frage: Wie nmacht man den Scrollenden hintergrund ei

Hallo Leute!! Schon lang nicht mehr hier^^
Also ich will jetzt endlich mal ein spiel machen, was ich dann auchg veröffentliche, nach all den test progs...
Ich versuchs der einfachheit halber mal mit einem spaceshooter, doch hier versteh ich nicht so recht, wie der hintergrund gemacht wird und wie man das macht dass der dauernd scrollt... ist bestimmt saueinfach aber ich bin zu blöd^^

also ich geh davon aus, dass man 1 riesige textur mit der breite des bildschirms macht (wenns nach oben scrollt, sonst müsste die tex wohl die höhe des screens haben)
und die l#änge ist dann halt etwas viel länger, und die lässt man dann einfach im hintergrund mit der zeit vorbeiscrollen oder wie ?

thx & mfg!!
Gratis Tools+Software und Games:

www.miraculous.eu.tc

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

2

20.04.2007, 17:38

jo... also im Grunde sind deine Gedanken schonmal richtig - wenn du nach oben scrollst, muss es natürlich auf der y-achse entlanglaufen. Es sollte also bildschirmbreit sein,wie du gesagt hast.
das bild allerdings tausende pixel entlang der y-Achse zu strecken, ist aber etwas schlecht - erstens ungeheurer speicher- und rechenaufwand, und zweitens sehr unpraktisch, da es ja irgendwann trotzdem zu ende wäre

Eigentlich ist es wirklich einfach - wenn du deine Grafik hast, meinetwegen 1024 * 768 pixel, würde es doch reichen, die position immer der spielerposition anzupassen - will heißen, alle 768 pixel müsste die grafik sozuagen wieder nach oben gesetzt werden.

dann müsstest du die grafik halt pro durchgang immer zweimal rendern lassen, damit der ganze bildschirmabgedeckt ist, oder du nimmstgleich eine grafik die doppelt so hoch ist wie der bildschirm.

ich hab das problem mal folgendermaßen gelöst (vom prinzip her, für eine Grafik die 1536 pixel hoch ist):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void CGame::UpdateBG()
{
    int st = 0;
    int i=static_cast<int>(MToPix(m_pPlayer->m_fYPos)); // Spielerposition in i speichern 

    while(st == 0)
    {
        if(checkDivide(i,768) == true) // mit checkDivide wird geprüft, ob die Zahl i durch 768 teilbar ist oder nicht

            st = 1;
        i++;    
    }
    
    m_fBGPos = i-static_cast<int>(MToPix(m_pPlayer->m_fYPos))-768; // die neue y-koordinate für den BG wird berechnet durch: die nächste Position nach der Spielerposition, welche durch 768 zeilbar ist, davon die aktuelle Spielerposition sowie die Bildhöhe abgezogen


    m_pSpriteBackground->SetPos(0,m_fBGPos);
}

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

3

20.04.2007, 17:53

thx^^

aber:
das lässt sich wohl nur anwenden wenn der hintergrund die ganze zeit haargenau gleich aussieht oder? also zB schwarz und vllt. ein paar weisse punkte die sterne darstellen.
wenn der BG +-1500 hoch ist dann sieht man ja immer übergänge wenn die nächste textur geladen wird falls er nicht die ganze zeit gleich aussieht

also kann man keine oder höchstens sehr schwer andere strukturen, wie zB kanäle oder so , planeten & co einfügen oder nichT?

thx & mfg!!
Gratis Tools+Software und Games:

www.miraculous.eu.tc

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

4

20.04.2007, 19:02

ja da hast du recht, du müsstest die textur dann nämlich aus einer textur erstellen, die einem viertel der endtextur entspricht und dann aus gespiegelten teilen zusammensetzen, damit man die übergänge nicht sieht

wenn noch verschiedene dinge herumfliegen sollen (soll man da auch gegen fliegen können/abschießebn?) dann müsstest du vielleicht zu einem einfachen weltraumhintergrund noch eine list mit den ganzen objekten extra machen
- diese könnten ja immer wieder gelöscht werden, wenn sie aus dem sichtfeld raus sind, und weiter vorne werden durch zufall neue erzeugt

denjo

Treue Seele

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

5

20.04.2007, 19:08

hi, ich gebe dir hier mal einen Link zu einem Tutorial.
In diesem Tutorial geht es auch um einen Spaceshooter mit scrollendem Hintergrund...ist zwar auf Englisch, aber für meine Begriffe gut verständlich! :)

http://www.robsite.de/daten/tutorials/GFXwithSDLPart6.pdf

Ich hoffe, dass es dir weiterhelfen wird!

mfg denjo
"Irren ist menschlich, Vergeben göttlich."
- Alexander Pope -

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

6

20.04.2007, 19:32

thx ^^ hat alles so gut wie aufgeklärt :lol:
wollte auch sdl benutzen, aber wie "installiert" man das? hab in keinem tutorial rausgefunden wie...

thx & mfg!!! :)
Gratis Tools+Software und Games:

www.miraculous.eu.tc

denjo

Treue Seele

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

7

20.04.2007, 19:38

Zitat von »"JossBoss"«

wollte auch sdl benutzen, aber wie "installiert" man das? hab in keinem tutorial rausgefunden wie...


was meinst du mit installieren? Die Zusatzlibs?
"Irren ist menschlich, Vergeben göttlich."
- Alexander Pope -

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

8

20.04.2007, 19:48

also wenn ich SDL 1.2 DevelopmentLibraries runtergeladen habe , muss ich die ja noch in den compiler einbiunden irgendwie...
header muss man halt einfach über extras ->optionen ->verzeichnis hinzufügen (etwas gekürzt) ;)
aber was muss manb mit den libs machen? würd sagen auch so durch die verzeichnisse einbinden aber halt in bibliotheksdateien
auf http://www.resourcecode.de/view.php?id=693 steht das aber nicht sondern etwas anderes, versteh aber echt nicht was der da will... (hab vc++ 2003 .net)

fürs projekt muss man ja eine leere konsolenanwendung starten oder?

thx & mfg!!!
Gratis Tools+Software und Games:

www.miraculous.eu.tc

denjo

Treue Seele

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

9

20.04.2007, 19:51

Zitat von »"JossBoss"«

aber was muss manb mit den libs machen? würd sagen auch so durch die verzeichnisse einbinden aber halt in bibliotheksdateien
auf http://www.resourcecode.de/view.php?id=693 steht das aber nicht sondern etwas anderes, versteh aber echt nicht was der da will...


Ja, die Libs musst du eigendlich unter Verzeichnisse -> Bibliotheksdateien einbinden.
"Irren ist menschlich, Vergeben göttlich."
- Alexander Pope -

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

10

20.04.2007, 19:57

mmh hab ich gemacht aber dann krieg ich immer die meldung

SDL error LNK2019: Nicht aufgelöstes externes Symbol '_main', verwiesen in Funktion '_mainCRTStartup'

wenn ich #include "SDL.h" mach...

kann es sein dass wenn man einen dual core prozessor hat die ganzen teile nicht mehr so richtig laufen?

thx & mfg!!!
Gratis Tools+Software und Games:

www.miraculous.eu.tc

Werbeanzeige