Difference between revisions of "OpenTasks/Generic/Add Testing Framework Engines"

From ScummVM :: Wiki
Jump to navigation Jump to search
(Move OpenTasks onto unique pages with an Infobox and Category so we can collect them all up onto the summary page.)
 
(Close task (GSOC 2012))
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{Infobox_OpenTasks|
{{Infobox_ClosedTasks|
taskname=Add a testing framework for ScummVM's engines|
taskname=Add a testing framework for ScummVM's engines|
gsocworkload=100%|
gsocworkload=100%|
techcontact=[[User:Sev|Eugene Sandulenko]]|
techcontact=[[User:Sev|Eugene Sandulenko]]|
subsystem=Generic/Engine|
subsystem=Generic/Engine|
taskstatus=GSoC 2012 ([[User:jakimushka|jakimushka]]), In progress
}}
}}


Line 12: Line 13:
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.
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 [http://sourceforge.net/tracker/index.php?func=detail&aid=1738058&group_id=37116&atid=418822 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.
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 [http://sourceforge.net/tracker/index.php?func=detail&aid=1738058&group_id=37116&atid=418822 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.


===The Task:===
===The Task:===


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.
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 external 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.
The format should also include to give a name to the recording, keep a screenshot, and optional saved game, 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.
Additionally, an automation to create screenshots at specified intervals should be implemented, so the output could be compared.

Latest revision as of 09:47, 7 May 2012

Closed Task
Task Name Add a testing framework for ScummVM's engines
Technical Contact(s) Eugene Sandulenko
Subsystem Generic/Engine
Status GSoC 2012 (jakimushka), In progress

Background:

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.

The Task:

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 external 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 saved game, 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.

Required Skills:

  • Good C++ skills.
  • Knowledge about a backend is preferable.
  • Knowledge about an engine is preferable.

Also required:

  • 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).