• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Einfaches Scroll & Click Game

SchRobert

New member
Hallo,

ich wurde von einem Freund gefragt ob ich ihm bei einem kleinen Browser-Game helfen kann. Ich hab das mal gleich als Begründung genommen tiefer in JavaScript einzusteigen :)

Meine Problemstellung ist folgende:

Gegeben ist ein übergroßen Bild (2000..3000px breit, 1000..2000px hoch - vielleicht auch größer, er zeichnet noch daran) das als Tile entworfen wurde so dass es lückenlos horizontal und vertikal gestapelt werden kann.

Der Sieht von diesem Bild immer nur einen Ausschnitt kann aber horizontal und vertikal endlos herum scrollen (also nicht via scrollbars sondern via mouse-drag bzw. touch-move)

Dann bekommt er die Aufgabe Dinge darin zu suchen und markieren. Also anzuklicken, und die werden dann irgendwie hervorgehoben.

Das ganze soll sowohl am PC als auch auf Tablets oder Smartphones spielbar sein.

So. Mit dieser Aufgabe hab ich mir mal das JavaScript Referenzhandbuch vorgenommen viell gelesen und mich dann versucht das als am Client laufende JavaScript App umzusetzen.Dabei versuche ich noch so wenig wie möglich externe Libs zu verwenden - damit auch klar ist was das ding wirklich tut.

Der Erste Ansatz war ein HTML-Div über das ganze Browser-Fenster zu spannen, das Tile als Background mit Repeat zu hinterlegen und anhand der Maus-Events einfach die X-Y-Location zu korrigieren. Damit sollte ja der Eindruck entstehen dass das Playfield gescrollt wird. Die Elemente die Geblickt werden könnten sollten dann über diesem Div liefen und so die Click-Events selbst bekommen (natürlich müssen die beim Scrollen auch verschoben werden)

Leider spielt mir HTML/CSS/JavaScript da nicht so ganz mit:
Setzte ich den Background via style.backgroundImage kann ich hier nur eine 'echte URL' hinterlegen, aber nicht ein base64-encodiertes Image.

Warum ich das möchte: Weil ich gerne das Background-Image ia JavaScript herunterladen möchte und eventuell noch für den Client passend skalieren möchte.

Scheinbar ist diese Kombination aber nicht möglich.

Alternativen wären jetzt: Das Image Server-Seitig zu skalieren und so on-the-fly korrekt an den Client zu übertragen. Das will ich aber vermeiden.

Oder: Das Image weiterhin as-is herunter zu laden und eben an ein anderes Control zu binden um es anzuzeigen. ein einfaches IMG unterstützt aber kein 'repeat' und so müsste ich zum Image erst kompliziert überlappende Bereche dazurechnen oder beim Move jedesmal das korrekt aus dem großen Bild herausrechnen. Ersteres wäre möglicherweise ein Problem bei mobile-devices mit knappen Resourcen, letzteres denke ich ist (zumindest mit dem IE) nicht ruckelfrei realisierbar.

Übersehe ich einen andereen offensichtlich leichteren weg das Problem zu lösen?

Gibt es vielleicht eine einfache 'leichtgewichtige' Bibliothek mit der man sowas machen kann (... aber ich möchte hier kein Unity & Co aufziehen - denn mit geht es eigentlich primär darum was in JavaScript zu machen und nicht die nächsten 6 Monate ein Gaming-Framework zu lernen)

lg Robert
 
AW: Einfaches Scroll & Click Game

Meinst du so Beispiel ...in der Basis.

Du kannst das img bewegen, mit gedrückter maustaste.

Ja so in der Art. Nur 'endet' das Bild in diesem Beispiel. Das ich suche ist dass wenn ich das Bild über seinen Grenzen hinaus schiebe gleich wieder erscheint - so als ob es un ein unendlich großes Bild handelt.

Die wenigen Beispiele die ich gefunden habe arbeiten alle mit endlichen Playfields. Und mir ist nicht klar wie ich dem '.draggable()' verklickern kann dass er das Bild wie eine Kachel handhaben soll.

- - - Aktualisiert - - -

Hab gerade vorher mit meinem Freund telefoniert. Das Bild wird voraussichtlich 5000 x 5000 px groß sein (sofern ich ihn nicht noch davon überzeuge es noch weiter runter zu rechnen)

Natürlich kann ich das dem Browser skalieren lassen, aber ich bin mir nicht sicher was ein altes Andrid-Tablet mit einem 600x800 Display macht wenn der Browser so ein Bild vorgesetzt bekommt. Daher dachte ich mir ich rechne es einmalig runter - was vielleicht die Ladezeit erhöht aber danach sollte ja der Speicher wieder freigegeben werden.

Alllerdings frage ich mich bei der Auflösung schön langsam ob dieser Lösungsweg überhaupt der richtige ist, da das Bild ja immer noch über eine dünne Leitung muss :(
 
wenn der Browser so ein Bild vorgesetzt bekommt
Auch wenn du es selbst skalierst, musst dem Browser irgendwo dieses Bild vorsetzen. Und ich denke, dass der Browser damit besser umgehen kann, wenn er es selber verwalten kann, als wenn du das mit JS machst.
Alllerdings frage ich mich bei der Auflösung schön langsam ob dieser Lösungsweg überhaupt der richtige ist, da das Bild ja immer noch über eine dünne Leitung muss
Ich mich auch. Wahrscheinlich fährst du mit einer Tilingstrategie besser.
 
Zurück
Oben