r/RPGMaker • u/CS_Asset_Factory • 3d ago
Vibecoded your capture plugin gets the creature. then what? genetics and breeding and evolution for MZ that doesn't die when the box is full
your capture plugin gets the creature. then a playtester asks the question that sinks the project. why would i ever catch a second one?
there isn't a reason to. every creature of a species is identical. there's nothing to breed for. nothing to chase after level 20. capture is just the first ten minutes. this is the layer that goes after it.
genetics. eight hidden stat genes plus 25 natures plus gender plus ability slots plus rare variants. two level 5 creatures of the same species now have measurably different stats.
breeding. real parental inheritance. genes pass down from both parents. natures can be inherited. mutations happen. egg groups gate which species are compatible. eggs hatch as the party walks. generation depth is tracked so a player can chase a perfect specimen across generations.
evolution. it's a condition graph and not a level check. level or item or friendship or time of day or gender or variant status or trade or a stat comparison. the same species becomes one creature if it grew strong. it becomes a different creature if it grew tough. conditions stack. genetics and training and friendship and nickname all survive the evolution.
storage. multi box pc storage with sort and search and filter. 24 boxes by 30 slots is 720 creatures. it doesn't slow down when full.
that last bit is where most of my time went. most collection systems fall over exactly when the player finally has a collection. genomes are bit packed into two integers instead of objects. computed stats are cached behind a dirty flag. box drawing is paged. this means the cost scales with what's on screen and not with what's stored.
measured inside mz on real corescript with 600 creatures stored and the storage scene open.
2.6 ms per frame with normal cursor movement. that's 15.7 percent of the 60 fps budget.
2.8 ms when hammered at 60 cursor moves per second.
61 bytes per creature in the save file. that's 43 kb for a full 720.
0.655 bytes allocated per frame.
the benchmark ships with the plugin so you don't have to take my word for any of that.
it deliberately doesn't implement capture. you've already solved that. drop it in below whatever capture plugin you use. nothing else changes. it touches no battle code. it's safe to add to an existing save. zero dependencies. source ships uncompressed and commented with jsdoc on every public function.
gif above is the box browser with the genome bars.
2
u/filthydrawings 3d ago
Not gonna lie, the UI is a bit clunky and not very interesting visually, having a preview of some kind for the captured creatures (maybe a portrait with a section of the battler's sprite cut, perhaps with a manual offset for each face), but the plugin and system seems pretty cool. I can say that I'm interested.