Implementation Record and Replay Feature

Iaron da Costa Araújo

New Member
Contributor
Name: Record and Replay Feature
Summary: Terasology now has a feature to record some events as you play the game so those events can be replayed later. These events can also be used in a testing environment to create acceptance tests.
Scope: Testing/ Quality Assurance
Current Goal: Create more Tests using this new feature, expand Record and Replay Support, improve the UI.
Phase: Maintenance
Curator: Iaronaraujo (Iaron da Costa Araújo)
Github:
https://github.com/MovingBlocks/Terasology/tree/develop/engine/src/main/java/org/terasology/recording
https://github.com/Terasology/ModuleTestingEnvironment
Wiki Pages:
https://github.com/MovingBlocks/Terasology/wiki/How-to-Use-Record-and-Replay
https://github.com/MovingBlocks/Terasology/wiki/Replay-Tests
https://github.com/MovingBlocks/Terasology/wiki/Record-and-Replay-Code-Details
Showcase Videos:



Possible Future Work:

Right now, there is a Replay Test that checks the destruction of a wood block with bare hands and then with an axe. A good idea would be to do something similar, but for a shovel, pickaxe, stone, and dirt. Another example of a Replay Test could be to record the player jumping from a high place and then checking the damage the player took.

Another possible future work is to improve the event recording to the point that is will need only Input Events. This way, it would be possible to record a set of actions and replay it in any world to see its effect!

Overview:

With the Record and Replay feature, it is possible to play the game while recording some events, mostly Input Events, and then replay them. A new Module was created to add testing support to the replays, making it possible to write JUnit tests for the replays that can be used as Regression and Acceptance tests. With them, it is possible to assure that the player is being spawned in the correct place, that an axe always causes more damage to a tree than a pickaxe and many more possibilities!

Right now, there are 5 Github Issues related to the topic:
 
Last edited:
Top