"framelos" programmieren (Achtung neewbie)
Übersicht

andilarBetreff: "framelos" programmieren (Achtung neewbie) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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... |
||
![]() |
darthBetreff: ... |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi,
probiers mal mit waitkey() bevor der kasten sich bewegen soll... und waitkey() bevor es ausschaltet (jedenfalls wenn ich dein problem richtig verstanden hab ![]() |
||
Diese Signatur ist leer. |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@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. ![]() @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. ![]() Ich hätte gedacht das es evtl. eine Art Standard gibt , welchen man benutzt um das Problem der verschiedenen Rechenpowerdingensbumens zu eliminieren ![]() und es so egal auf welcher maschine gleich schnell abläuft (also im Ansatz) |
||
Apocalyptic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vergiss WaitTimer am besten wieder und such nach "Timer" und "Millisecs()" oder "frameunabhängig" hier im Forum ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hehe k
edit: jaaaah sowas mit delay usw das sieht schon richtig aus... bigthx |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group