Kreisbewegung in Shooter-Game verlangsamt das Programm

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Sirthaw

Betreff: Kreisbewegung in Shooter-Game verlangsamt das Programm

BeitragMi, Sep 11, 2013 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Abend!
Wie der Titel schon sagte, habe ich das Problem, dass ich einen Gegner in einem Shooter-Game
darstellen möchte, der eine einfache Kreisbewegung durchführt, doch leider wird nach
wenigen Sekunden mein Spiel immer langsamer und ich weiss nicht warum.
Hoffentlich könnt ihr mir helfen.
Hier ist die Funktion, die den Gegner erzeugt:
Code: [AUSKLAPPEN]

Function createSkystar()
skystar_w=skystar_w+1

If skystar_w=>360 Then skystar_w=0
If zaehler_skystar=0 Then

 instanz.skystar = New skystar
 instanz\skystar_x = 600+20
 instanz\skystar_y = 100-20
 instanz\skystar_energie=50
 zaehler_skystar=1
EndIf

For instanz.skystar = Each skystar
DrawImage skystar_image,instanz\skystar_x+20*Cos(skystar_w),instanz\skystar_y-20*Sin(skystar_w)
Next


End Function




Mit freundlichen Grüßen
Sirthaw

Abrexxes

BeitragMi, Sep 11, 2013 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
2D ist zu langsam um in Echtzeit zu drehen. Benutze 8 oder 16 Einzelbilder.

cu
 

Sirthaw

BeitragMi, Sep 11, 2013 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antwort.
Also gibt es keine andere Möglichkeit außer Einzelbilder?
Das ist nämlich echt ärgerlich, weil ja so viele Varianten für
Gegnerbewegungen wegfallen, oder?
 

PhillipK

BeitragMi, Sep 11, 2013 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Abrexxes:
Wenn ich das richtig sehe, wird keinerlei rotation durchgeführt.
Lediglich Sinus / Cosinus wird verwendet um die X/Y position des einzelbildes zu verändern. Dh um die eigentliche position der skystar instanz "rotiert".

Was ich mir vorstellen könnte, ist, das du "zaehler_skystar" evtl pro frame zurücksetzt?
Das würde bedeuten, das du pro frame eine neue instanz erstellst, was schnell zu einem extremen leak führen kann - grade weil, wie Abrexxes schrieb, pures 2d langsam ist.

Hast du noch mehr code, der dazu gehört? Wo rufst du die funktion auf?
Hast du schonmal beim erstellen eines Skystars ein print laufen lassen, gucken wie oft es ausgeführt wird?

Eventuell ist "zaehler_skystar" auch nur lokal vorhanden. In diesem fall wird die variable jeden aufruf von "CreateSkystar" mit 0 initialisiert. Was auch bedeuten würde, das bei jedem aufruf eine instanz erstellt wird.
 

Sirthaw

BeitragMi, Sep 11, 2013 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
XD
Du hast Recht, PhillipK, ich habe aus Versehen
Global skystar_zaehler geschrieben anstatt zaehler_skystar!
Vielen Dank!
 

PhillipK

BeitragMi, Sep 11, 2013 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
oft sind es die kleinen dinge, die man übersieht.
Ein tipp fürs nächste mal: Grade wenn du eine solche funktion hast, solltest du klar zwischen Create und Update / Draw trennen.
Und wenns dann doch mal probleme gibt.. einfach ein print zum erstellen um sicher zu gehen, das nur eine gewünschte anzahl instanziert wird Smile

Tennisball

BeitragMi, Sep 11, 2013 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Manche IDEs haben eine Art "Rechtschreibprüfung" eingebaut, die dir dabei hilft solche Tippfehler sofort zu bemerken. Wenn du eine Variable nicht definiert hast, bevor du sie verwendest, wird dir das mitgeteilt. Ich bin mir nicht sicher ob IDEal das unterstützt, da könntest du mal nachgucken.

Gruß,
Tennisball

Xeres

Moderator

BeitragMi, Sep 11, 2013 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Der "Strict" Modus von IDEal färbt alle undeklarierten Variablen rot ein - sehr zu empfehlen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Sirthaw

BeitragMi, Sep 11, 2013 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, ich schau mich mal nach ner anderen IDE um.
Danke.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group