This library replicates the data structure that Rec Room Weekly Challenge Configs use. This data was reverse engeneered from the 20200306 version of Rec Room, with data types from 20210813. No reason in particular, just had the builds at the time XD. This format didn't change for most of Rec Rooms life anyways, so use it in 2017, use it in 2023, use it in 2019! All will most likely work (though like may require some looking into game code to see if challenge types exist XD)
For many cases, you'd wanna build a regular challenge. Use ChallengeBuilder to do that! For basic count challenges (for progress on the thing), use ChallengeCountChallengeBuilder! Example with RequiredRoomSceneLocationChallenge
public Dictionary<string, object> GenerateBasicChallenge()
{
return ChallengeBuilder.CreateBuilder()
.WithCondition(new RequiredRoomSceneLocationChallenge(RoomSceneLocations.REC_CENTER))
.Build();
}Use these to reset a challenges progress. For example, get 10 hits in the same game of Paintball on the River map
public Dictionary<string, object> GenerateOneGamePaintball()
{
return ChallengeCountChallengeBuilder.CreateBuilder(10)
.WithCondition(new RequiredRoomSceneLocationChallenge(RoomSceneLocations.RIVER))
.ResetCondition(new RequiredEventTypeChallenge(ChallengeEventTypes.GameEnd))
.Build();
}Many challenges are just "macros", or just challenges that add others. These require DRAMATICLY less work. For example, hitstreaks
public Dictionary<string, object> GenerateHitstreakChallenge()
{
return new HitstreakCountChallenge(3, 5);
}Of course, youd want more control, like hitstreaks in paintball maps (see Reset Conditions)
You can simply use most serializers, as it just is a Dictionary<string, object>(). Rec Room expects it as a string anyways.