Slick2D map mit spieler mitlaufen lassen

Hallo zusammen,

ich programmiere ein 2D Game und verwende Slick2D.

Mein Problem:
Ich habe eine Map die sehr groß ist, weit größer als mein Monitor.
Nun habe ich das Problem, dass nur ein Teil der Map sichtbar ist.
Das heißt wenn der Spieler z.B. nach rechts bewegt wird sieht man ihn nicht mehr. Er verschwindet aus dem Bild.
Ich möchte nun, dass wenn der Spieler nach rechts bewegt wird die Map mitläuft.
Anbei ein Bild.

Wenn der Spieler das rote Rechteck verlässt, dann sieht man ihn nicht mehr.
Der sichtbare Teil der Map (rotes Rechteck) soll sich aber mit dem Spieler mitbewegen.

Gelbes Dreieck = Spieler.
Blau ist der Boden der Map.
Großes schwarzes Rechteck ist die Map

Wie kann ich das bei Slick machen?

Wie geht das bei Slick2D?

SG

Es sollte so wie eine Kamera funktionieren.
Also der Spieler immer im Focus sein.

SG

Davon ausgehend, dass du den Spieler bewegen kannst.

Kannst du auch andere Objekte bewegen?
Kannst du die Karte bewegen?

Kannst du feststellen wo auf der Karte sich der Spieler befindet?
Kannst du den Sichtbaren Bereich bestimmen?

Ich kenne mich mit Slick2D nicht aus. Aber vom theoretischen her würde ich das ganze einfach so angehen, dass Spieler und Kamera gleichzeitig auf der Horizontalen bewegt werden.

Also wenn du den Spieler auf der Karte um X-Pixel nach rechts bewegst, bewegst du auch die Kamera um X-Pixel nach rechts.

Du musst dann natürlich halt Start & Endwerte haben die nicht überschritten werden kann.

Würde bedeuten, dass der Spieler sich auf dem Monitor immer an der selben Stelle befindet.

Diesen Gedanken hatte ich heute auch schon, nur weiß ich leider nicht wie ich das bei Slick mache.
Das Problem ist, das ich ein Slick2D eigenes Fenster habe.
Dieses starte ich, indem ich ein Objekt vom GameContainer erzuege.
Ich muss mal heute in Eclipse nachschauen, welche Methoden ich anwenden kann.
Vielleicht ist ja schon was passendes dabei.

Danke!

SG

Du könntest mal das hier versuchen:

Ist zwar schon 5 Jahre alt, aber da das letzte Release von Slick2d anscheinend auch schon 3 Jahre her ist, könnte es (leider) noch aktuell sein.

Noch was: Slick2D schaut für mich tot aus (wie gesagt, das letzte Release das ich gefunden hab ist von 2015). Wenn du bei Java bleiben möchtest, dann gab es hier im Forum gute Meinungen zu libGDX. Wenn dein Spiel noch nicht weit fortgeschritten ist, würde es sich vllt auf libGDX umzusteigen.

du fragst so oft ‘wie geht xy in Slick2D’ als wenn es da nur einen magischen Button gäbe, was aber vielleicht oftmals nicht der Fall ist,

wenn eine Library nur dafür da ist, Linien einfach zu malen und Bilder einfach einzubinden, dann kümmert sie sich schlicht weder um deine Aufgabe noch um Inventar der Spielfigur oder Verbindung zum Wetter-Server,


in diesem Fall scheint es aber just genau so einen Button zu geben :wink: ,
nach 10 sec. Web ohne konkrete Suche gefunden…,
Hauptseite http://slick.ninjacave.com/
Link auf Wiki nur für grob abgedeckte Bereiche http://slick.ninjacave.com/wiki/index.php?title=Main_Page
darin Clipping http://slick.ninjacave.com/wiki/index.php?title=Clipping

wenn du davon bisher nichts gehört und einen ganz anderen Aufbau hast, dann wird dir das vielleicht nicht direkt helfen,
dann musst du erstmal alles entsprechend umstellen,

dann ist auch entschuldigt, dass du davon noch nicht gehört hast,
aber es wäre vorteilhaft, dich in 100 Stunden auch ein wenig mit allen angebotenen Grundlagen zu beschäftigen, statt entsprechendes von anderen ohne jede Erfahrung damit in Sekunden finden zu lassen :wink:

wenn du schon die Welt entsprechend nach Slick2D-Standard hast, dann ist die Lösung eigentlich naheliegend


