Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-12-2006, 14:06   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Ort: Berlin
Beiträge: 19
Spieleprogrammierung - CPU-Auslastung

Hi.

Ich habe mein erstes Jump n Run spiel programmiert. Es funktioniert einwandfrei. Wenn ich es spiele jedoch steigt mein CPU auf 60-70 %. Aber es ist dennoch fliessend spielbar.
Es mag an den ganzen onEnterFrames liegen, aber ich versuche so viel wie moeglich die onEnterFrames, sobald die Zeit reif ist, zu loeschen.
Nun habe ich auf meiner Seite dieses Spiel eingebettet. Und nun nun stockt das so richtig. Ahnung, was fuer moeglichkeiten es gibt um das problem zu aendern?
(noch eine Frage: wenn ich ich in einen naechsten schluesselbild ein best. MC loesche, in welchem ein onEnterFrame-Funktion existierte, hoert es automatisch auf. oder existiert es immer weiter?)

Vielen Dank
Fräscher ist offline   Mit Zitat antworten
Alt 31-12-2006, 14:46   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ist allgmein bekannt und hier schon x-mal besprochen worde.

im browser läuft das swf nur als plugin und hat gewiss nicht die aller höchste priorität. d.h. das swf bekommt vom browser nur bis zu 50% (kann muss aber nicht) der rechenleistung, die es als eigenständiges programm mit einem projektor hätte.


objekte existieren nur so lang wie ihre zeitleite (_root. z.b. besteht 'ewig'). wenn ein objekt in einer zeitleite erzeugt wird, dann 'stirbt' es beim verlassen der zeitleiste.
setIntervalle z.b. gehören niemandem. die laufen ewig weiter, wenn man sie nicht extra clear't.


onEnterFrame alleine ist es übrigens nicht. es gibt sehr schöne, sehr komplexe spiele, die durchaus auch im browser vernünftig laufen. es gehört wohl auch eine dicke portion erfahrung dazu, ein spiel flüssig laufen zu lassen ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (31-12-2006 um 14:51 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 01-01-2007, 10:34   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Ort: Berlin
Beiträge: 19
Vielen Dank für deine Antwort.

es gehört wohl auch eine dicke portion erfahrung dazu, ein spiel flüssig laufen zu lassen ;-) ....
nun habt ihr irgendwo schonmal hilfreiche Informationen gesehen.
zB eine Frage zu meinem Spiel:
es gibt zB eine Art Bonuspunkte einzu sammeln. Und ich habe in jedem einzelnen Bonuspunkt geschrieben:
Wenn du den Helden berührst, wird dein "invisible" gleich 0 und dein onEnterFrame wird gelöscht. Ich wollte damit bezwecken, dass sie wenigens irgendwann gelöscht werden.
Bei den Plattformen, beim onLoad, rechnet jede plattform nur einmal einen best. counter + 1. Und der Hero checkt dann ab, ob er eine best. Plattform berührt.

Das sind so die Hauptsachen. Natürlich gibt es dann noch waffen, feinde, ...

Irgendeine Idee was man daran ändern kann?

Oder kann mir jemand ein schönes Beisp. zeigen. (.fla datei)

Vielen Dank, Lui
Fräscher ist offline   Mit Zitat antworten
Alt 01-01-2007, 10:46   #4 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
hgseib: Als was bezeichnest du denn hier Objekte? Auf jeden Fall kann man
das nicht so pauschalisieren.

Was hgseib mit Erfahrung gesagt hat, stimmt definitiv. Da gibt es so viele
Kleinigkeiten, die man beachten muss/kann, das ist schwer in ein paar
Sätzen zu beschreiben.

Aber oft ist es der grundlegende Aufbau, der viel Performance schluckt.
Wenn du in jedem Bonuspunkt ein enterFrame hast, das einen hitTest
ausführt, dann solltest du hier schon mal ansetzen und das anders
aufbauen.

greetz
sebastian ist offline   Mit Zitat antworten
Alt 01-01-2007, 11:36   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
dann zeig mal dein spiel ("..Nun habe ich auf meiner Seite dieses Spiel eingebettet.." <== schön für dich). zumindestens einen link darauf. ohne konkrete vorlage kann man nur allgemeine äusserungen zum besten geben.

wenn du z.b. 100 fahnen auf dem spielfeld verteilt hast, die im wind flattern, dann könnte man empfehlen das bleiben zu lassen. da wir aber nichts von deinem spiel wissen ...


