At the moment experiments only support virtual goods.
It would be great if we could create an experiment that instead of using virtual goods, it would use a set of custom parameters. This way we would be able to create game Events using Experiments.
Custom parameters could be generic fields (e.g. image below) that we could then access in code.
Could you go into more detail here ? What do you mean by create events using experiments ? How would users send these events ? Would be happy to hear more of your thoughts on this.
In our game we have setup events. These may include giving a coin multiplier, or xp multiplier in a particular game mode in a specific day for all player in a segment.
On the server, we currently have an admin screen that lets us create these game events specifying the event type (string), the date, the game mode (string) and a quantity in the form of int and string. This quantity will be your x2, or x3 and the string value is just a customised value for a specific event type.
We also display the event status: Inactive, Active Soon, Active and Expired.
The admin screen creates a metadate list of events, so only the server UI can modify them.
During login, we find an active event data and send that to the player with the event details. This way the event can be displayed on the client UI. We keep track of when the event is about to expire by checking the end date. We also have a script that allows us to send a push notification when an event is about to be active to the player.
This system is very similar to how Experiments work. It would be nicer to have the ability to setup game event as described above using Experiments as I'm sure many other people would use it and for us it would be easier to implement and maintain.
On your Experiment step 2 "Variants", you currently have a dropdown of all virtual goods in the game. This could have a custom option that allowed us to setup parameters instead of selecting a virtual good. This would be a new pre-defined property where we could modify the values. For example, instead of displaying the selected virtual good fields, you could display the property values and we tick which ones we want to modify.
On your Experiment step 3 "Player Pool", it would be nice to have the option to select all player for the "experiment" instead of filtering them. The Variant Configuration would then display the ticked property values we selected so we can specify values.
If displaying a property makes it hard to create the UI, we could just have generic fields like int value 1, string value 1, int value 2, string value 2, etc.
On the "Measurements" tab we could just select a gamesparks event script of our choice, for example, one where the player sends an event saying that it had received a valid game event.
For us to be able to display the experiment details on the client side, the Spark.getPlayer().getExperimentSegments() would have to return more than just the experiment Id and segment Name. We need the actual property names and values, end time, etc.
I hope this makes sense. Happy to provide more details.
Thank you for elaborating on your points. These are great use-cases we can bring to the platform team when we discuss this further.
We'll have an update for you when we decide to expand the Experiments system.