OpenTasks/Generic/Add Testing Framework Engines
|Task Name||Add a testing framework for ScummVM's engines|
|Technical Contact(s)||Eugene Sandulenko|
The number of ScummVM supported games grows with each release. Since 0.8.0 we are performing extensive prerelease testing. Basically, it is game replaying to find regressions. This becomes a somewhat tiresome process and takes up a lot of time.
In fact there should be no changes in the gameplay in most cases, so event recording and proper replaying should be enough. There is some code for that based on the Action recorder patch, but the recordings are not played consistently. The main problem is that there is no guarantee of the events to be in sync with other engine parts, so the playback may deviate, depending on the machine speed.
Implement proper event recorder and player. It should be multiplatform and not depend on the CPU power. I.e. it should guarantee proper event sequence and time. It should store mouse, keyboard events, as well as generated random numbers and any other functions dealing with the extern world such as time. Basically it should be implemented as some globally blocking cycle which will be driven by recorded events.
The format should also include to give a name to the recording, keep a screenshot, and optional savegame, so arbitrary portions of the game could be recorded.
Additionally, an automation to create screenshots at specified intervals should be implemented, so the output could be compared.
The GUI should preferably include an overlay image which will indicate that the game is being recorded or played back. But it will require some work in backends.
Optionally, a step-by-step mode with the ability to pause the playback at any place could be implemented. And a big bonus would be the ability to annotate the recordings with on-screen messages.
- Good C++ skills.
- Knowledge about a backend is preferable.
- Knowledge about an engine is preferable.
- Access to a non-desktop testing device (PSP, NDS, PS2, WinCE or Symbian mobile, etc.) and the ability to compile and run ScummVM on it (the ScummVM team would help with compiling and running).