Framabhängig bewegen


  • Mod

    jedem in dem die logic frameabhängig läuft, da haste räscht.

    🙂

    rapso->greets();



  • @FSK
    Das Programm simuliert einen Luftkampf (3D). Bei 2 Flugzeugen läuft es flüssig. Wenn ich jetzt 100 Flugzeuge erstelle bewegen sich die Flugzeuge zwar in größeren Schritten, aber insgesamt doch in einer spielbaren Geschwindigkeit. Vorher (mit FPS-Bremse) war es unspielbar.

    *Also mit FPS-Bremse ist der mit dem langsameren Computer gearscht.
    *



  • rapso schrieb:

    jedem in dem die logic frameabhängig läuft, da haste räscht.

    wie berechnet man die logic eigentlich frameunabhängig? wie kann man die logic und das rendern am besten teilen?



  • Indem man sie in einem extra Thread laufen läßt. Und dann halt 20x oder so / sek updated.
    Such mal nach einem Thread von vor ca 1Monat. Da hat rapso dieses Verfahren breit ausdiskutiert 😃


  • Mod

    sicher nicht im extra thread, zuviel aufwand würde ich sagen.

    das prinzip ist sehr einfach.

    du hast deine realclock (gettickcount)

    eine endlosschleife

    while(true)
    {
    }

    darin dann dein Render();

    und eine schleife, die die logic so oft aufruft, bis sie in ihren zeitschritten wieder gleichauf ist mit deiner realclock

    also:

    while(m_LogicTime<GetTickCount())
    {
    m_LogicTime+=LogicTimeDelta; //z.B. 50ms
    }

    das wäre alles.
    wie du sehen kannst, wird die logic immer in gleichen zeitabständen aufgerufen sofern sie die LogicTime benutzt und falls die framerate höcher ist als das LogicTimeDelta, dann wird die logic übersprungen, was ja auch richtig ist.

    dinge die unabhängig von der logic sein können, wie z.B. der mauscursor,partikel,texturanimationen z.B. wellen können ja noch mit der rendertime (gettickcount) animiert werden. aber falls du ein realplay brauchst oder desgleichen, dann mußte das auch mit dem logicTime zeug machen.

    in dem thread den SnorreDev meint, hab ich auch nen quellcode gepostet.

    rapso->greets();



  • rapso schrieb:

    jedem in dem die logic frameabhängig läuft, da haste räscht.

    Vollkommen egal wie die Logik läuft, bei 10 fps kann man ja nicht mal mehr irgendwas richtig anvisieren. Sowas spiele ich dann nicht mehr.


  • Mod

    wenn du nur spiele spielst bei denen du zielen mußt... du armer 🙂

    rapso->greets();



  • rapso schrieb:

    wenn du nur spiele spielst bei denen du zielen mußt... du armer 🙂

    rapso->greets();

    a) ich sagte "anvisieren"
    b) bei welchen Spielen muss man das denn nicht, guckt man da nur zu?

    Also denk doch erstmal nach...


  • Mod

    bei wirtschatssimulationen, RTS, RPGs, advantures... muss man nichts anvisieren, der hardware mousecursor ist ja sowieso flüssig, da darf die grafik ruhig ruckeln, das spielen trotzdem viele leute auf ihren notebooks mit ihren SIS-scheiss intergrated 8mb grakas.
    bestes beispiel wären vielleicht die siedler oder patrizier reihen, da ruckelt alles auf solchen notebooks, außer der maus (und der logic), das einzige was man flüssig braucht.

    sei also net so vorlaut

    rapso->greets();



  • @rapso

    Habe ich es richtig verstanden?

    whil(TRUE)
    {
       UPDATE_OBJEKTE_ALLE_50_MILLISEKUNDEN()
       RENDER_BEI_JEDEM_DURCHLAUF()
    }
    

  • Mod

    anstatt

    UPDATE_OBJEKTE_ALLE_50_MILLISEKUNDEN()

    mußte

    while(m_LogicTime<GetTickCount())
    {
    m_LogicTime+=LogicTimeDelta; //z.B. 50ms
    }

    also so lange die logiczeit updaten bis du mit der logic gleichauf mit der "echtzeit" bist.



  • Bau ich gleich mal in mein Programm ein. 😃



  • rapso schrieb:

    bei wirtschatssimulationen, RTS, RPGs, advantures...

    Mit der Maus die Einheiten oder Buttons.

    Also denk doch erstmal nach...


  • Mod

    die werden nicht mit der mouse bewegt sondern von der logic und falls dir der hardware cursor nicht flüssig genug ist um etwas zu selektieren, solltest du mal nachdenken ob es nicht an dir liegt.. das ist alles ganz anders als bei deinem moorhuhn... also sei net so vorlaut

    rapso->greets();



  • Ich hab auch ein Notebook mit Sis graks (wie du sagst) aber man kann sie von 8mb auf ganze 64 stellen (shared memory)! Bringt aber trotzdem nix!

    Mein eigentliches anliegen ist, ob irgendwer weiß wie man eine Textur in dx2 lädt!(IDirect3DTexture) Ich sags gleich: is scheißkompliziert! mit queryinterface und so!
    Ich wollt nämlich ne kleine Engine für 2d spiele coden und bei der brauch ich kein dx9 aber ich hab nur das sdk und das von dx 1-3 (Standartmäßig in vc++)

    Es wär halt blöd wenn man dx9 für ein luschi 2d game braucht!

    Also wenn wer weiß wies geht schreibts mir!

    Nochwas hab grad ein neues Projekt rennen! Autospiel von oben! Hab schon ne kleine demo in vb gecodet(!falls man das so nennen kann!) und wills jetzt in c++ mit dx2 wenns geht schreiben! Wahrscheinlich muss ichs sowieso mit dx9 schreiben!

    Falls wer interesse hat meldet euch bei manuel_h87@yahoo.de !! danke!



  • Imho ist es mit DX7 einfacher, als mit DX2, da sich da doch einiges getan hat 🙄 (seither hat sich aber meines Wissens bei DX im DirectDraw Bereich nichts mehr getan, oder doch?)



  • rapso schrieb:

    etwas zu selektieren

    Da muss man auch anvisieren.

    Also denk doch erstmal nach...



  • Anonymous schrieb:

    rapso schrieb:

    etwas zu selektieren

    Da muss man auch anvisieren.

    Also denk doch erstmal nach...

    VISIEREN kann man nur durch ein Visier...
    Kimme und Korn, klärchen!??

    Und das ist in "Die Siedler" eher selten zu sehen...

    Oder Du setzt Dir'n Motorradhelm auf...!!

    Muahahahahahaha... 😃 😃 😃


  • Mod

    laut lex: ein ziel ins auge nehmen.

    aber vielleicht kann der unregestrierte ja auch einen button bei unter 10fps nicht mehr erkennen... menüs sind immer so performanceabhängig, besonders die von patrizia *lol*

    rapso->greets();



  • rapso schrieb:

    laut lex: ein ziel ins auge nehmen.

    Eben, und bei Allen Spielen muss man das angezeigte "ins Auge nehmen" (sonst bräuchte es nicht angezeigt werden, gelle?). Wenn das darumruckelt geht das nicht so gut, das das Auge an "glatte" Bewegungsabläufe gewohnt ist (in der Natur findet man auschliesslich solche). Also ich hab Recht und ihr nicht, Affe tot. Streitet ihr eigentlich immer so lange, wenn ihr falsch liegt? Naja ihr könnt den anderen ja weiter erzählen, das man mit 10fps wunderbarstens zock0n kann.

    Also denk doch erstmal nach...


Anmelden zum Antworten