wie immer ist meine Empfehlung, eine eigene logische Welt unabhängig von Tools aufzubauen,
wie kommt es, dass die linke obere Ecke von deiner Karte zu sehen ist?
da muss es doch einen Programmaufbau für geben,

einfach nur statt diesen Bereich einen anderen zeichen,
welchen genau aus aktueller Position der Figur zu bestimmen,

wenn du bisher gar nicht an ‘Zeichnen von Bereichen’ denkst, sondern schlicht alles malst, aber nur ein Teil zu sehen ist,
tja, dann ist erstmal in der Hinsicht zu arbeiten,

wie malt man einen bestimmten Teil der Karte usw.?,
Karten-Koordinaten in Position in Darstellung umrechnen usw.,

viel zu tun, aber eigentlich alles Schritte die anzugehen sind, was soll man dazu bereden?
ein anderer kann die komplizierte Logik des Programmierens für dich kaum übernehmen,
außer eben dann doch fertige Tools wie Slick2D, in der Tat :wink:

da mag just entsprechendes fertig angeboten sein, aber wie damit korrekt umzugehen, das muss man freilich auch wissen,

solch riesige Themen a la praktisch ‘wie baue ich meine ganze Karte komplett korrekt mit dem Tool und verwende alles richtig?’, das kann ja nicht in einem Forum-Thread besprochen werden,

lese Tutorials, Beispiele,
einzelne kleine konkrete Probleme kann man nachfragen, aber so groß ausgeholt…,
das klingt immer Richtung komplette Begleitung deiner Arbeit, dafür braucht es eine Vollzeitkraft für viel Geld

SlaterB warum spielst Du dich immer so auf.
Spar dir das bitte.

Ich habe sehr wohl gegoogelt auch wenn Du es nicht glauben kannst.
Leider waren die gefundenen Lösungsansätze immer so, dass nur der Hintergrund um den Spieler bewegt wird.
Diese Ansatz funktioniert bei mir leider nicht.
Von Clipping habe ich noch nie was gehört und da ich auch nicht nach diesem Begriff gegoogelt habe, habe ich dazu auch nichts gefunden. Jetzt weiß ich wieder etwas mehr dank dem Forum hier.
Also hat sich der Post schon wieder ausgezahlt, da ich mich jetzt in dieses Thema mit Hilfe des Internets einarbeiten kann.

Ich habe diesen Post eröffnet da ich der Meinung bin, das hier Leute sind die dasselbe Problem vielleicht schon mal hatten und für mich einen kleinen Tipp hätten wie man dies angehen könnte.

Wie schon sehr oft erwähnt: “Wer nicht fragt bleibt dumm”.
Wenn man hier bei den Profis nicht nachfragen kann, wo sonst?

Leider sind auch viele Beschreibungen im Internet sehr unverständlich geschrieben.
Wenn man sich neu in ein Thema einarbeitet, dann tut man sich sehr schwer das nachzuvollziehen was in der Beschreibung erklärt wird. Wenn man das Thema schon mal behandelt hat, dann geht das.
Wenn alle Unterlagen so verständlich wären, dann bräuchten wir keine Lehrer mehr und auch keine Schulen.

Aber egal, dein Tipp hat mir sehr geholfen und nun kann ich mich in diese Thematik einarbeiten und wieder was dazu lernen.

PS: libGDX habe ich auch schon entdeckt, doch leider bin ich mit dem Spiel schon sehr weit und möchte die aktuelle Programmierung beibehalten, da hier schon sehr viel Arbeit drinnen steckt. Weiters kenne ich mich schon etwas mit Slick2D aus und habe doch schon einiges damit in meinem Spiel gemacht.
Bei libGDX muss ich wieder komplett neu anfangen und mich einarbeiten.

Vielen danke für eure Hilfe und den Tipp von SlaterB!

Man hört sich wieder.

SG

Um da mal entweder zu vermitteln oder mit zwei Feinde zu machen: Der belehrende Ton und die Zurechtweisungen mögen “lästig” sein - aber unbegründet sind sie nicht. Deine Frage ist sehr vage. Ohne eigenen Code kann man kaum mehr machen, als Links zu posten. Die können dann hilfreich sein, weil man vorher den passenden Suchbegriff (etwa “clipping”) nicht kannte. Aber es könnte auch sein, dass sie “sehr unverständlich geschrieben” sind. Schon zu sagen, was du dir schon durchgelesen hast, könnte helfen…