groundHog is a procedural map generator for Manic Miners
For most people, just use the web application hosted on GitHub Pages.
If you have a clever idea for getting the files from the Downloads folder to the Manic Miners level folder, please let me know.
To run locally, run yarn install
and yarn start
, which will launch the
React application at localhost:3000
. I use Linux for my dev machine and have
no desire to test this setup on Windows, so your results may vary.
Run Jest tests with yarn test
. Some of the tests are "goldens" that
test what a cavern serializes to. These can be automatically updated by
running UPDATE_GOLDENS=1 yarn test
.
groundHog should deploy automatically when the main branch is updated via a GitHub action as long as all tests are passing.
I am on the Manic Miners Discord. Ping me if you're interested in contributing
and I can offer advice and/or suggestions. PRs are welcomed. Please run
yarn presubmit
on your PR and commit any changes before submitting it.
Rock Raiders is a rather unique game from 1999. It plays kind of like an RTS, but with a heavy focus on economy and logistics. I enjoyed it tremendously as a kid and I'm enjoying Baraklava's remake now. I've also always been fascinated by algorithmically generated content. Many RTS games have some kind of random map generator. I dabbled with scripting one in Age of Empires 2 a very long time ago, but didn't get far. I've also loved every game I played that came with a level editor, from Logic Quest 3D to Portal.
After playing with the level editor in Manic Miners a few times, I realized I had a few interesting ideas for set pieces but not what to do with the rest of the cavern - and now here we are.
All of the caverns are procedurally generated using an approach that would have been feasible back in 1999. Procedural generation means there are a series of specific rules that determine where everything in the level gets placed, and while there is some randomness within those rules, the rules themselves are hand-crafted. GroundHog makes no calls at runtime to ChatGPT et al.
A modern "AI" would be somewhat unhelpful in this situation. There aren't nearly enough Manic Miners levels in existence to train the AI on what makes a level winnable, and the system requirements would far exceed Manic Miners itself, even on max graphics settings - or cost money per level generated.
I have been using Gemini to do some limited code generation (mostly for tests) and for translating Python code from Hognose.
See the documentation here for an overview.
Sure! I'd appreciate it if you included a link to this GitHub page, at least within the level comments.
Add an issue and maybe! Generally speaking, the kind of things that would be easier to add would be caves with specific things in them. Whole-cavern overhauls are also possible, but will require significant amounts of testing before they are released.
Yes! Just click "Advanced" and you have a few dozen parameters to change. Some should be fairly self-explanatory while others... aren't. Please note that changing these settings, especially at the extreme edges, is likely to cause errors at this time.
The sliders provided are in roughly the order that they are used. Generally speaking, I would recommend tweaking them in order from top to bottom as changes near the start of the process are likely to affect the end of it in major and unpredictable ways.
See code comments for explanations of what these values do.
Not yet. And I'm probably going to break level generation a few times before this project hits a 1.0 release.