2010-06-17 10 views
6

Ich versuche, ein einfaches Side Scrolling-Spiel zu machen, nur um die Seile des Spieleprogrammierung auf Android zu lernen. Ich habe mir eine Lösung ausgedacht, wie man es macht, aber ich glaube nicht, dass es die eleganteste Lösung ist. Ich wollte verschiedene Ideen zur Umsetzung meines Spiels bekommen, da ich momentan keine andere Lösung habe.Java Side Scrolling-Spiel auf Android

Hier ist eine kurze Erklärung, wie es funktioniert ..

I Blöcke oder Objekte im Grunde haben vom oberen Rand des Bildschirms fallen. Die Blöcke werden aus einer vordefinierten Zeichenfolge definiert, die ich mit einem benutzerdefinierten Map-Editor erstellt habe.

Ich erstelle alle Blöcke zum Zeitpunkt der Kompilierung, positioniere sie auf dem Bildschirm oder entferne sie und höhe einfach ihre Koordinaten mit jeder Iteration des Gameloops.

Es ist eigentlich ein bisschen besser als das getan, aber das gibt eine kurze einfache Erklärung der Grundidee.

Ich hörte von ein paar Leuten, dass, anstatt jede Blockposition zu erhöhen, die Blöcke dort bleiben und einfach den sichtbaren Bereich ändern. Das macht Sinn, aber ich habe keine Ahnung, wie es geht.

Kann jemand einige Ideen oder Links teilen, wie ich so etwas umsetzen kann? Ich weiß, dass meine derzeitige Lösung nicht die größte ist.

Danke!

Antwort

7

Für das Erlernen der Seile für das Spiel Programmierung auf Android möchte ich Sie auf Google I/O 2009 - Writing Real-Time Games for Android I/O-Sitzung vom letzten Jahr und this eines der 2010 Sitzungen.

Personen, die Ihnen mitteilen, dass Sie den sichtbaren Bereich geändert haben, gehen wahrscheinlich davon aus, dass Sie OpenGL ES verwenden, was Sie vielleicht nicht tun, aber wahrscheinlich in Betracht ziehen sollten.

+0

Das sind tolle Links, vielen Dank – hanesjw

3

Wenn die Blöcke/Objekte voneinander unabhängig sind, behandle ich sie weiterhin als unabhängige Objekte und aktualisiere ihre Position separat. Vielleicht möchten Sie sich eines Tages wünschen, dass sich einige von ihnen anders bewegen. In der Spieleentwicklung ist es gut, den Motor so flexibel wie möglich zu lassen, solange du kannst - das Polieren eines Spiels beinhaltet eine Menge Spieletests und Feinabstimmungen der Spielmechanik, und je mehr Dinge du anpassen musst polierter du kannst es bekommen. Optimiere nur wenn nötig.

Aber wenn die Blöcke nicht unabhängig sind, und nicht sein wird, sollte das Ändern des Betrachtungsbereichs statt des Bewegens jedes Blocks eine gute Idee sein, obwohl mehr Informationen über Ihr Spiel helfen würden - ist es ein Platformer? Ein Schütze? Wenn es ein spielergesteuertes Objekt auf dem Spielfeld gibt, müssen Sie seine Position ändern, um es auf dem Bildschirm zu behalten, wenn Sie den sichtbaren Bereich ändern, was die Dinge übermäßig kompliziert machen kann. Es ist schwierig ohne weitere Details zu beraten.

Gute Frage, obwohl!

EDIT:

Nach Ihrem Kommentar, und ich sah, Ihre andere Frage Problem decrementing in Java with '-='; Ich glaube, ich verstehe Ihre Frage ein wenig besser - die wichtigste Sache, die ich unter dem Gesichtspunkt des Designs ändern würde, wäre, die Blöcke nach Bedarf zu erstellen, anstatt alle auf einmal zu erstellen. Mit anderen Worten: Erstellen Sie die Blöcke auf dem Rahmen, bevor sie auf dem Bildschirm angezeigt werden, und löschen Sie sie, sobald sie nicht mehr auf dem Bildschirm angezeigt werden. Es sei denn, das Spieldesign erfordert natürlich eine große persistente Welt - aber es klingt nicht nach dieser Art von Spiel. Kann der Player zurückrollen, oder lässt er nur einseitiges Scrollen zu?

+0

Vielen Dank für die Antwort. Die grundlegende verdummte Idee des Spiels ist, dass Sie einen Charakter haben, Blöcke fallen und Sie versuchen, ihnen auszuweichen, indem Sie den Charakter bewegen. Also sind die Blöcke unabhängig. Ich würde einen Standort von allen von ihnen für die Kollisionserkennung behalten müssen, nehme ich an. Vielleicht habe ich die richtige Idee. – hanesjw

3

Replica Island (http://code.google.com/p/replicaisland/) ist eine Open-Source-Jump & Run-Spiel auf Android. (Es kommt von dem Typen, der die Writing Real Time-Talks gemacht hat) Vielleicht kannst du daraus ein paar gute Ideen bekommen.

Verwandte Themen