CricketX
A VR cricket batting simulator for Meta Quest, where every ball is simulated, measured and explained.
- Role
- Lead Developer
- Studio
- XRev Studio
- Platforms
- Meta Quest 2, 3, 3S and Pro
- Built with
- Unity, C#, UI Toolkit, Firebase
- Ball physics
- 500 steps a second
By the numbers
A batting net inside a headset
CricketX is a virtual reality cricket batting simulator for Meta Quest, made at XRev Studio. You stand at the crease in a stadium, a bowler runs in, and you swing a Quest controller, or a real cricket bat with a controller mounted inside it. The game runs on the headset alone, with no PC.
It is made for players who want to train, and clubs and academies in Pakistan, Canada, Australia, UK and more use it. Around the training nets there are run chases against ten international sides, knockout tournaments, famous match situations that start from the real score, and pass-and-play matches for two players on one headset.
How the ball flies
While the ball is in the air, its flight is simulated 500 times a second. Swing acts only before the bounce, and only after a set point in the flight. Spin is split into two parts, so a topspinner dips, a flipper skids low and a cutter turns only off the pitch. Four pitch surfaces change the pace and the bounce.
There are 19 delivery types, from yorkers and bouncers to doosras and flippers, across 20 bowler types. The deliveries are not tuned by hand. I wrote a research document that sets a target for each delivery from bowling studies, coaching guidance and the Laws of Cricket, and it marks which numbers are our own tuning. A generator builds 26,880 deliveries from those targets, and a trajectory check tests every one. When a delivery missed its target, we fixed the generator, never the check, until all of them passed.
What players notice
- Mount a controller inside a real cricket bat, for real weight and reach.
- Relive real matches with the real numbers: walk in at 248 for 4, chasing 275, in the 2011 final.
- New training sessions reach headsets as signed files. No app update needed.
- A coach can ring your headset from a browser and talk you through the next over.
Every ball becomes a measurement
The game records where the ball pitched, how fast you swung, when you made contact and where your head was. Contact between bat and ball is rebuilt between rendered frames, so a fast swing still meets the ball at the right point. After each ball you see bat speed, timing, exit speed, launch angle, a pitch map and a wagon wheel.
A replay of the last ball plays on the big stadium screen in front of you or behind you. Batting Analysis filters your balls by bowler, delivery, length and outcome, then lists your strengths, what needs work and what to focus on next. Clips you save can go to the community Discord, and from there to the CricketX website.
Made for Quest, and for a real bat
Hold the controller like a bat, or mount it inside a compatible bat for real weight and reach. A calibration step saves your grip as a preset, and a second controller can be strapped to the front pad to track it. Passthrough shows your real room while you bat, and you can touch the floating panels with the bat as well as point at them.
The game asks the headset for 90 Hz. Session files are read and checked in the background, away from the thread that draws each frame. A two-second freeze when content first loaded now takes 31 milliseconds at most. You can also play offline from content already on the headset, and guest progress can be merged into your account at the next sign-in.
New sessions without an app update
Training modes are data, not code. A session is one file with a timeline of deliveries, messages and commentary, plus rules and up to three star goals. A core written in plain C#, with no engine code, reads each file, checks it and runs it once as a dry run before any player sees it.
New sessions and bowling data are signed and sent to headsets that already have the game. Content goes to a testing channel before it goes live, every release starts with a dry run, and a signed policy can switch any item off. New content is also replayed through older versions of the game first. Players can even build their own sessions in the headset from approved templates.
What I built, and what the team built
As Lead Developer I merge the whole team's work into one codebase and make nearly every release build. I built most of the session platform and all of its signed publishing. I also built the UI Toolkit framework behind every in-headset screen, the offline save system, in-app purchases, tournaments, the replay buffer, crash logging and the release pipeline. I also wrote the rules the team works by, including the rules for the AI agents that work inside the Unity editor.
CricketX is a team game. Teammates led the fielding and the commentary, and did much of the stadium art. They also built the voice calls that let a coach ring your headset from a browser and talk you through the next over.
What I used here
Game Feel & UX
Every hit buzzes the bat hand, and the swing sound rises with bat speed.
- The hit sound changes with bat speed and where the ball meets the bat.
- A replay plays on whichever stadium screen you're facing.
Level Design
Sessions are written as data: a timeline of deliveries, trigger rules and star goals.
- We generated 26,880 deliveries, and every one passed the research-based checks.
- Colour-coded balls warn of a steep bounce, a slower ball or a low skid.
UI Development
In-headset screens are real panels in the VR world, all sharing one theme.
- Seven chart types, including radar, pitch map and wagon wheel, are drawn in code.
- Scrolling is tuned for VR pointers, which magnify small wrist movements.
VR Interaction & Comfort
Hold the controller like a bat, or mount it in a compatible bat for true weight.
- A second controller can be strapped to the front pad to track it.
- In a session, a high ball can be aimed at the player's own head height.
- Switch on a view of your real room while you bat.
Game Architecture
A mode built from existing parts needs no new code, just a data file.
- Ten shared catalogues hold the reusable parts: deliveries, scoring and win conditions.
- Content updates are signed, versioned and can roll back in one step.
Performance
The headset is asked for 90 Hz, and the ball is simulated 500 times a second while it flies.
- A 2-second freeze at startup is gone; the worst frame now takes 31 milliseconds.
- In gameplay, each headset model gets its own graphics settings.
Testing & Quality
Every session file, rule and build step has tests, and a headset build passes the suite before it ships.
- A Quest 2 stress test under heavy memory load ended with no crashes or freezes.
- Three months of crash reports were traced to their root causes and fixed with tests.
- New content is replayed through older game versions before it goes live.
Tools & AI Workflow
A playtest driver plays whole sessions to a win or a loss at 12× speed in the editor.
- AI agents work inside the game editor through a bridge with over 100 skills.
- Publishing tools always start with a safe dry run.
Release & Publishing
New sessions and bowling data go live signed and versioned, with no app update needed.
- Every build uploads its crash symbols automatically.
- Content moves through two signed channels: a testing channel first, then live, and every release is dry-run before it goes out.
Team Leadership
I lead a team of 10 engineers across several VR and web productions at once.
- Shared coding and commit standards keep merge conflicts rare across several productions at once.
- Plain-English commit messages become release notes automatically.
- Risky changes, like physics or security rules, need owner approval first.
End of the case studyThanks for reading.
More case studies
Working on something like this?
I'd love to hear about it. If there is a game or a project where this kind of work would help, send me a message.






