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

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-10-2008, 14:31   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Ort: Erkelenz
Beiträge: 35
performance lässt stark nach je länger man spielt :(

Mein freund und ich haben jetzt drei monate an einem jump n run gearbeitet.Die letzten Tage haben wir damit verbracht alle Level in einer Datei zusammen zu basteln. wir haben mehrere Szenen gemacht und jede Szene ist quasi ein für sich alleine spielbares level. Leider fängt das Spiel immer stärker an zu ruckeln je weiter man kommt.Es hat glaube ich nichts mit der zeit zu tuen die das flashspiel geöffnet ist. habe es mal eine halbe stunde im hintergrund laufen lassen im ersten level und es lief immer noch flüssig. Wenn man allerdings ins letzte level kommt ist es fast nicht mehr spielbar, wegen dem ruckeln. Das spiel ist noch in AS2 programiert (wir haben damit schon vor ca 2 Jahren angefangen und es jetzt nochmal rausgekramt^^).
Ich weiß leider absolut nicht woran es liegen könnte. liegt es vielleicht an zu vielen trace ausgaben oder den ganzen onClipEvent(enterFrame) befehlen, die auf gegnern und münzen sind?!

würde mich über hilfe sehr freuen, da wir viel arbeit reingesteckt haben
__________________
6 richtige im Lotto, das ist mein Lebensmotto
justFLASH ist offline   Mit Zitat antworten
Alt 31-10-2008, 14:40   #2 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Ein onClipEvent auf jedem MC sit natürlich extrem performancelastig.
Naja falls ihr Lust/Zeit habt wäre ein Umstief auf AS3 schonmal ein + in Performance.

So kann man eig nur raten.

Benutzt du Listener? Entfernst du sie?
-Benutze ObjectPools,
-verwende Variablen mehrmals, immer wieder neue muss ja nicht sein.
-Berechnungen können oft sehr vereinfacht werden, gewisse konstante
-Ausdrücke vorrechnen und wiederverwenden.
-Lösche Arrays und nichtmehr benutzte Variablen etc.
-Entlädst du nichtmehr brauchbaren Content? (Falls du dynamisch die Level lädst etc.)

Kannst ja mal Teile deines Codes zeigen?
__________________

Currently working on:

- --- ---

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

Geändert von _crypto_ (31-10-2008 um 14:41 Uhr)
_crypto_ ist offline   Mit Zitat antworten
Alt 31-10-2008, 15:02   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Ort: Erkelenz
Beiträge: 35
ja also leider bin ich kein flash profi. mit der zeit haben wir uns die dinge die wir brauchten selbst beigebracht deswegen ist der programierstil wahrscheinlich nicht unbedingt der beste und ich bin mir sicher man hätte manchen dinge besser machen können.

listener verwenden wir nicht. Gesteuert wir die hauptperson z.b mit if(Key.isDown(Key.RIGHT))
aber ich glaube da muss man nichts entfernen wie bei listenern

wir haben auch viele Objekte im Level die so einen oder ähnlichen Code haben:

onClipEvent (enterFrame) {
if (this.hitTest(_root.Lenny.hitarea)) {
this.gotoAndStop (2);
}
}
Allerdings sind die Level einzeln spielbar, es ruckelt nur wenn man alle levels hintereinander spielt.

tja leider weiß ich nicht was object pools sind, deswegen gehe ich mal stark davon aus dass ich sie nicht benutze ^^.

Variablen werde alle wiederbenutzt, da die level ja alle auf der gleichen "engine" beruhen.

würde es denn vielleicht helfen, wenn die Level in einzelne swf's gepackt werden?!

Vielen dank schon mal für die schnelle hilfe
__________________
6 richtige im Lotto, das ist mein Lebensmotto
justFLASH ist offline   Mit Zitat antworten
Alt 31-10-2008, 15:11   #4 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Das aufjedenfall!

Lieber die Levels in einzelne SWFs auslagern und nur das aktuelle Laden
und das alte rausladen.

Ws wird ne Menge Performance wegen den onClipEvents und den
hitTests draufgehen. SOllte man sich vllt überlegen wie man manche
Dinger abändern kann.

Lieber nen eigenen hitTest schrieben z.b. für AABBs und nicht den von Flash
nehmen. Rechnen ist schneller als sowas denke ich ^^

Wenn du kannst vllt auch mit OOP das ganze Sturkturieren, fällt viel
an doppeltem Code weg, macht das alles leserlicher und besser Pflegbar.

Ansonsten mal ne Demo hochladen, oder den Speicherverbrauch mit
System.totalMemory() (Gabs das nicht schon in AS2 ^^) anzeigen lassen.
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 31-10-2008, 15:24   #5 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Ort: Erkelenz
Beiträge: 35
okay ich habe jetzt mal die ganzen münzen rausgenommen und es hat sich schon um einiges gebessert.

ok jetzt musst du mir nur mal auf die sprünge helfen, wie ich einen eigenen hittest schreiben kann ^^
einfach die x und y variablen der beiden objekte miteinander vergleichen?!
wäre es eigentlich performance freundlicher, wenn man alle münzen in eine instanz packt. auf der dann ein hittest mit shapeflag liegt. wenn man dann den münzen hittest berührt wird eine variable auf true gesetzt und erst dann fragt jede münze in der instanz einzeln ab ob der hittest gerade true ist...

naja...ich denk mal spätestens morgen früh werde ich dann auch mal einen link zum kompletten spiel hier reinstellen

vielen dank nochmal
__________________
6 richtige im Lotto, das ist mein Lebensmotto
justFLASH ist offline   Mit Zitat antworten
Alt 31-10-2008, 15:55   #6 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Naja schau mal,

Münzen muss man ja nicht punktgenau teste. Da reicht die BoundingBox
drumrum, das geht auch ohne Flashs hitTest. Damit würdeste schonmal
einiges hinkriegen denke ich.

Kompliziertere hitTest könnte man auch sicherlich mit Bitmap wesentlich
performanter machen, dafür müsstest du jedoch das ganze Spiel um-
krempeln.
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ 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:23 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele