Git Product home page Git Product logo

randommetroidsolver's Introduction

VARIA Randomizer, Solver, Tracker, Plandomizer for Super Metroid

There's a website to use the VARIA Randomizer, Solver, Tracker, Plandomizer: http://varia.run/

The current work in progress version is available on the beta website http://beta.varia.run/

You can join the VARIA discord too: http://discord.varia.run/

Getting the sources

You need a git client:

dude@computer:~$ git clone --recurse-submodules [email protected]:theonlydude/RandomMetroidSolver.git
dude@computer:~$ cd RandomMetroidSolver
dude@computer:~/RandomMetroidSolver (master)$ git submodule foreach git checkout main

The current work in progress version is in the master branch (the default one, accessible on beta website (http://beta.varia.run/), if you want the version running on the production website (http://varia.run/) you have to checkout the production branch:

dude@computer:~/RandomMetroidSolver (master)$ git checkout production
Basculement sur la branche 'production'
Votre branche est à jour avec 'origin/production'.
dude@computer:~/RandomMetroidSolver (production)$ 

CLI Randomizer

You need Python >= 3.6, it has been tested on Linux and CYGWIN.

As VARIA Randomizer has a lot of options, the only supported way of using it is with a Randomizer preset (--randoPreset), you also need a skill preset to tell the Randomizer which tricks he can use to acces the locations (--param) and a vanilla ROM (-r), you can optionally give a seed number (--seed), if not a random one is chosen:

dude@computer:~/RandomMetroidSolver (master)$ python3.7 ./randomizer.py -r ~/metroid/SuperMetroid.sfc --param standard_presets/Season_Races.json --randoPreset rando_presets/default.json --seed 1097821

You can start with an existing Randomizer preset and create a temporary one to update the parameters you want to change in the json, you can also set the parameters by hand but there's many many parameters (see web/controllers/solver_web.py for the call to randomizer.py using parameters)

For startLocation, majorsSplit, progressionSpeed, progressionDifficulty, morphPlacement and energyQty if you set them to random you can add a second parameter to give the list of possible values (see haste Randomizer preset for an example).

To list all the Randomizer parameters and their description:

dude@computer:~/RandomMetroidSolver (master)$ python3.7 ./randomizer.py -h
  --param PARAMSFILENAME [PARAMSFILENAME ...], -p PARAMSFILENAME [PARAMSFILENAME ...]
                        the input parameters
  --seed [SEED], -s [SEED]
                        randomization seed to use
  --rom [ROM], -r [ROM]
                        the vanilla ROM
  --randoPreset [RANDOPRESET]
                        rando preset file

CLI Solver

There's less options for the Solver, it needs a seed (-r), a skill preset (--preset) and optionally a difficulty limit (--difficultyTarget) and a pickup stragegy (--pickupStrategy). You can display the spoiler log with -g.

dude@computer:~/RandomMetroidSolver (master)$ python3.7 ./solver.py -r VARIA_Randomizer_FX1097821_Season_Races_medium.sfc  --preset standard_presets/Season_Races.json --difficultyTarget 10 --pickupStrategy all -g

The difficulty values:

easy = 1
medium = 5
hard = 10
harder = 25
hardcore = 50
mania = 100

see web/controllers/solver_web.py for the call to solver.py using parameters.

To list all the Solver parameters and their description:

dude@computer:~/RandomMetroidSolver (master)$ python3.7 ./solver.py -h
  --romFileName [ROMFILENAME], -r [ROMFILENAME]
                        the input rom
  --preset [PRESETFILENAME], -p [PRESETFILENAME]
                        the preset file
  --difficultyTarget [DIFFICULTYTARGET], -t [DIFFICULTYTARGET]
                        the difficulty target that the solver will aim for
  --pickupStrategy [{minimal,all,any}], -s [{minimal,all,any}]
                        Pickup strategy for the Solver
  --displayGeneratedPath, -g
                        display the generated path (spoilers!)

CLI Randomizer webservice client

You can call a VARIA website to generate your seed (a local one, beta or production) using the webservice client, it can be used for example on a Raspberry Pi with limited CPU power.

dude@computer:~/RandomMetroidSolver (master)$ python3.7 ./randomizer_webservice.py --rom ~/metroid/SuperMetroid.sfc --skillPreset standard_presets/Season_Races.json --randoPreset rando_presets/where_am_i.json --seed 1356988 --remoteUrl beta

VARIA_Randomizer_AFX1356988_Season_Races_VARIAble.sfc generated succesfully

To list all the Randomizer webservice client parameters and their description:

dude@computer:~/RandomMetroidSolver (master)$ python3.7 randomizer_webservice.py 
  --skillPreset [SKILLPRESET]
                        skill preset file
  --rom [ROM]           vanilla ROM file
  --randoPreset [RANDOPRESET]
                        rando preset file
  --seed [SEED]         seed number (optional)
  --remoteUrl [{local,beta,production}]
                        remote url to connect to

CLI Customizer

To change Samus sprite or apply patches or randomize palettes on an existing seed you have to call the Customizer. It'll generate a new ROM prefixed with: Custom_

To add a sprite use --sprite, the available sprites are in varia_custom_sprites submodule.

To add one or more patches use --patch, the available patches are available in customizer.py.

Example:

dude@computer:~/RandomMetroidSolver (master)$ python3.7 ./customizer.py -r VARIA_Randomizer_FX1097821_Season_Races_medium.sfc --sprite megaman --patch itemsounds.ips --patch No_Music
Apply patch itemsounds.ips
Apply patch No_Music
Apply patch megaman.ips
Customzied Rom generated: Custom_VARIA_Randomizer_FX1097821_Season_Races_medium.sfc

To add colors randomization:

The parameters:

  --palette             Randomize the palettes
  --individual_suit_shift
  --individual_tileset_shift
  --no_match_ship_and_power
  --seperate_enemy_palette_groups
  --no_match_room_shift_with_boss
  --no_shift_tileset_palette
  --no_shift_boss_palettes
  --no_shift_suit_palettes
  --no_shift_enemy_palettes
  --no_shift_beam_palettes
  --no_shift_ship_palette
  --min_degree [MIN_DEGREE]
  --max_degree [MAX_DEGREE]
  --no_global_shift
  --invert              invert color range

Example:

dude@computer:~/RandomMetroidSolver (master)$ python3.7 ./customizer.py -r VARIA_Randomizer_AFX8258621_Season_Races_VARIAble.sfc --sprite megaman --patch itemsounds.ips --palette --min_degree -75 --max_degree 25 --invert
Apply patch itemsounds.ips
Apply patch megaman.ips
Customized Rom generated: Custom_VARIA_Randomizer_AFX8258621_Season_Races_VARIAble.sfc

Web with Docker

You can launch the web2py website locally using docker, it has been tested on Linux, macOS and WSL2:

root@computer:/home/dude/RandomMetroidSolver/web/docker# ./build.sh
root@computer:/home/dude/RandomMetroidSolver/web/docker# ./run.sh

Then you can connect to the local website on http://127.0.0.1:8000/ on Linux/macOS and http://WSL2-local-IP:8000/ on WSL2.

You can choose the branch to checkout with -b, and give a Github token with -t to be able to do git pull in the Docker image:

root@computer:/home/dude/RandomMetroidSolver/web/docker# ./build.sh -b minimizer -t ~dude/RandomMetroidSolver/github_token
root@computer:/home/dude/RandomMetroidSolver/web/docker# ./run.sh -b minimizer

There's other scripts to start/stop the containers: start.sh / stop.sh, delete the containers/images: rm.sh and update the git repository in an image: update.sh -b branch .

Local Development

To run your local code in a Docker container for development, you will need to pass the -l argument in the Docker build and run scripts to enable local mode. When using local mode, you do not need to rebuild the containers for any HTML, CSS or Javascript changes. Any changes to the Python code will require you to stop and restart. Any changes to the database will require a full rebuild of the container.

# Set db_params.py to the docker container
echo "dbParams = dict(host='varia-mysql', user='varia', database='varia', password='varia', port=3306)" > db_params.py

# Build the local containers
$ ./web/docker/build.sh -l

# Run the local containers
$ ./web/docker/run.sh -l

# Stop
$ ./web/docker/stop.sh

# Start
$ ./web/docker/start.sh

# Remove
$ ./web/docker/rm.sh

Other useful commands for local docker development

# All the following commands must be run from docker folder
cd ./web/docker/

# connect to docker bash container
docker exec -it varia-local bash

# watch logs from server
docker exec -it varia-local sh -c "tail -f /var/log/supervisor/web2py*"

# tear down and rebuild everything
./stop.sh && ./rm.sh && ./build.sh -l && ./run.sh -l

# delete all unused docker containers
docker system prune -a
# watch web2py error and logs
# change to web2py-stderr for error and web2py-stdout for logs
$ docker exec -it varia-local sh -c "tail -f /var/log/supervisor/web2py-std*"

# copy web2py errors to a local directory
CONTAINER_ID=`docker container ps |grep varia-local|awk '{print $1}'`
rm -rf errors/;
docker cp $CONTAINER_ID:/root/web2py/applications/solver/errors .

# restart web2py (used when python changes don't appear on server)
docker exec -it supervisorctl restart web2py

Front end client

For development of the tracker client

# checkout latest copy of front end client
$ git clone [email protected]:chriscauley/super-metroid

# cd into client
$ cd super-metroid/client

# install node dependencies
$ yarn install

# build client files (destination is RandomMetroidSolver/web/client)
$ yarn build:varia

# if you want to make changes to the client, run in watch mode
$ yarn watch:varia

For usage of the tracker client

$ cd web
$ curl -s https://api.github.com/repos/chriscauley/super-metroid/releases/latest | jq -r '.assets[0].browser_download_url' | wget -qi - && tar zxf release.tar.gz && rm -f release.tar.gz
$ ./install.sh

randommetroidsolver's People

Contributors

chriscauley avatar cout avatar dagit avatar dhmdmdhm avatar dorkmasterflek avatar flohgh avatar h-a-m-g-e-r avatar kupppo avatar ponktus avatar randomcodegen avatar strotlog avatar theonlydude avatar z26egors avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

randommetroidsolver's Issues

Option to modify the amount of health and ammo given for each upgrade item

As a variation of the "Percentage of minors available:" setting I would like to propose another setting where the number of ammo given from each upgrade can be modified. A similar option for energy tanks would also work by limiting the amount of maximum health it provides

By modifying the ammo and health upgrades, the total amount of ammo will be limited, but without removing the items from the locations. Checking item spots would feel less punishing as all of the item locations would still contain upgrades.

Idea: Megaman sprite item names

'Varia Suit': 'Shadow Armor',
'Gravity Suit': 'Icarus Armor',

'Charge': 'Mega Buster',
'Ice': 'Ice Slasher',
'Wave': 'Wave Burner',
'Spazar': 'Chameleon Sting',
'Plasma': 'Laser Cutter',

'HiJump': 'Leg Upgrade',
'SpeedBooster': 'Dash Upgrade',
'SpaceJump': 'Rolling Cutter',

'Morph': 'Rolling Shield',
'Bomb': 'Bomb Bee',
'SpringBall': 'Bounce Ball',
'ScrewAttack': 'Screw Crusher',

'Missile': 'Photon Missile',
'Super': 'Sniper Missile',
'PowerBomb': 'Hyper Bomb',
'Grapple': 'Strike Chain',
'XRayScope': 'Shining Ray',

'Reserve': 'sub tank',
'ETank': 'heart tank',

Backwards order in current area and unnecessary/unpractical backtracking.

Hello i don't know if this is new but i have noticed that the solver often skips major and minor items that are completely accessible and then backtracks to them much later on in the game.
Also it seems like some items in the same area are being picked up in reverse order which will make things confusing, i will explain further with this seed as an example:
(Tournament seed 6640613 on very hard difficulty (same happens in other difficulties aswell)

In this solution, the solver goes for the charge beam location right after the "Missile (blue Brinstar bottom)" , from there the next major item location is bomb but it skips it completely (alcatraz escape technique is turned on but still it skips it) then after brinstar and norfair it comes back to crateria for that bomb which could have been avoided by just picking it up on the way to charge beam.
Then after charge beam location, it tells you to go to the etecoons super missile (same as bomb, unnecessary backtracking since you could pick it up on your way to charge beam), then to mockball reserve (again, backtracking as if the order was upside down)
backtracking like that happens a lot with a lot of items even at the same area.
another example from that seed is that after bomb location it suggests you to go to the terminator room and then backtrack to the gauntlet e-tank location (it would simpler to go first to the gauntlet and then to the terminator room considering you're near the bomb location)
Also on the why it can get things confusing here's this another example:
Later on in this same seed tells you to go to the speedbooster location, but it isn't possible with your current items (as far as i know), same with the wave beam location, turns out you have to scroll down where it says you have to go to crocomire to get both speedbooster and grapple which now makes it possible to reach speedbooster and wave locations.
So basically, you're supposed to go to crocomire first before you can go to speedbooster and wave locations but the solver displays that order in reverse (and the problem is that order is not possible to do) which can confuse most people unless they have more knowledge about the game.
this issue/behavior repeats with all of the seeds i have tried.

I hope this helps to further improve the solver.
Please also add "SpringBall-Jump from wall" as a way to access "Reserve tank, Norfair"
i think that method is not there so would be nice to have the solver use it too.

Suggestion: Option to make pink doors exclusive to normal missiles

When you have super missiles that basically means you can open both pink and green doors making normal missiles not a concern if you get super missiles first.
Now that there's door color randomization maybe there would be even more unique or trolly seeds if there's an option that makes it so pink doors can only be opened by normal missiles.

(suggestion) add option to rebalance probabilities of Phantoon round 2 patterns

with the option turned off (original probabilities):

left:

  • slow = 24.87
  • mid = 0.70
  • fast = 24.52

right:

  • slow = 12.76
  • mid = 36.80
  • fast = 0.35

with the option turned on (new probabilities), all patterns have 1 in 6 probability.

Just a random idea that would reward runners for having learned the normally-rare patterns.

Custom Start Location with Majors or Chozo split

I have noticed that selecting a custom start location forces Full split
i want to enable it to chozo split or major so it's less likely i get major progression items right at the beginning without setting it to slowest progression, also to see what kind of seeds i would be getting in harder presets.
can you enable chozo and major splits for these custom locations aswell?

Idea: Sprite sprite item names

Spriter or Sprizer or Sprayzer (for spazer)
Sprite Attack (for screw attack)
Sprite Jump (for space jump)
Sprite Booster (for speed booster)
Sprite Ball or Sprite Bubble (for spring ball)

did I miss any other items that start with an S

Carbonated Missiles or Sprite Missiles (for super missiles)
Carbonated Bombs (for power bombs)

(Boss location randomizer) RBO or preventing original boss location

Not sure if this is a good idea or if it makes sense but what about an option that makes it so the first "intended" boss is Ridley then D/P/K.
what you know is that Ridley is first but the random part is that you don't know at which location he might be.

i am not sure if that would make different enough seeds though, not sure what the implications would be thats why i am not sure if it would make much sense.
or maybe an option to prevent the randomizer from placing bosses in their original location so its always different from vanilla.

thanks for putting this much effort in the randomizer , it has evolved greatly over this first year

Pickup strategy (any and minimal) question.

On minimal the description says that it will pick up 5 super missile packs and 10 missile packs.
but on most seeds i have tested using the solver with the master preset (the randomized rom wasn't in master) or any other it picks more than 10 super missile packs (which would be 50 super missiles) , all items are enabled and minors quantity and energy is in vanilla and charge beam gets picked up.

I was guessing it's because charge usually gets picked up later in the game, but after charge gets picked up it still picks up more super missiles and missiles along the way (Even after defeating all the bosses, it picks up more super missiles even if it already has more than enough of them to beat mother brain).
Sometimes on Any it picks up more supers than minimal.
is this the intended behavior or how does it work?

Solver fails to find path out of Blue Brinstar/Crateria

With Total Normal X6299378

  • First item location (Morph Ball) is an e-tank.
  • At this point the solver seems to get stuck for some reason, this is as far as the solution log goes.
  • Then get morph ball at Ceiling e-tank (with the d-boost)
  • Get speed at Bomb Torizo
  • Alcatraz and then doing a easy short charge+shinespark to destroy the bombable blocks
  • Finish the rest of the seed

All techniques are enabled in the solver options.

Solver not working at all since update

Would like to report that now every rom i upload to the solver won't work anymore.
After uploading them , it will always say it's not finishable. (Tried all combinations of difficulties and other settings and getting the same results) the spoiler will be completely blank each time.
all of the roms i am using are from the online randomizer.

Presets section global settings resets when switching tabs/sections

Now that the presets are in a separate section it got a bit awkward to change around settings quickly.
When changing settings in the presets tab and you switch to solver, all of the settings return to their previous state, now you have to update the profile (and enter the password) each time you want to make any change.

Idea: Win95 sprite item names

'Charge': 'Wireless Charge',
'Ice': 'App Freeze',
'Wave': 'Click-through',
'Spazer': 'Split Screen',
'Plasma': 'Antivirus',

'HiJump': 'Reboots',
'SpeedBooster': 'Overclocker',
'SpaceJump': 'Spacebar',

'Varia': 'Water Cooling',
'Gravity': 'Flood Filtering',

'Morph': 'Minimize',
'Bomb': 'Delete',
'SpringBall': 'Spring Wallpaper',
'Screw Attack': 'Denial of Service Attack',

'Missile': 'Click',
'Super': 'Double Click',
'PowerBomb': 'Delete All',
'Grapple': 'Drag and Drop',
'XRayScope': 'Aero Peek',

'Etank': 'SSD Drive',
'Reserve': 'HDD Drive'

Bug--Gauntlet Top Start

From a gauntlet top start, you should not be required to immediately obtain the items from both Crateria Gauntlet right and left. If this is possible, the difficulty level is certainly not 'green' as the Solver indicates.

VARIA_Randomizer_DBFX2666876940451473506_casual_VARIAble

Suggestion: Allow removing items on tracker without using the undo button

To better explain, I've had many a time where I accidentally mark an item and don't realize it until later on. In the case of this tracker, I'd have to press undo to go all the way back to undo that item and then re add all the stuff that got undone in the process. To circumvent this, you could make it so just clicking an obtained item makes it go back to unobtained. Just a suggestion I had that'd help some people like me.

(Suggestion) A tweak to progression speed selection

Hello!
I have a suggestion for a tweak to the progression speed setting. I would love to be able to toggle off certain settings while still keeping the progression speed random. I have been doing a bunch of rando races lately, and we have found that both slowest and fastest aren't so great for racing. Fastest is a bit too boring, and slowest is too tedious. It would be great if we could roll seeds with randomized progression speeds, but without the possibility of "slowest" or "fastest".

Thanks!
Pete

Idea: Boss HP and damage scaling

My Idea is for us to be able to fight an easy Ridley or hard Kraid or anything in between by adjusting how much HP they have and how much damage they and their projectiles do. I specifically want this for kraid. He is a serious pushover and the second stage of his fight could be actually challenging if he didn't take 4 supers to kill.

Settings that could be adjustable would be HP% and damage% for each of the 5 bosses. The randomizer could be much less predictable by choosing bosses out of order while still being fair to the player. It would also give skilled players something new to strive for by just making every boss harder if they wanted.

The minibosses could also be added as well of course or any other critter.

Unsolvable area rando generated, checked against same preset

Uploaded to the solver after creating the file the previous night, using the RevelStandard preset. Spoilers showed the items I had managed to collect, ending at the gauntlet, left and right. The last change I made to my preset was disabling main upper norfair hellruns and I think turning IBJ off, but that was almost a week ago.
(Also, should be 'known techniques', but it being unfinishable is the main issue)

bad_gen.VARIA_Randomizer_AFX99086_RevelStandard.sfc.zip

Parameters different in seed than website shows

I've generated multiple seeds only to discover that the parameters I set for them seem to have been ignored by the randomizer. I used the following parameters for all of these seeds, unless otherwise noted.
param

The first was not an Area Randomizer, but a normal Full Randomizer (VARIA_Randomizer_FX3786680_veteran). I just completed this seed and according to the credits, "Spread progression items," "Suits Restrictions," and "Early morph" were all activated. Also, the suits were in their altered states, as opposed to their vanilla characteristics, and the softlock prevention patches had been applied.

Even more peculiar, in the two Area Randomizer seeds I generated (VARIA_Randomizer_AX5565735_veteran and VARIA_Randomizer_AX2465419_veteran), all of the above is true, with the addition of the fast door/elevator transition patch being applied. The only difference with these seeds is that, unlike pictured above, I had toggled on the option to remove item fanfares. I did not complete these seeds, but I did verify my suspicions using SMILE.

The only major difference between seeds I generate and seeds others generate seems to be that I tend to use 4.6/1/1 for the minor distribution, while most others round up or down, at least as far as I've seen.

Late Suits placement option

To add a bit more of challenge and to increase the chance of doing suitless maridia or lower norfair (Without turning them off completely which can really escalate the difficulty)
An option to place suits late in the seed (as late as the preset allows)
so it becomes more likely to have the suits be placed in harder places.

Might aswell be like how it is with the morphing ball placement dropdown options right now.
And condense it with something like
-Normal (same as Suits restriction off)
-No early suits (Same as Suits restriction on)
-Late suits

(Suggestion) Crossover Rando Support

This is a crazy suggestion, I am aware, but since it looks like the SMALTTP randomizer has been abandoned(?) and VARIA has substantially more functionality, it would be nice to potentially see some of the same technology used to bring VARIA over.

This is an absurd amount of work and it is probably unfeasible, but we can dream, I suppose.

Possible Casual logic bug?

Mistress Saeko was playing seed 6773509 with full randomization, casual skills preset, default settings preset, full randomization, and medium progression speed.

Space Jump is locked at Croc Escape, which requires Hi-Jump+Speed or Grapple. However...
Welp
Welp 2
Welp 3
Welp 4
Welp 5

As you can see from the screenshots, the Wrecked Ship was absolutely stacked. The potential problem is that CWJ across the moat was absolutely required, but should that not be the case with these settings?

The only key items acquired before CWJ were Morph Ball, Varia Suit, Charge Beam, and Ice Beam.

As a sidenote, the Justin Bailey graphical patch, as well as Kejardon's Total Control patches were applied. They should not have affected anything regarding item placement.

Aqueduct Snail Clip Technique

This technique is for getting the missile and super missile in the maridia aqueduct without speedbooster.
would be good for the randomizer to consider this technique in the logic and add it in the presets aswell.
specially for the full randomization for when it puts a major progression item there.

here's a tutorial video by matrick
https://www.youtube.com/watch?v=fBQubU6h11U

Idea: Link sprite item names

E-Tank - Heart Container
Reserve Tank - Bottle / Piece of Heart / Red Potion

Charge Beam - Master Sword / Silver Arrows (check Super Missiles alternative)
Ice Beam - Ice Rod / Ice Arrows
Plasma Beam - Golden Bow / Ancient Arrows
Wave Beam - Slingshot / Fire Arrows
Spazer - Scattershot / Light Arrows

Missiles - Arrows
Super Missiles - Arrow Bundle / Silver Arrows (check Charge Beam alternative)
Power Bombs - Bombchus
Grapple Beam - Hookshot
X-Ray - Lens of Truth

Varia - Red Mail
Gravity - Blue Mail / Zora's Flippers

Hi Jump - Jump Magic
Speed Booster - Pegasus Boots
Space Jump - Fairy Magic / Hover Boots

Morph Ball - Child Link / Digging Mitts / Moon Pearl
Bomb - Bombs
Spring Ball - Roc's Feather
Screw Attack - Magic Cape / Thunder Magic

Option to turn off basic maneuvers

Yeah... I suck...
So I got in a game that requires rising morph.
Yep. I can't.
I can wall jump and shinespark for days, but not that.
It took me 15 minutes to get speed over it.
I also find it really weird that you can't turn it off, otherwise, why is it there? It even has a checkmark!
So, please, fix.

Issues w/ Crystal Flash

My button setup involves setting shoot to R, Angle Up to L and until your randomizer, angle down was unbound. However, with the availability of Angle Down being mapped to something unused, in this case A, I was able to utilize angle down and Crystal Flash (so I thought). I recently ran a randomizer where I had to do a hell run into Upper Norfair. Imagine my surprise when I attempted a crystal flash and nothing happened. I remapped the buttons to default, and crystal flash did work, so I eliminated the possibility of the issue being with my emulator.

As a request, if it's possible, can you rework the rom to not only use angle down if it is mapped to a face button, but also allow it to be used for a crystal flash. I have a controller setup that is similar to that of Behemoth's.

Please let me know if you have any comments, questions, or concerns, or if such a thing is possible.

Wrong Copyrights

It seems some developers uploaded a material that belongs to me and is crediting the wrong person, i'll like to discuss this privately via discord, thanks

Zooming the website breaks the ability to read some popups

Minor/Moderate issue with the Varia Randomizer website. Popups like this one can't be fully viewed when zooming the website (if you're hard of seeing and zoom websites to make it easier to read)...

image

I can't scroll down the page to read the entire popup.

Spoiler showing which items got skipped and which couldn't be picked up

When switching presets and selecting either "any" or "minimal" can you display which items (majors) got skipped and which ones couldn't get obtained when displaying the spoiler?

(I would like to also propose a couple of other minor suggestions for the solver, the credits stats and an area randomizer softlock bug/glitch, should i post them in a separate thread?, don't want to feel like i am spamming, and thanks for making this great tool)

No solution for a casual mode seed. (and hard mode too)

I have noticed the solver doesn't take into account the layout changes in casual mode (There are some other changes in normal and tournament aswell in the online randomizer), i got a casual seed that the solver says it has no solution, checked myself in game and noticed there's a change in layout early on that lets the player to access brinstar's power bomb without morph ball. (morph ball was there)
I guess the solver took it as "You need morphball to access morphball".

I am not very concerned about casual mode but considering there's also changes like that in the other modes it would be great if the solver takes into account those changes in the other difficulties aswell. (For the online randomizer)
Here's the seed i used.

Casual mode seed: 4247433
Hard mode seed: 5221591 (This one doesn't have a solution according to the solver either, it's probably because of the same reason, i don't know much about the changes in level design on hard mode so i can't really say much)

(I enabled all of the techniques for both)

(suggestion) Add hidden items to the plandomiser.

similar to how the option is available in the randomiser. It would be nice to be able to randomely generate it for all items, or if possible make specific items hidden. Further, could you make an item an empty block? (hidden block but no item there)

It was just a thought I had.

(Randomizer suggestion) Section to force techniques in a seed.

It would be cool to have a section in the advanced tab that can let you choose which techniques that the seed will require you to do (at least once)
For the purpose of being able to make seeds that for example always require a Lavadive in it, or always involve suitless maridia, or always involve doing a mid air springball jump, infinite bomb jumping, microwaving draygon, etc, at least once somewhere in the seed.

I came across this idea because a lot of times i find myself making a lot of seeds and checking if it involves techniques i enjoy doing (and some are rare to come by even with the presets), pretty sure i am not the only one, also i am curious how many techniques can be forced into a seed.
(I am aware that selecting too many conditions might cause the randomizer to abort or make a not realistic seed)

Wiki Hyperlinks in location names (Suggestion)

Since the main target audience for the solver are people who are beginners or not very familiar with all of the locations, or just people getting into the game, (I am familiar enough with most tricks in the game but there are still rooms that still i am not sure about their names), suggesting to add a wiki hyperlink to each location name in the spoiler section (Just like it's already done in the techniques section)

game crash

i was doing an area rando race and when using an up door that leaded to an right door the game crashed, i use springball to jump into it (since i was in water and needed to do springball jump) i needed to unmorph to be able to activate the transition, when i was on the other side the game crashed, nothing was moving anymore, but the music was still playing.

i'm using an emulator, snes9x 1.53, here is the clip of it

https://clips.twitch.tv/AntediluvianFantasticWolverineUncleNox

Pickups checkboxes suggestion

Would it be possible to add checkboxes for each item?
Say i wanna skip hijump boots or grapple beam (or any item) and uncheck them from a list, then the solver would make a strategy around that or tell me if the run is not finishable, if it's not too much to ask
Maybe it's beyond the scope of the solver but thinking about it it has lots of potential as an experimentation tool, it's interesting to see what it comes up with.

(Already answered on another issue, posting here for organization sake)

Some of the preset options are gone for me

Hi, I was using the randomizer with my preset and I accidentally deleted some of the randomizer parameters. For example, for progression speed I only have "fast" and "medium" options. I used to have others like VARIAble but they won't show up anymore. Is there a way to get back all of the options?
varia

Idea: Mario/Mario NES/Luigi sprite item names

'Charge': 'Cheep Charge',
'Ice': 'Ice Flower',
'Wave': 'Superball',
'Spazer': 'Spiny Shelmet',
'Plasma': 'Hammer Suit',

'HiJump': 'Raccoon Suit',
'SpeedBooster': 'P-Speed',
'SpaceJump': 'P-Wing',

'Varia': 'Fire Flower',
'Gravity': 'Frog Suit',

'Morph': 'Mini Mushroom',
'Bomb': 'Bob-omb',
'SpringBall': 'Spring',
'Screw Attack': 'Super Star',

'Missile': 'Bullet Bill',
'Super': 'Banzai Bill',
'PowerBomb': 'POW Block',
'Grapple': 'Claw',
'XRayScope': 'Subspace',

'Etank': 'Magic Mushroom',
'Reserve': 'Reserve Mushroom'

Incompatible transition causing grappling beam softlock in area randomizer

I entered the door in red brinstar elevator room which is a vertical one, in this case it got me to the lava dive room (which is horizontal)
normally , it would work as intended, i played further and then came back to that door, but this time samus got stuck in the door (after entering in the lava dive room) while getting stuck in her grappling beam animation (i didn't even have grappling beam picked up), she stayed in a diagonal position, the grappling beam could be heard the entire time, i couldn't do anything and got stuck there.
tried it again later and couldn't replicate it, i don't have footage of it but as far as i remember i was holding R and shoot or did something that triggered it as i entered the door

How to install on windows...

What do i need to install the project on a windows web2py framework?
It is not possible to run the install.sh to create the symlinks, because the sh file is an linux/unix shell script and can not run on windows.

Potential Issue: I can't tell what this should be labelled as, but I thought I'd point it out.

So, these are my items:
image

With these items, the tracker says that in order for me to get the PBs on the Crateria Surface...I have to do the Green Gate Glitch. On top of this, once normal bombs were obtained, it said that no technique was no longer required, even though I'd still have to do Infinite Bomb Jump...so wouldn't it say that I have to do that?
image

Is this an issue? Or is there something else that I'm not aware of here?

Web interface: Unable to get a regular preset seed after a modified seed of the same preset

Steps:

  1. Go to 'Randomizer' on website
  2. Put in ROM + SMRAT2020 + SMRAT2020 settings.
  3. Open advanced settings and modify to remove fanfares (OR enable boss rando, same bug in the end)
  4. Play seed, close tab, etc.
  5. Wait 24 hours (optional)
    ...
  6. Go to 'Randomizer' on website
  7. Put in ROM. Note that SMRAT2020 and SMRAT2020 are already selected (remembered from before). Advanced settings are shown but there is no indication of which do not match the shown preset.
  8. In case of weird settings, re-select SMRAT2020 and SMRAT2020
  9. Play seed

tl;dr You want a couple modifications to the preset for one seed, and later you want to do an official seed.

Expected:
Settings are reset to SMRAT2020 and you play a vanilla-settings seed at the last step.

Actual:
The advanced modification you did in step 3 persists through all steps. You play a surprise boss rando seed, etc.

Idea: Randomize "boss required" grey door locations

The idea is to randomize which and how many locations unlock after you to defeat an specific boss.

As an example; Normally when you defeat Kraid or Ridley that opens up one grey door, the idea is to randomize the location of that grey door so it locks something else somewhere else.
If possible it would be cool if the user could input how many grey doors may be locked until you defeat that boss.
So for example if kraid has 5 grey doors associated with him; 5 random doors across the game will be turned to grey until you defeat kraid.

It would be a good idea to also have special sprites for "grey boss doors" to distinguish between phantoon,kraid,draygon and ridley grey doors to make it easier to keep track of them.
(To avoid the situation where you go back to a place where a grey door was to check if it opened only to find out that grey door wasn't related to the boss you just defeated)
Maybe just change the border of the grey door to a different color to identify them.
Green border grey door = Kraid required
Yellow border = Phantoon
Blue border = Draygon
Red border = Ridley
(The colors of their eyes in the statues)

MFFusionship.ips corrupts Norfair palette

Many rooms are completely black (except for doors and Samus), other rooms have weird colors. I first noticed this issue when using the customizer on the beta site, but verified that it also occurs when I manually apply the patch with Lunar IPS to a vanilla ROM.

"Skill level" bar in presets

Because there are some premade presets such as noob,casual,regular,veteran,speedrunner and master which have (in my opinion) pretty accurate perceived difficulty settings and basically range from least skilled to most skilled in that order.
a skill level estimator bar could be made comparing the current custom preset with all the settings of the premade presets.
Similar to the difficulty estimator bar, ranging from noob to master.
it can help to tweak your own custom preset, it would give you an idea whether you're overdoing it or going too easy with what you actually want to experience, nice to have something to compare it to.

Basically it shows how close or similar your custom preset is to the premade ones as you're making or editing your own.
(taking techniques, hellruns, hard rooms and bosses settings into account for the comparison, basically every setting relevant)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.