@Sebastian W. .. Als was bezeichnest du denn hier Objekte? Auf jeden Fall kann man das nicht so pauschalisieren..
hmm, du schreibst, du weist nicht wovon ich rede, aber dass das falsch ist, das weisst du schonmal genau ;-) das jahr fängt ja gut an :-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (01-01-2007 um 12:50 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 01-01-2007, 12:44   #6 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Ach in Flash sind die Begriffe immer so tricky. Objekte sind ja zunächst allgemein
Instanzen von irgendwelchen Klassen. Daher ist ein Zeitleistenbezug sowieso
schon so eine Sache. Aber bei dieser Definition ist deine Aussage auch zu
pauschal, nicht mehr wollte ich sagen.

greetz
sebastian ist offline   Mit Zitat antworten
Alt 01-01-2007, 12:55   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ich meinte mc's. was anderes hat in flash kein onEnterFrame. das ist schon eindeutig.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 02-01-2007, 15:14   #8 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Ort: Berlin
Beiträge: 19
Hallo. (frohes neues)
Hier ist nun die .fla datei. Lasst mich kurz was dazu sagen.
Ich habe es nicht übersichtlich mit AS gestaltet, weil ich flexibel sein wollte. Sprich anstelle alles in die hauptzeitleiste zu schreiben, habe ich es in die MC reingeschrieben. Das hat den Vorteil, dass ich jetzt beliebig viele plattformen auf die bühne ziehen kann und sie sind sofort wirkungsvoll.
und man sieht auch, dass eine highscore mit php eingebaut ist. die datein habe ich euch aber nicht geschickt.

Ich bin euch für jede Hilfe dankbar.

Klick hier.
Fräscher ist offline   Mit Zitat antworten
Alt 02-01-2007, 22:23   #9 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
Zitat:
Zitat von Fräscher Beitrag anzeigen
Ich habe es nicht übersichtlich mit AS gestaltet, weil ich flexibel sein wollte. Sprich anstelle alles in die hauptzeitleiste zu schreiben, habe ich es in die MC reingeschrieben.
vorallem schreckt das kopierer ab ;-) und leider auch helfer :-( ich wühle mich doch jetzt nicht durch 100 objekten durch, ob die vielleicht oder auch nicht scripte enthalten und was die machen.

a) schicke nummer dein spiel !

b) da ist alles zu gross. halb so gross muss langen. das alleine kostet schon irsinnig viel rechenleistung. siehst du ja ganz deutlich, wenn du den kompletten bildschirm scrollst.
c) zu viele details. z.b. cyborg kopf, jede einzelne linie gezeichnet! mach da ein bild draus oder zumindestens cacheAsBitmap setzen. dann muss das 'rote' auge aus dem kopf raus, weil so wird flash jedesmal den kopf total neu berechnen müssen, weil sich im kopf etwas verändert hat.
oder z.b. die farbverläufe im vogel. die sind so zart angedeutet, das man sie kaum sieht. fressen aber ressourcen. mach das unifarbig.

programmierung, soweit ich welche gefunden habe ;-)
im vogel:
delete this.onEnterFrame; // unnötig, wird ja direkt neu gesetzt
this.onEnterFrame = function() {
for (var i = 0; i<=_root.plattform.length; i++) {
var namen = eval("_root.spiel_mc.plattform_"+i+"_mc");
if (this.hitbereich_mc.hitTest(namen)) {
// verwalte die objekte in arrays und nicht jedesmal deren namen neu parsen

in der banane
_root.punkte_mc.bullet_txt.text = _root.game.bananaavailable;
würdest du alle bananen usw. global verwalten, dann könntest du das in einer schleife abarbeiten. und bräuchtest den text nur einmal am ende der schleife zu aktualisieren. text schreiben kostet zeit (keine stunden, aber viel kleinzeug macht auch einen grossen haufen).

b..c dürften die hauptbremser sein. programm habe ich jetzt nicht all zu viel gefunden. und dass was ich gesehen habe kann nicht das ganz grosse problem sein.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 02-01-2007, 22:32   #10 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
cacheAsBitmap bei den Vektoren ist übrigens auch eine feine Sache

greetz
sebastian ist offline   Mit Zitat antworten
Alt 03-01-2007, 10:08   #11 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Ort: Berlin
Beiträge: 19
Red face

Vielen Dank, dass ihr euch die Zeit genommen habt. Ich werde mein bestes versuchen!

a) schicke nummer dein spiel ! <- den check ich jedoch nicht ganz.
Fräscher 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 10:03 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele