Java/J2ME - Problem mit der Geschwindigkeit - Handygame

privacy

Captain
Registriert
Aug. 2004
Beiträge
3.238
Hallo zusammen!

Als erstes möchte ich sagen, dass ich nicht so viel Ahnung habe. Folgendes Problem, ich schreibe im Moment ein kleines Handy Game in JSR 184 (M3G). (J2ME) Nun laufen Animationen, die ich per Methode "animate()" ablaufen lasse schneller und langsamer ab je nachdem ob ich meine Debug Kommentare aktiviert habe oder nicht. Das alleine wäre ja nicht weiter schlimm, aber nervig wird es jetzt wo die Endpunkte der Animation immer an anderen Stellen sind.

Ein weiteres Problem wäre folgendes. Ich lasse mir für das "würfeln" im Spiel Zufallszahlen ausgeben. Nun funktioniert 3 mal hintereinander würfeln per Schritt für Schritt durchsteppen im Debug Modus einwandfrei, lasse ich es aber ablaufen erwürfelt mir die Methode immer 3 mal das gleiche. Baue ich nun eine kleine Schleife in die Würfel Methode ein, die sie quasi ein paar Sekunden aufhält, dann "würfelt" mir die Methode wieder verschiedene Zahlen aus und nicht immer die gleiche.

Was mache ich falsch bzw. wie kann man die Phänomene erklären?

Würde mich sehr über eine Antwort freuen.
 
Zuletzt bearbeitet:
Meine spontante Vermutung zu der Problematik mit den Würfeln: Die Runtime verwendet einen Pseudozufallszahlengenerator, dessen "Stand" (seed) von der aktuellen Zeit abhängt, die aber nur auf ganze Sekunden genau übergeben wird.
Lösung: Zufallsgenerator selbst seeden oder eigenen Pseudozufallszahlengenerator implementieren.
Da ich nicht weiß wie "gut" (d.h. wie schwer vorauszusehen) deine Zahlen sein müssen und ich ebenfalls nicht weiß wie viel Zeit für deren Berechnung erübrigen kannst (wie oft wird im fertigen Game gewürfelt? wie viel Prozessorpower haben die Endgeräte?), kann ich dir dafür keinen Algorithmus empfehlen.
Zu deinem anderen Problem: Ich vermute, du erweiterst den Stand deiner Animation immer mit einem festen Betrag (für jeden Durchlauf der Game Loop zeit+= .005 oder ähnlicher Code) oder die Runtime tut dies. Wenn du es tust ist der Fehler leicht zu beheben, wenn es die Runtime tut wirst du wohl einen Teil des fehlerhaften Codes selbst implementieren müssen :(
Da kann dir aber sicher ein erfahrener Java-Coder weiterhelfen.

LG
Alexander
 

Ähnliche Themen

Zurück
Oben