In .exe Createtimer funktioniert nicht <<erledigt>
Übersicht

Zwer99Betreff: In .exe Createtimer funktioniert nicht <<erledigt> |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der Titel dieses Themas sagt eigentlich schon viel aus.
Ich hab eine .bb in eine .exe umgewandelt hab. Alles schön und gut, alles hat funktioniert, aber die CreateTimer-Funktion funktioniert irgentwie nicht. Auf meinem alten Notebook geht das Spiel langsamer als auf meinem neuen PC. Falls wichtig: Bei mir funktioniert CreateTimer nicht einmal im Vollbildmodus aber im fenstermodus schon. P.S.: An alle die denken "Was für ein blöder Titel": Bekomm das "Erledigt" nicht in die Zeile. ![]() |
||
- Zuletzt bearbeitet von Zwer99 am Di, Nov 14, 2006 20:14, insgesamt 2-mal bearbeitet
![]() |
SchnittlauchUnkraut |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst Frameunabhängig programmieren damit das spiel auf allen
Rechner gleichschnell geht. Und du musst Programme kompilieren und sie nicht einfach zu ner EXE umbenennen ![]() Createttimer verlangsamt höchstens das Spiel. MFG Schnittlauch |
||
Ich wars nicht. |
timmeTheOnly |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1.) NEUEN nich neun
2.) Such mal nach "Frameunabhängigen Programmieren"... 3.) Im Fenstermodus übernimmt, im gegensatz zum Vollbild Windows die FPS 4.) MfG 5.) T-Master |
||
![]() |
JustTheBest |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Sorry, ich weiß nich, wie weit du bist, aber wenn der Timer im Vollbildmodus nich leuft, dann geht er garnicht. Hast du dann in der Hauptschleife überhaupt waittimer(timer) ![]() Also, wenns immernoch nicht klappt, zeig mal den Code! mfg JTB |
||
www.mas-online.de.gg
__________ Liegt der Camper tot im Keller war der Rusher wieder schneller. Liegt der Rusher tot daneben hat der Camper nen Kollegen! |
Zwer99 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, ich hab WaitTimer eingegeben.
Und hab den Code auch in eine .exe-Datei kompiliert. |
||
![]() |
Xaron |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem ist wahrscheinlich, dass das Spiel auf Deinem alten Notebook zu langsam läuft, also langsamer, als mit CreateTimer eingestellt. Dann kann CreateTimer/Waittimer natürlich auch nix machen und das Spiel beschleunigen.
Gruß - Xaron |
||
Cerberus X - Monkey X Reloaded! |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ein Timer wird Geschwindigkeitsunterschiede zwischen langsamen und schnellen PCs nur noch verschlimmern, fürchte ich.
Denn dein Waittimer ist nicht 100% genau, das wäre jedoch nötig um zu verhindern, dass der Timer genau einen Moment zu spät feuert und dadurch der VSync sich um 16ms verlängert (bei einem Schirm mit 60hz) Das Problem fällt beim schnellen System nicht auf, der wird den Timer vermutlich zeitgenau feuern können oder hat ausreichend "Frameressourcen" so das der VSync kein Problem ist. Bei einem langsamen system sorgt diese Kombination jedoch für ganz herrliche Dia Show Effekte, weil sich die Timerverspätung durchgehend weiter ziehen wird, so das du im Endeffekt nur noch 50% der FPS hast, wenns übel läuft. Wenn ein Spiel immer gleich schnell "laufen" (also aussehen vom spielgefühl) soll, dann musst du wie oben erwähnt frameunabhängige Programmierung nutzen. Dabei ist die Änderung pro Frame einfache von den Frames pro Sekunde abhängig. Dadurch hat man eine konstante Bewegung pro Sekunde (nicht pro Frame, was du aktuell vermutlich hast) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Zwer99 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab mir das Tutorial "Frameunabhängig programmieren" durgelesen und so gemacht wie's dagestanden ist. Nur jetzt bewegen sich meine Bilder überhaupt nicht.
Ich hab StartZeit = Millisecs() ganz am Anfang der Schleife geschrieben. Dazwischen einige Funktionen aufgerufen. Darunter eine Funktion, die die Bilder bewegen lässt. (Dabei 1 mit SchleifenZeit multipliziert ) am Schluss der Hauptschleife hab ich SchleifenZeit = Millisecs() - StartZeit geschrieben. Natürlich werde ich die Namen der Variablen noch verändern. |
||
![]() |
Fuchsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin Sevi,
Du musst alle Bewegungen mit "SchleifenZeit" multiplizieren. zB.: Code: [AUSKLAPPEN] moveentity objekt,0,0,geschwindigkeit*SchleifenZeit MfG |
||
![]() |
Hagbard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und wie kontrolliert man, dass das Objekt sich nur eine bestimmte Zahl an Pixeln oä bewegt?
edit: ... stimmt, klar |
||
- Zuletzt bearbeitet von Hagbard am Fr, Nov 10, 2006 18:49, insgesamt einmal bearbeitet
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Falls die Bewegungsdistanz grösser ist, als das von dir definierte Maximum, setze sie einfach auf das Maximum | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Zwer99 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sorry Leute, aber ich hab einen ziemlich dummen Fehler gemacht.
Ich hab nämlich die Schleifenzeit in einer Funktion mit einem Wert multipliziert und hab aber vergessen die Schleifenzeit Global zu setzen. ![]() ![]() Tut mir echt leid. Ja, aber jetzt hab ich ja geschafft. Danke für die Tipps. Waren wirklich nützliche Sachen dabei ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group