Great ideas here @CapuzR.
Some questions / feedback
type Identity = variant {
Principal : principal;
};
Is the intention here to allow for additional identity types to be added in the future? If so you might have to rethink this part a bit; check the feedback Andreas left here.
Applying his his advice above to the Results type…
type GamerStatsResults = variant {
Ok : GamerStats;
Err : opt GamerStatsError;
};
Next, regarding:
type GamerStats = record {
hours_played : Nat;
session_time_average : Nat;
extras : Value;
};
and
type Stats = record {
active_players : Nat;
unique_players : Nat;
peak_concurrent_players : Nat;
hours_played : Nat;
cycles_burned : Nat;
session_time_average : Nat;
extras : Value;
};
What are your thoughts about potentially typing extras
as a vec Property
? Essentially, making it easily interpreted as a map by consumers.
I think this would also make it easier to quickly find some agreement on, and implement, genre specific stats as you allude to. e.g. fps games implementing ICRC-14 MUST include accuracy : Float
in extras.