Skin Deep: Stresstester
Skin Deep will be released April 30, 2025! In the following weeks, I’ll be writing about the processes and development of Skin Deep.
Wishlist Skin Deep here!
To view all posts in this series, click here.
Skin Deep stresstester
This week I’ll be writing about a robot we wrote to help break the game.
Skin Deep has a lot of moving parts in it. One of the challenges was making sure the game remained stable in these many interactions. To help us out with this, we made a robot named “Stresstester” that just continually played the game all day and all night long.
(long-time readers of this site will recognize that this name was previously used in the development of Atom Zombie Smasher, for the exact same purpose. Ha. This was coincidental. I guess the name just stuck with me…)
Stresstester (the bot)
What does Stresstester specifically do?
- it loads a random map
- it makes the player invincible
- it makes the player roam around the level willy-nilly
- it occasionally attacks enemies
- it occasionally restarts the level
- it occasionally does a savegame and occasionally does a loadgame
So yea, it turns the player into an ominous invincible robot. The enemies shoot at you urgently, hopelessly, forever…
Stresstester (the program)
Confusingly, there’s a separate program also called Stresstester (I don’t know why I did that) that is a companion to the bot.
This is a C# winform program that detects when Skin Deep has crashed out. When it detects this, it restarts a new instance of Skin Deep.
The end result is you potentially get to accrue multiple crash logs throughout the day/night.
Et al
Making this was interesting because you have to be pretty careful that the bot itself isn’t creating new issues or reporting false positives. You’re making a bot that is pretending to be a human being and is doing its best to make the game believe it’s just a normal human person doing stuff in the game world. Can you imagine how embarrassing it would be if some crashes it reported were caused by the bot itself?
(this did happen and yes it was embarrassing)
As mentioned in a previous post, a downside of the stresstest bot is that you don’t really know what happened. I don’t have a great way to ask the bot to describe specifics on the chain of events, or to get any insight on things. It’s just a bot. We can get a code call stack and manually dig through the logs, and that’s basically it.
For any real testing you’d want human beings that you can talk to. Stresstest bot does have its place though, so we’ll continue to make variations of it for future projects.