Events, client grants, and achievement awards only ever affect the calling player’s own account. Client-grantable items can never carry a price. Grant rules cap what any event is worth — server-side.
Events + grant rules (the recommended path)
Your game emits semantic events; the creator attaches rules that the platform evaluates:minCount (cumulative events required), maxPerPlayer
(total firings), cooldownSeconds — are enforced by the platform, so even a
player who fakes events is capped at what an honest player could earn. Event
names are slugs (a-z, 0-9, -, _); emit a small set of meaningful
events (level_complete), not one per tap. Events are rate-limited at
600/hour per player per game.
Achievements
Creators define achievements per game (POST /api/games/:id/achievements
with { key, title, description?, secret? }). Games award and display them:
submitScore — which is fine
because achievements carry no economic value. Secret achievements are masked
in list() until earned. Prefer an award_achievement rule when the trigger
is an event you already emit.
Free item grants
Items the creator marksgrantable can be handed out directly from game
code: