This app is an attempt at a web based randomizer with a different approach to ROM generation. This isn't an effor to replace the amazing work of Digshake, but a learning experience for me as a developer and hopefully a source of inspiration and data for improving the existing randomizer.
Starting work on the randomization portion. ROM interrogation is almost complete with the exception of enemy data. The design for the data structure for creation of randomized overworld maps and playability testing is complete.
It's a work in progress. Be kind. I'm also willing to collaborate if anyone is interested.
Show predefined node layouts with positions and no set connections and randomization attributes. Connections are set randomly.
Randomization and testing playability is performed through the use of a graph. Nodes are randomly placed, and then connections are randomly placed. Then items are placed randomly, but in such a way that the seed is completeable. The graph is then used to generate the map.
Shows location data like map number, map set, number of item slots, spell slots, and hard connections known as "links" (i.e. like between caves, bridges, Life Town N and S...)
{
"id": "JUMP_CAVE_N",
"type": "CAVE",
"continent": 0,
"mapSet": 0,
"mapNumber": 9,
"passThrough": false,
"items": [],
"spells": [],
"linkRequirements": {
"JUMP_CAVE_S" : "FAIRY | JUMP"
},
"links": [
"JUMP_CAVE_S"
]
}
{
"id": "FAIRY_TOWN",
"type": "TOWN",
"continent": 0,
"mapSet": 1,
"mapNumber": 11,
"passThrough": false,
"items": [],
"ability": "DOWNSTAB",
"spellRequirements": ["MEDICINE"],
"abilityRequirements": ["JUMP"]
}
{
"id": "SPELL_TOWN",
"type": "TOWN",
"continent": 2,
"mapSet": 2,
"mapNumber": 18,
"passThrough": false,
"items": [
"BIG_ITEM",
"BIG_ITEM"
],
"spellRequirements": [],
"itemRequirements": [
"SPELL",
"MAGIC7"
],
"revealRequirements": [
"HAMMER"
]
}
{
"id": "P2",
"type": "PALACE",
"continent": 0,
"mapSet": 3,
"mapNumber": 14,
"passThrough": false,
"items": [
"BIG_ITEM"
],
"completionRequirements": [
"HANDY_GLOVE"
]
}
{
"id": "GP",
"type": "PALACE",
"continent": 2,
"mapSet": 5,
"mapNumber": 0,
"passThrough": false,
"items": [
"BIG_ITEM"
],
"spells": [],
"entryRequirements": [
"CRYSTALS"
],
"completionRequirements": [
"THUNDER",
"DOWNSTAB",
"HANDY_GLOVE"
]
}
A randomized ROM will be generated by combining a template together with location meta data and processing by the randomizer. This produces a graph that is then used to write the data back to the vanilla ROM.
If these are helpful to anyone, I have my notes in this repo.