Zurück   Flashforum > Flash > ActionScript > Spielkonzepte und Spieleprogrammierung

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-10-2008, 21:20   #1 (permalink)
Developer
 
Benutzerbild von malthoff
 
Registriert seit: Sep 2001
Ort: Unterhaching/München
Beiträge: 513
[AS2] Zeitbasiertes Spiel MAC PC Unterschied

Hi.

Ich hab nen neues Spiel in der Produktion und jetzt kommt gerade
der Bugbericht rein und sagt:

Auf MAC läuft das Spiel langsamer als auf PC, aber die Zeit läuft gleich.

Das Lenken des Fahrzeugs und Kollisionsabfrage etc ist framebasiert.
Und da Mac weniger Frames pro Sekunde schafft, ist mir das Problem
klar. Wie kann man dem Problem entgegnen? Ist es besser, alles Interval
basiert zu machen - wird dann der MAC/PC Unterschied aufgehoben?

Gruß
malthoff ist offline   Mit Zitat antworten
Alt 19-10-2008, 00:08   #2 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
eig sollte es klappen, wenn du die verstrichene zeit von frame zu frame
berücksichtigst:
ActionScript:
  1. import flash.utils.getTimer;
  2.  
  3. var delay: Number;
  4. var lastTime: Number;
  5.  
  6. function update(): void
  7. {
  8.     lastTime = getTimer();
  9. }
  10.  
  11. function enterFrame(event: Event): void
  12. {
  13.     delay = (getTimer() - lastTime) / 1000 + 1;
  14.  
  15.     x += vx * delay;
  16.     y += vy * delay;
  17.  
  18.     this.update();
  19. }
sowas in der art halt

anderer vorschlag: du könntest dir die erreichten und die gewollten fps ausgeben lassen
das mit den gewollten wäre jetzt leider nur unter AS3 möglich.

weiß nicht wie das in AS2 aussieht. dann könntest du anhand des unterschiedes die verzögerung nachholen.
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi

Geändert von _crypto_ (19-10-2008 um 00:09 Uhr)
_crypto_ ist offline   Mit Zitat antworten
Alt 19-10-2008, 21:18   #3 (permalink)
Developer
 
Benutzerbild von malthoff
 
Registriert seit: Sep 2001
Ort: Unterhaching/München
Beiträge: 513
danke für die idee.

aber komme ich dann nicht am ende mit einer lösung raus, die auch nicht ganz stimmt? Wenn der Player seine Framezahl erniedrigt, dann wird doch auch die Rechnung hier zu einem anderen Ergebnis kommen, als bei höherer
Framezahl.

Hat sonst jemand Erfahrung, wie Time basierte Spiele ordentlich getimed werden?
malthoff ist offline   Mit Zitat antworten
Alt 20-10-2008, 16:41   #4 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
naja so amcht man das aber eig

den cpu befragen wie viel zeit seit dem letzten frame vergangen ist.
wie gesagt die AS3 methode ist sicherlich stabiler aber du benutzt ja
as2 und da fällt mir nur die andere methode ein, hasse mal gegooglet?

also allgemein ohne jetz as spezifisch zu werden?
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 20-10-2008, 18:25   #5 (permalink)
Developer
 
Benutzerbild von malthoff
 
Registriert seit: Sep 2001
Ort: Unterhaching/München
Beiträge: 513
Ist bisher Neuland für mich.
Gut, wenn Du sagst, dass man das auch generell so macht,
dann werd ich mal schauen.

Generell danach suchen, also wo Frames garkeine Rolle spielen?
Also hat man ähnliche Probleme bei in C geschriebenen Spielen oder wie?

Also so kanns es zumindest nicht bleiben - wäre schon recht unprofessionell,
wenn MAC User das Spiel niemals in der Zeit beenden könnten, wie
PC User. Läuft der Flash Player dann auf MAC unter Windows XP in
Parallels wieder gleich schnell? Haha...verrückte Welt...
malthoff ist offline   Mit Zitat antworten
Alt 20-10-2008, 19:23   #6 (permalink)
DeRailed
 
Benutzerbild von klickverbot
 
Registriert seit: Sep 2006
Beiträge: 321
Zitat:
Zitat von Dr.Ache Beitrag anzeigen
Also hat man ähnliche Probleme bei in C geschriebenen Spielen oder wie?
Natürlich, das Grundproblem ist hier nicht anders, denn die Prozessoren sind ja alle unterschiedlich schnell. Deswegen nimmt man eigentlich immer die seit dem letzten Frame verstrichene Zeit als Basis für alle Berechnungen – so wie crypto es schon vorgeschlagen hat (ich würde das etwas anderes implementieren, aber das tut nichts zur Sache).

Früher war auch das Rendern mit einer möglichst konstanten Framerate verbreitet, es hat allerdings in letzter Zeit an Popularität verloren, da die Nachteile (einen davon hast du schon zu spüren bekommen) die spärlichen Vorteile um einiges übersteigen.
__________________
Zum Thema Code im Forum posten:
Mit den [AS]-Tags bekommt man eine tolle farbige Anzeige, bei der sogar die Zeilennummern eingetragen sind.

Wie man aus [AS]-Tags Code direkt ohne die Zeilennummern kopiert:
Einfach auf den 'Beitrag zitieren'-Knopf drücken und Spaß mit Copy&Paste haben ;)
klickverbot ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele