• Mitspieler gesucht? Du willst dich locker mit der Community austauschen? Schau gerne auf unserem ComputerBase Discord vorbei!

Kann man Zeit beschleunigen?

Die Uhrzeit in Windows kommt nicht zwangsläufig vom "BIOS".
Man sollte zwischen der RealTimeClock (RTC) und der System-Clock unterscheiden.
Wie diese beidensich synchronisieren oder nicht synchronisieren kann man bei MS nachlesen.
Hier aber ein interessanter Artikel der einem einen etwas tieferen Einblick gewährt, wie die Synchronisierung der System Clock - zum Beispiel mit einem externen NTP-Server - von statten geht:
http://www.windowstimestamp.com/PartIIAdjustmentofSystemTime.pdf

Möglichkeiten das gewünschte zu erreichen gibt es einige: "Die Windows-Uhr schneller laufen lassen".
Formuliert man es so, kommt sicherlich ein "AHA"-Effekt. Anders bei der Frage "Wie kann ich die Uhrzeit schneller laufen lassen?".

Die RTC schneller laufen lassen dürfte aus vielerlei Hinsicht eine sehr schlechte Idee sein.
Und ja: Es gibt auf dem Mainboard ein Quarz. Ich hoffe es verwendet niemand ein Board, das sich mit der Frequenz des Wechselspannungsnetzes synchronisiert - wenngleich Weckuhren dies noch immer machen.

Die Idee mit der VM ist gewiss besser. Diese synchronisieren sich nicht mit dem BIOS des Hostsystems sondern werden vom Hypervisor - eben der VM-Software, nachgezogen.
Doch diese Aussage ist nicht so ganz korrekt. Daher sollte man erwähnen, dass eine "Uhr" zweigeteilt zu betrachten ist:
1. Das Namensschildchen "xx:yy:zz.aaa" mit xx=stunden, yy:minuten, zz:sekunden und aaa:millisekunden.
2. periodischer Tick

Welches Namensschildchen die VM initial anzeigen sol mag sie durchaus vom BIOS des Hostsystems bekommen, die Ticks jedoch bekommt sie von der VM-Software und daher ist diese, je nach Software und Version eher unzuverlässig, da die Software beschäftigt sein kann, bis sie dazu kommt ihre VM-Gäste anzu-tick-en. Der Host-Tick wird hier nicht einfach weitergereicht.
https://kb.meinbergglobal.com/kb/time_sync/time_synchronization_in_virtual_machines

Man kann es folgendermaßen lösen:
1. Den VM-Gast als ntp-client einstellen
2. Im Host einen ntp-Server aufstellen - oder gar in einer 2. VM
3. dem NTP-Server sagen, dass er schneller "ticken" soll - und damit die Namensschildchen der Uhrzeit schneller hochzählen.

<- Solch einen ntp-Server der im Freilauf mit unterschiedlichen Tickgeschwindigkeiten konfiguriert werden kann, habe ich auf die schnelle nicht gefunden. Vielleicht auch, weil eine Anwendung von "Time Service Spoofing" krimineller Natur ist: "https://kb.meinbergglobal.com/kb/time_sync/time_service_jamming_and_spoofing

Man könnte auch folgendes Versuchen:

In der VM ein Script/Programm laufen lassen, dass die Systemuhr "beschleunigt".
Also eine Art "Zeit-Ent-Synchronisierung" durchführt:

"Wenn X Ticks vorbei dann:
Addiere D Sekunden auf Uhrzeit"

Genau das macht zum Beispiel der Zeitservice unter Windows. Da aber mit dem Ziel, die bereits weggelaufene Systemzeit dem Timing-Master langsam anzugleichen.
Dies wird im obigen Link (ganz oben) etwas angerissen.
Ob man den w32tm-Dienst dazu missbrauchen kann/sollte die Uhrzeit zu beschleunigen/de-synchronisieren, sei noch offen. Zumindest könnte man den Adjustment-Wert dahin gehend ändert, dass er vom Timing-Master sich entfernt, statt sich diesem zu nähern.

Einfacher aber eben genau das, was man auch von Hand machen würde:
Einfach die Uhrzeit verstellen (Systemuhr) und dies in periodisch, also per Software - die man selbst schreibt.
Es gibt Vorschläge das mit VB-Script zu bewerkstelligen - kommt aber ganz auf das Spiel an, das man damit austricksen möchte, oben allgemein was man denn vorhat.

Wichtig ist jedoch, dass man die Uhrzeit nur allmählich ändern sollte, da sonst einige Anwendungen die Grätsche machen könnten (bei Änderung >5 Minuten) - in einer VM sollte das Risiko geringer sein oder Null - da man die VM da man im Zweifel die VM in die Tonne treten kann (daher vorher ein Snapshot/Backup der VM erstellen).

Wer es nicht Millisekunden genau haben möchte könnte auch, falls er Exel zur Hand hat, folgendes probieren:
https://www.tutorials.de/threads/systemzeit-einstellen.230645/

Mag eine seltsame Art und Weise sein, aber mit VBA kann man allerhand anstellen und muss nicht gleich eine IDE installieren. Notfalls kann man das auch per Script/Batch usw.


Zur Cheat-Engine:

Die Cheat-Engine wird nicht wirklich die Animationen Beschleunigen. Wenn eine Grafikkarte am Röcheln ist, wird sie nicht wirklich noch schneller arbeiten können. Jedoch sind in einfach gestrickten Spielen, die Animationen lediglich wir ein GIF, bestehen also aus einzelnen vorher gemalten Bildern/Bildsequenzen, die nacheinaner eingeblendet werden und zwischen je zwei Bildern eine gewisse Zeit gewartet wird.
Diese Zeit kann nun Cheat-Engine kleiner einstellen -nehme ich an, ist zumindest das naheliegendste.
Hier interessiert das Spiel dann auch nicht die Uhrzeit, sondern nur ein Zeit-Abstand, Anzahl von Ticks, Zeitdifferenz.

Auch wenn die RTC und die System-Clock noch immer gleich ticken, so ist die Zahl der Ticks/Sekunden die gewartet wird eben kleiner.

Die Wartezeit bis "irgendein Zauber wieder aktiv ist" oder was auch immer in dem Spiel vorkommt, hat dann ebenso eine Wartezeit definiert. Wer Cheat-Engine nutzen kann und mit ihr herumspielt findet eventuell genau diesen Zähler und kann ihn verändern und müsste dann nicht an der Uhr herumspielen. Doch das kann wiederum sehr tricky sein, gerade wenn die Macher mit dem Spiel Geld verdienen wollen.

Ein verändern/kontinuierliches verändern/verlangsamen/beschleunigen der Uhrzeit sollte für gut gemachte Spiele dann auch nichts nützen: Statt die Start-Uhrzeit und Jetzt-Uhrzeit zu vergleichen zählt man die Ticks:
Windows/ und auch wohl jedes andere OS bietet die Möglichkeit nicht nur die Uhrzeit, sondern die "Seit Start des Betriebssystems verstrichene Ticks" auszulesen und dies als Start-Zeit-Wert zu merken und mit dem Jetzt-Tick-Wert zu vergleichen.

Ein Verändern der Uhrzeit, sogar mit einem tweak-baren ntp-Server würde hier dann nichts bringen.
Denn sowohl die RTC als auch die Systemuhr würden ja nur ihr "Namensschildchen" ändern, nicht aber die Tick-Periode (vom Quarz kommend) und die "Anzahl Ticks seit Systemstart".

Für derart gut gemachte Programmierung (was inzwischen eh Standard sein sollte für kommerzielle Spiele) würde es tatsächlich notwendig sein entweder mit der Cheat-Engine deeply in den Speicher des Spiels einzudringen oder den Time-Interrupt-Timer der VM zu beeinflussen.
Ein Beschleunigen wird dann aber eher nur in engen Grenzen möglich sein, eine Verlangsamung hingegen in weiten Grenzen, so man irgendwie die Möglichkeit hat,die VM-Software zu veranlassen, ihre VMs langsamer anzuticken.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: CMDCake
Zurück
Oben