"framelos" programmieren (Achtung neewbie)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

andilar

Betreff: "framelos" programmieren (Achtung neewbie)

BeitragMo, Aug 29, 2005 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen

nach gewisser Suche habe ich bisher keine Lösung für das Problem gefunden, da ich ja auch nicht genau weiss wie man das nennt oder wonach ich suchen soll...


Ich hab das Problem wenn ich einfache Sachen code (ich fang ja auch grad erst an) das die ganze "Malerei" auf dem Screen schon fertig ist bevor ich die Ausführung gesehen habe...
wenn ich einen bewegenden Kasten zeichne, der sich von rechts nach links bewegen soll, dann ist er schon links wenn ich starte Very Happy
Ich schätze ihr wisst ungefähr was ich meine...

Welche Lösungsansätze gibt es dafür oder wie nennt man sowas?


Ich bin für jede Hilfe dankbar...

darth

Betreff: ...

BeitragMo, Aug 29, 2005 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,
probiers mal mit waitkey() bevor der kasten sich bewegen soll... und waitkey() bevor es ausschaltet
(jedenfalls wenn ich dein problem richtig verstanden hab Laughing )
Diese Signatur ist leer.

Firstdeathmaker

BeitragMo, Aug 29, 2005 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du uns mal einen Beispielcode posten wo du das Problem hast?
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

BIG BUG

BeitragMo, Aug 29, 2005 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau Dir mal WaitTimer und CreateTimer an. Damit kannst Du das Spiel bremsen, so dass die Bewegungen noch zu erkennen sind.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)
 

andilar

BeitragMo, Aug 29, 2005 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
@Darth Gamer
du hast recht wenn ich das eine Problem nun lösen möchte dann geht es so, aber ich meinte das im Allgemeinen. Es läuft einfach alles zu schnell ab. Smile

@Firstdeathmaker
naja im Grunde spiel ich nur rum und mache einige Tutorials, z.B. die Einführung von Robsite.

@BIG BUG
das werde ich machen. thx

schonmal danke an euch, im Grunde geht es mir aber darum das ich das Programm halt bremsen möchte so das es nachher auch auf einem "aktuellen Rechner" spielbar/nutzbar ist. Ich habe einige Spieldemos mir angeschaut, welche meist nicht schlecht, aber so schnell abliefen das sie für mich unspielbar waren. Nun besitzt mein Rechner keinen Turbo Knopf mehr um die Taktfrequenz zu erniedrigen. Very Happy

Ich hätte gedacht das es evtl. eine Art Standard gibt , welchen man benutzt um das Problem der verschiedenen Rechenpowerdingensbumens zu eliminieren Smile
und es so egal auf welcher maschine gleich schnell abläuft (also im Ansatz)
 

Apocalyptic

BeitragMo, Aug 29, 2005 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Vergiss WaitTimer am besten wieder und such nach "Timer" und "Millisecs()" oder "frameunabhängig" hier im Forum Wink

Edit: Hab grad mal was rausgesucht: https://www.blitzforum.de/view...abh%E4ngig
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]
  • Zuletzt bearbeitet von Apocalyptic am Mo, Aug 29, 2005 23:52, insgesamt einmal bearbeitet
 

andilar

BeitragMo, Aug 29, 2005 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
hehe k

edit: jaaaah sowas mit delay usw das sieht schon richtig aus... bigthx

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Aug 30, 2005 2:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi andilar, mit Delay bremst du das Spiel komplett ab. Damit würde das Spiel auf unterschiedlichen Rechnern auch unterschiedlich schnell laufen. Wenn du pro Schleifendurchlauf die benötigte Zeit per Millisecs() abfängst und danach alle Bewegungen damit multiplizierst, dann hast du ein immer gleichschnell laufendes Spiel auf allen Rechnern. Es würde sich dann nur noch die FPS ändern (die ja unterschiedlich sein kann) aber das Spielgeschehen währe immer gleich. Du bewegst dann nicht zB ein Rect mit PosX=PosX+1 sondern PosX=PosX+1*ms... Was dann noch nötig ist, daß +1 durch eine andere Zahl zu ersetzen, da ja jetzt ein Multiplikator dahinter steht und demnach die Bewegungen schneller oder langsamer macht (AUF DEINEM RECHNER!!!). Du kannst dir aber sicher sein das auf einem uraltem Rechner zwar vielleicht das ganze ruckelt, aber dennoch eine Bewegung gleichlange dauert. Genauso ist es auf einem 10GHz Rechner, der macht dann halt flüssigere Bewegungen.

Ich mein ja nur, weil du unterschiedliche Rechnertypen bereits erwähnt hast. Ist vielleicht etwas komplizierter, aber sicherlich die eleganteste.

Hier ein Beispielcode... Mit Space kannst du ein grotigen Rechner simulieren...

Code: [AUSKLAPPEN]
Graphics 400,200,0,2
SetBuffer BackBuffer()

xp#=0;Position
xg#=.2;Geschwindigkeit
kv%=0;Künstliche Verlangsamung

td%=0;Geschwindigkeitsfaktor
tp%=MilliSecs();Zwischenpuffer, unbedingt angeben (sonst landen die Objekte im Nirvana)


While Not KeyHit(1)
 If xp>380 Then xg=-.2
 If xp<0 Then xg=+.2
 xp=xp+(xg*td);Hier wird Geschwindigkeit mit td-Faktor multipliziert
 Rect xp,90,20,20,1

 If KeyHit(57) Then kv=1-kv;Bei Space Künstliche Verlangsamung ein/aus-schalten
 If kv=1 Then Delay 100;Künstliche Verlangsamung anwenden wenn Aktiv

 ms=MilliSecs()
 td=ms-tp
 tp=ms

 Flip 1
 Cls
Wend
End

/EDIT: Geringfügige Besserung im Codeteil durchgeführt...
  • Zuletzt bearbeitet von hectic am So, März 05, 2006 13:52, insgesamt einmal bearbeitet
 

andilar

BeitragDi, Aug 30, 2005 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
wow. ich gebe zu ich musste das erst 2mal lesen um die Lösung zu verstehen.
wobei das wohl eher eine programmierlösung ist und wahrscheinlich im allg. so gehandhabt wird. Damit wäre meine Frage ja gar nicht zu Blitz gewesen sondern eher zum Spieleprogrammieren Smile sry

Ich denke mit dieser Sichtweise kann ich schon eniges lösen, jeder Rechner sollte nun jede Aktion die er macht, in Abhängigkeit der vergangenen Zeit bewältigen... wow wirklich, damit erklärt sich auch die Framerate die bei vielen verschieden ist und natürlich auch das es bei manchen flüssiger läuft (wenn wir mal "große" Spiele wie Farcry betrachten)...

Vielen Dank

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group