Derby - Snail Racing and Betting for RPG Maker MZ
A downloadable tool
A race meeting your players can bet on. They read the race card (every runner's form, the going it likes, its silks and its price), put gold on a runner to Win or to Place, and watch the race run on a drawn garden course. Close finishes go to the judge's photograph. Winnings are paid into the party's gold.
The runners are racing snails, and every one is generated: its name, shell colour, shell pattern, spiral, body and silks. Every race draws its own field, course, going and prices. Nothing is loaded from an image file. One plugin command on an event opens the meeting; the event waits, and the net winnings can go straight into a variable.
And the odds are measured, not guessed. The bookmaker runs the same race model the player watches 2,000 times to price the card, then checks every price on a second, independent 2,000 races. The house keeps its edge whichever runner the player backs.
⚠️ Compatibility — the question you actually have
Tested against RPG Maker MZ with the stock scripts unmodified, verified by running the plugin in the real engine rather than only in tests.
Plugin Manager order:
DerbyCore.js— Derby core - generated snail stables, courses, a seeded race model and calibrated odds. Place ABOVE DerbyDraw and Derby.DerbyDraw.js— Derby draw - the racing snails, their silks, the garden courses, the race card, the photo finish and the winners' rosettes, all drawn in code.Derby.js— Derby - a race meeting the player can bet on: generated snail runners with real form, garden courses, measured odds, a photo finish and a payout.
It extends one core method by saved-original prototype extension, not replaced: Game_System.prototype.initialize.
Because nothing is clobbered, Derby co-exists with other plugins that patch the same seams, including large suites.
Five courses, six surfaces, a real race
- The Kitchen Garden, the Rockery, the Greenhouse, the Orchard and the Moss Bank, each laid in sections of moss, slate, sand, puddle, leaf litter and gravel.
- Some runners like it damp and some like it dry, and the going of the day (dewy, damp or dry) moves the field again. Reading the form pays: the form figures are the runners' real placings, and they carry on from the races the player watches.
- Runners surge, tire, and now and then stop to nibble a leaf. A commentary line calls the lead changes; a strip across the top shows the whole field on the course.
- A race card printed like the real thing, chalk prices (5/2, 7/4, Evens), a sepia judge's print for the photo finishes, and rosettes for the first three.
How the house keeps its edge (measured, not promised)
- Each price is set from the upper bound of the runner's measured chance and rounded down a ladder of traditional prices. Any bet that still reads over your Payback setting plus 4% on the independent check is shortened.
- Measured on a third, independent set of races (60 cards over two seed ranges, 4,000 races each, default Payback 85): the best bet on any card returned at most 0.89 of its stake, no bet returned more than its stake, and the average bet returned about 0.75.
- And it races like a race: over the same 60 cards the favourite won about 38% of the time, a runner at 8/1 or longer won about 10%, about 14% of races were decided by a head or less, and the lead changed hands about 3.6 times a race.
- With "Fresh races after loading" on (the default), a race is drawn when the player arrives, so reloading a save cannot replay a race whose winner the player already knows.
What is in the box
- Three plain, readable JavaScript files:
DerbyCore.js(stables, courses, the race model and the bookmaker),DerbyDraw.js(the drawing) andDerby.js(the scene and the command). - The Open Race Meeting command: races per visit (the last of a visit is the Derby), runners per race, course, going, smallest and largest stake, stake step, payback, a variable for net winnings, a meeting name and an optional seed.
- Keyboard, gamepad, mouse and touch; hold OK to watch at triple speed. Script call:
Derby.record(key). - Sounds are your project's own sound effects, chosen by name. The plugin ships no audio.
How it was tested
Run in the real RPG Maker MZ runtime from the exact zip you download, installed into a blank project: 74 in-engine checks, including every race the player watched matching the headless race model run from the same seed, on all five courses, bets settling to the gold piece, real keyboard and mouse input, the command waiting and setting its variable, and a save and reload. A further 48 headless checks, among them 3,000 races with none stalling and a price check proven able to catch a book priced 30% too long. A race frame costs 3 draw calls.
From the same studio
- Scales: generated counterfeit coin and weighing puzzles on a drawn brass balance, proven by a solver ($11.99).
- Pinfall: generated pachinko and plinko boards for the same tavern, calibrated so no spot on the rail can be farmed ($9.99).
- Escapement: generated clockwork gear puzzles for every lock in your game ($11.99).
- Strata: generated excavation digs, where the player chips back layered rock to free fossils and relics ($11.99).
- Sampler: generated picross charts, each proven solvable by line logic, finished as a cross-stitch sampler in a hoop ($11.99).
- Taproom: four tavern board games (Nine Men's Morris, Fox and Geese, Oware, Fanorona) played against your NPCs for a stake, on boards the plugin draws ($11.99).
AI disclosure: the code and the graphics of this product were made with AI assistance. It contains no audio and no narrative text.
| Updated | 4 days ago |
| Published | 10 days ago |
| Status | Released |
| Category | Tool |
| Author | CSAF — Core Systems Asset Factory |
| Genre | Racing |
| Made with | RPG Maker |
| Tags | casino, Cute, gambling, JRPG, minigames, plugin, Procedural Generation, RPG Maker, RPG Maker MZ |
| Languages | English |
| AI Disclosure | AI Assisted, Code, Graphics |
Purchase
In order to download this tool you must purchase it at or above the minimum price of $12.99 USD. You will get access to the following files:







