Jetzt lässt sich natürlich darüber streiten, ob eine Game-Main-Loop einer Messageloop nicht doch irgendwie arg ähnlich ist
MessageLoop: (Pseudo)
Code:
while true do
begin
PeekMessage();
case Message of
WM_FOO: ...
WM_KEYBDEVENT: VerteileAnAktivesControl;
WM_PAINT: ZeichneNötigesNeu;
...
WM_CLOSE: Terminate;
end;
end;
Gameloop: (auch Pseudo)
Code:
while true do
begin
GetAsyncKeystateUndInterpretiereInputState;
UpdateSpiellogik;
Render;
WennExitStateDannExit;
end;
Bei beiden Systemen verbirgt sich der ganze restliche Rattenschwanz hinter, finde ich, strukturell doch arg ähnlichen Abläufen. Nur werden bei Spielen spätestens ab interner Verarbeitung keine Windows-Messages mehr benutzt, sondern es ist entweder eine Statemaschine ähnlich gebaut, oder man hat ein eigenes, oft THread-Basiertes Signaling-System. Am Ende aber Jacke wie Hose, es ist sicherlich nicht die
WinAPI die FMX so bremst
PS: Und das Spiele "halbgare" Inputs irgendwie anders handhaben wäre mir auch unbekannt. Das trifft eher auf Netzverkehr zu, wo ein Client Vorhersagen über die eventuelle Bewegung anderer Spieleravatare trifft, und nach einem Updatesyklus vom gemeinsamen Server notfalls nachsynchronisiert. Gerade bei FPS Spielen ist eine ultra schnelle und korrekte Eingabeverarbeitung doch das A und O.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)