| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #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 |
| | |
| | #2 (permalink) |
| Techniker 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) |
| | |
| | #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 |
| | |
| | #4 (permalink) |
| Flashworker 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 |
| | |
| | #5 (permalink) |
| Techniker 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) |
| | |
| | #6 (permalink) |
| Flashworker 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 |
| | |
| | #7 (permalink) |
| Techniker 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 |
| | |
| | #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. |
| | |
| | #9 (permalink) | |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
| Zitat:
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 | |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |