Agentic player analytics for indie games
Ask your game why players quit.
Track player behavior, ask your data questions, and see the evidence behind the answer.
Send AI personas through your build before a player does. Bring their findings, your Player Reports and your design intent together in Studio Intelligence, decide what to try next, and keep what you learn.
One autoload script. Batched sends, an offline queue, and no server for you to run.
The analyst
See a drop. Investigate what might be behind it.
Ask in plain English. It picks its own tools, runs read-only queries against your events, and answers with the numbers it used.
You asked
Why do players quit level 3?
- get_level_stats(level: 3)
- get_player_flags(flag: "rage_quit", window: "14d")
- run_sql("deaths by checkpoint, level 3")
- get_retention(cohort: "reached_level_3")
Level 3 is where the funnel breaks. 41% of players who start it never finish, against 12% on level 2.
The deaths are not spread out, they cluster in one place.
68% land within 15 seconds of the second checkpoint,
and 214 players died there five or more times in a
single session before closing the game. Those sessions end with no
level_completed event, which is what flags them as rage
quits.
It costs you players later, too. Anyone who clears level 3 retains at 44% on D7. Anyone who stalls there retains at 9%.
grounded in 1.24M events, Hollow Verge, last 14 days
The product
This is what your game looks like.
Screenshots from the demo workspace, in the order the dashboard puts them: pick a project, build against it, read the live data, then work out what it means. Included allowances help you get started.
Pick a project, then an environment
The sidebar groups the app by what you are doing: Build, Live data, Understand, Studio. The switcher picks a project, and the environment control beside it picks which of that project’s builds you are looking at.
Build
Design documents, the source scan, and AI personas playing your build. These belong to the project rather than to one environment, because the repository and the design are the same whichever build you point them at.
Live data
Everything computed from the events one environment actually sent. Overview, Player insights and Events each carry an Include AI personas switch, because persona sessions are real rows in the same store and are excluded by default.
Understand
The parts that read across everything else: an investigation that ties intent to evidence to a decision, the analyst, and the findings your studio keeps.
Studio
One studio, one allowance, one bill. Roles decide who can spend it.
Ravensight Playtester
Somebody should play this before a player does.
A CLI you run against your own build, on your own machine. It hands your game to AI personas who play it differently, and each comes back with a report: what worked, what it got stuck on, and whether it would have kept playing.
Your source and your build never leave your machine. Persona sessions
land in your event store tagged synthetic, excluded from
every number unless you ask for them.
Plays any web build, including Unity WebGL and Godot HTML5, or a native Godot project. Native desktop, iOS and Android builds are not driveable yet.
You ran
npx ravensight-playtest run
- 2 persona runs, $2.00 against a $40.00 balance. Confirm?
- curious-kid played 14 minutes, 41 actions, 6 findings
- grumpy-veteran played 15 minutes, 63 actions, 4 findings
- aggregate: 10 findings reduced to 7, reports uploaded
Top issue, both personas. Level 3's second checkpoint does not read as a checkpoint. Both went back for it after dying, and neither worked out it had already saved.
curious-kid gave up there. grumpy-veteran finished the level and said it would not have, on its own time.
charged at register, refunded for any run that did not play
The studio context graph
Every game you ship should teach the next one.
Analytics tools forget. You work out why level 3 was losing people, close the tab, and two years later build the same trap into a different game. Ravensight keeps the conclusion, not just the data.
Answers become dated findings that belong to your studio rather than to one game. Confirm one and it earns its place, archive one and it stops being used, and nothing counts as true until you say so.
Before you build it
A boss on level 4 that blocks progress until you beat it.
- [Hollow Verge] level 3 gate: 41% never cleared it, D7 fell to 9%
- [Ashfall] optional boss beaten by 78%, mandatory boss by 31%
- [pattern, confirmed] hard gates cost more players than they pace
You have shipped this shape twice. Both times the gate was the single largest drop in the funnel, and both times the players who stalled there did not come back.
Ashfall's optional version of the same fight cost you nobody. On your own numbers, the problem is the gate rather than the boss.
grounded in 2 games, 7 findings, oldest observed March 2024
In the box
Everything in the box.
Analytics, AI playtests, Player Reports and studio decisions in one workspace. No feature tiers or per-seat fees.
Studio Intelligence /studio-intelligence
Investigate player behavior, compare releases and record what you will try next. Review evidence from comparable games and public sources, then turn selected findings into marketing and publisher drafts. Every source stays traceable, and your game facts remain separate from external claims.
Drop-in Godot SDK Ravensight.gd
One autoload script, four fields in the Inspector, done. It handles device IDs, session tokens, batches of up to 50 events per call, an offline queue with exponential backoff, and a server-side kill switch you can flip without shipping an update.
Ravensight.track_event("level_completed", {
"level": 3,
"score": 15000,
"time_seconds": 87.4
})
Insights without setup /players
Rage-quit, stuck, and engaged players are flagged as the data lands. D1 and D7 retention cohorts and level completion funnels are computed server-side, so there is nothing to configure first.
Player journey graphs /journeys
See the routes players actually take through your game, including the loops they get caught in. The dashboard ranks where players stop, which transitions bleed players and where they bounce back and forth, with the raw transitions underneath. Ask the analyst about them, or query them over MCP.
Keep up with player behavior weekly digest
Background digests summarize recent play and suggest where to look next. Generated work uses the shared AI allowance and prepaid balance.
Context for your coding agents /mcp
Connect your AI client to scoped game analytics and studio findings with a personal access token. Each token carries its own monthly usage budget, set by the owner, and draws from your prepaid balance.
Find where players drop off /funnels
Name an ordered sequence of two to eight events and see how many reached each step, how many were lost against the step before, and the average and median time it took them. Count players or sessions, filter by an event property, and ask the analyst the same funnel across every game in the studio at once.
Find gaps in your instrumentation /code
Connect GitHub and every push scans what changed, or upload a source ZIP or submit from CI. Compare what your code reports with live telemetry, with file references behind each finding. Get a quote before a scan; later scans focus on changed files, and read-only access is all we ask for.
Plan the next game with what the last one taught you /design
Write your design docs here and talk to an analyst that already knows your studio. It reads your findings across every game you have shipped, proposes edits to the document in front of you, and leaves the writing to you: nothing changes until you accept it. Describe a plan and it will tell you which of your own past findings argue against it.
See what the player saw /player-reports
Add the optional Godot report overlay so players and QA testers can capture a screenshot, highlight an issue and leave a message. Triage reports, read the session events that led up to one, group them into issues and verify the fix.
AI personas play it before anyone else does /playtest
Run the Ravensight Playtest CLI against your own build, on your own machine. It hands your game to personas with different ways of playing and brings back a report each: what worked, what they got stuck on, and whether they would have kept going, with findings you can mark real, intended or duplicate. Mark one intended and the next run stops reporting it.
Your source and your build never leave your machine, and the personas' sessions land in your own event stream tagged synthetic, excluded from every number unless you ask for them.
Dev events never touch your real numbers /settings/projects
A project is one title. Its production, staging and development environments are separate games underneath, each with its own ingest key and its own event stream, so a debugging session cannot move your retention. Pick the project, then pick the environment.
Ask what your own payloads say Property breakdowns
Break any top-level key your events carry down by value: ranked values with event and player counts, an "other" bucket and a daily series. Then segment the player list by the same key to read the sessions behind a number.
See what happened after you shipped something /marketing
Record the ads, videos, streams, posts and sales you run outside the game, by hand or from a CSV export, and the platform measures the new players in the 72 hours after each one against what a normal week would have brought anyway. It is a correlation with a stated method, not proof, and touchpoints without a fair comparison say so plainly instead of showing a made-up multiple. They show up as markers on your player charts too.
Think out loud with your whole studio in the room /brainstorm
A board of cards beside a partner that has read your findings, your confirmed patterns, what your touchpoints did and what your titles earned before it answers. Every card can cite the evidence behind it, checked against your own studio, and the partner adds cards only to the board it is sitting at. Start blank, or fill a board from what the studio already knows for one AI unit, then promote the cards worth keeping into a design brief.
What each title earned, in your own numbers /sales
Record sales per storefront, period and currency by hand, or import any store export through a column mapping you confirm before a row is stored. Totals stay per currency with no converted figure, a monthly row is never added to a daily one, and a title with a release date gets its first ninety days as a launch curve. Recorded numbers only: nothing is read from a store on your behalf.
Your studio, not just your login Teams
Invite your team by email as an admin or a member. Everyone shares one allowance and one bill, billing and member management stay with the owner, each person mints their own access token for their own agents, and the audit log records who did what.
Your events, queryable directly run_sql
Your events are yours to query. Write raw SQL against your own event store, read-only and scoped to your game, whenever you want the number yourself.
select level, count() as deaths
from events
where event = 'player_death'
group by level order by deaths desc
Why Ravensight
They hand you dashboards. Ravensight hands you answers.
Most analytics tools were built for mobile free-to-play or for the web, and it shows. You get a wall of charts tuned for someone else's business model, and the job of turning them into a design decision is still yours.
Ravensight starts from the question instead. You ask, the analyst runs read-only queries against your own events, and you get an answer with the numbers behind it. The charts are still there when you want them, they are just no longer the deliverable.
Godot first, because that is the engine we ship in. JavaScript, Unity, Unreal, C++, Odin, iOS and Android SDKs are all live, and anything else speaks plain HTTP.
- Daily active
- Sessions
- D7 retention
- Level 3 funnel
- Session length
- Deaths
Ravensight
41% of players who start level 3 never finish, and 68% of those deaths land within 15 seconds of the second checkpoint. It does not read as a checkpoint, so they go back for it after dying.
the same six numbers, read for you
Pricing
Every feature. Pay for usage.
Start with included usage. Add a prepaid balance as you grow. No subscription or per-seat fee.
Included free, every month
$0 no card required
Start collecting events and exploring your game with no card required. Your studio shares one monthly allowance.
- 1,000,000 events per month
- 10 shared AI units per month
- Unlimited games and team access
Beyond the free allowance
From $5 load a balance, spend it any time
Usage draws from your balance. When it runs out, paid work stops unless you enable auto-recharge. Your balance does not expire.
- $0.05 per additional 100,000 events
- $0.20 per additional AI unit, shared across analysis and studio work
- Everything else draws on the same balance: AI playtests and fix attempts, source scans quoted before they run, Player Report screenshots, and MCP access for your own agents