Coder Social home page Coder Social logo

icebound777 / pmr-seedgenerator Goto Github PK

View Code? Open in Web Editor NEW
22.0 6.0 12.0 48.12 MB

The seed generator for the Paper Mario 64 Open World Randomizer.

Home Page: https://pm64randomizer.com/

License: GNU General Public License v3.0

Python 100.00%

pmr-seedgenerator's Introduction

Paper Mario Randomizer - Seed Generator

This python project is the seed generator for the Open World Paper Mario Randomizer mod for Paper Mario 64. This generator runs in the backend of the web generator, but can also be used locally, although we do not offer support for that.

Related repositories

Web generator repo: https://github.com/Pronyo-Chan/paper-mario-randomizer Base mod repo: (currently private)

Requirements

This project requires python 3.9 with a handful of additional dependencies. Furthermore a base-modded US-ROM of Paper Mario 64 is required and has to be provided by the user; automatically patching the base mod is not part of the generator. For this purpose the patch file for turning the vanilla US ROM into the base mod is provided within the project's /res folder.

Running from the command line

First, install dependencies (or run the project inside of a virtual environment like pipenv). Then, to generate a game with default settings: py randomizer.py -t PATH_TO_PREMODDED_ROM To generate a game with custom settings, create or modify a settings yaml file and then: py randomizer.py -c PATH_TO_SETTINGS_YAML -t PATH_TO_PREMODDED_ROM Note that the seed generator writes to the provided file destructively, so make a backup of your pre-modded ROM.

Code of interest

For curious users, this project can show the internal workings of the generator. A few interesting files and directories are:

  • /maps/graph_edges/base_graph The files in here define the item location requirements, as well as requirements for traversing the ingame world.
  • Default Settings All options, toggles and their default values that the generator can use can be found here.
  • Placement Logic This file handles the item placement logic (graph based using DFS).

Credits

The Paper Mario Randomizer as a whole was built by

  • clover
  • Icebound777
  • Pronyo

with assistance and contributions by

  • Jdog
  • Quackles
  • Rain
  • Jdaster64
  • MrN829
  • MrCheeze
  • AmazingAmpharos
  • Boingboingsplat

pmr-seedgenerator's People

Contributors

amazingampharos avatar boingboingsplat avatar dependabot[bot] avatar icebound777 avatar joshw-7 avatar mrcheeze avatar phantom5800 avatar pronyo-chan avatar z64a avatar

Stargazers

 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

pmr-seedgenerator's Issues

1000 ideas

First of all, this project is really really cool! I'm having way too much fun with it!

I don't think any of these are important, but I'd like to throw some ideas here, just for funzies.
The version I'm playing now is 0.13.2 btw, so sorry if something is outdated here.

Difficulty: Option to make more things cost money

To avoid stashing money and items and to make battles more meaningful, it would be nice to have more opportunities to spend money.

Sleeping

With this option on, Toad Houses would become inns, like in TTYD. Same applies to Mario's bed: you have to leave money to help Luigi pay the bills. The cost would be the same everywhere, but increase proportionately to how much it can help you.
For example: Price = MaxHP/5 + MaxFP/5 + 1*MaxSP

Recovery Blocks

A related option would also affect Heart Blocks. You could add the following options besides Vanilla and No blocks:
a. they can be used only once
b. they cost coins to use like in TTYD - they would increase cost similar to above, but cheaper, e.g. MaxHP/5 + MaxFP/5

Home warping

Warping home could also cost some part of your coins, e.g 50% (you can still always use it, even at zero coins).

Cooking

Maybe allow setting a cost for cooking as well? It's a bit weird to be able to upgrade items for free.

Minor improvement: Reorder key items

So that the ones you don't need to worry about after collecting them (you keep them forever, and don't use actively, e.g. Ultra Stone, Lucky Star, Silver/Gold Credit, etc) are placed at the end. A usable item like home warping should be first.

Minor improvement: Show number of items on C-left menu

So you can check if you're carrying too many items without having to pause or count. E.g. instead of "Items", menu would say "N item(s)" or maybe "N/T items" where N is how many you're carrying, T is capacity.

Minor improvement: Tracker "delivered/used" state

Basically item vanishes (0% opacity) from tracker once used. So, 3 states: not-acquired, acquired-but-not-used, used.

Cosmetics/Mario: "Unlock when leveling up" option

This would make Mario skins a random sequence defined by the seed. He starts with first color. As he levels up, he occasionally unlocks a new color until he goes through all colors, ending with the last color only at Max Level.
Maybe you could also allow switching colors at the pause menu, pressing (A) in Mario's Level explanations.

Shopsanity: Fill empty shop slots with non-essential items

This would make it so after buying one-time items in shops, slot won't be empty, but instead have a random non-essential-but-maybe-useful item in its place. You can make it really expensive.

Major feature: "Master Chef Challenge"

It would be cool to have a mode where you have to cook all (or a specified amount of) recipes to be able to beat the game. Then, when cooking the required amount of recipes, Tayce T. would give some key item (e.g. a Chef's Diploma) that would be necessary somehow to reach the final boss. To help with that, you could add a recipe tracker like the current tracker for key items. Replenishable base ingredients for the recipes would be in logic, of course. This would be interesting together with having to pay a cooking price as well.


Lastly (not complaining or anything), just a comment on few things I found weird/funny...

  • Getting Gold Credit first than silver opens both games, making Silver Credit useless.
  • Merlow can sell a Star Piece... and charge multiple star pieces for it.
  • Home warping item could have been a necklace or something (Lucky Star?), but instead it's a mushroom that can be eaten forever... it's a miracle! The multiplication of the mushrooms ๐Ÿ˜† I guess that's why Mario never gets hungry!

(Suggestion) Allow Manual Raising Of Max BP

I previously played this randomizer occasionally with cheats enabled to increase my the BP beyond 30.
With the new updates, said cheats are broken.

In order to better utilize badge synergy and make more interesting low HP runs, could we possibly allow a raising of the BP cap manually in the difficulty settings?

I believe the only practical thing to contend with would be ensuring Mario's level never extends beyond what it would be at the maximum BP range (i.e. ensuring he is still level 10 even with 50+ BP, all other starting stats vanilla).

Love the randomizer, by the way! One of the best randomizers I've played, by a wide margin.

Missing Star Hunt Stars?

Hello PMR Team! I'm writing what I'm assuming is a bug report, and not collective delirium.

My girlfriend & I have done two 120 Star Hunt rando seeds together over the past week or so, and both times we've come up with exactly 119 Stars. Upon hitting the 119 wall and feeling like we've run out of checks (with the tracker to confirm that we've actually checked everything), we've opened the spoiler log and individually gone through every check listed to have a Power Star attached to them, and found them all to be collected both times, on both of our copies (we play the same seed at the same time taking different routes). This leads us to believe that there could be an issue with the star counter itself, since we've even counted the number of times a Power Star item shows up on the spoiler log when searched for, and it lists 120 locations, all of which we've checked.

I don't have her save files currently (I'm sure I can get them if need be), but below I have linked my save file, with the two associated spoiler log webpages, settings strings, & spoiler log text files (in case the website auto-deletes them before the issue is able to be fixed), along with all shared star locations between the two seeds, and the information of the emulator I'm playing on.

Please let us know if there's anything we could've done differently, and thank you for looking into this.

Seed 1:

Link: https://pm64randomizer.com/seed?id=4232795305
ID: 4232795305 - Items: Nutty Cake, Goomnut, Jelly Shroom, Lucky Star
Settings String: (iIVEJNSPf2KDXl3RBg2a11OM)(gb1f1p1s1rm2)(pSaRn1x1(pGktpbwsl))(qh3SiPZgCELt0dQFVo)(dd1ca1m1kshq125r1zw7lt1Yp1B)(mc120h10f5b3s0j-1a-1iRn2x2)(om4btwCrps65796o1DX?120!120Y)(cm0p00g00k00o00a00b00w00s00l00x0n0e0y0c0trhu-1j)gRx)

Spoiler Log:
4232795305_spoiler.txt

Seed 2:

Link: https://pm64randomizer.com/seed?id=1892814210
ID: 1892814210 - Items: Power Bounce, Super Jump, Mega Quake, Bland Meal

Settings String: (iIVEJNSPf2KDXl3RBg2a11OM)(gb1f1p1s1rm2)(pSaRn1x1(pGktpbwsl))(qh3SiPZgCELt0dqFVO)(dd1Ca1m1kshq100r2zw7lt1Yp1b)(mc100h10f5b3s0j0a-1iRn3x3)(om4btwCrps65796o0DX?120!120Y)(cm7p20g20k20o20a20b20w20s20l20x2n2e2y2c0tRhu-1j)gRx)

Spoiler Log:
1892814210_spoiler.txt

Save Files:

incomplete star hunt save files.zip

The attached save file contains the saves of both Star Hunt seeds from my perspective.
Seed 1's save file can be found in Slot 4.
Seed 2's save file can be found in Slot 3.

Shared Star Locations, As Named by the Spoiler Logs:

Goomba Region

  • Bottom of the Cliff - Upper Ledge within the Goomba Region region
  • Jr. Troopas Playground - Bush Top Left within the Goomba Region region
  • Marios House - Luigi Koopa Koot Favor within the Goomba Region region

Toad Town

  • Gate District - Russ T. Dictionary Reward within the Toad Town region
  • Gate District - Miss T. Letter Reward within the Toad Town region
  • Southern District - Bub-ulb Gift within the Toad Town region
  • Residental District - Storeroom Item 1 within the Toad Town region
  • Port District - Poet Melody Reward within the Toad Town region
  • Short Elevator Room (B1) - Yellow Block Center within the Toad Town Tunnels region
  • Merluvlees House - Merlows Rewards 4 within the Shooting Star Summit region

Chapters 1 & 2 Areas

  • Path to Fortress 1 - X On Ground 2 within the Koopa Region region
  • Train Station - Bush 2 within the Mt Rugged region
  • Mt Rugged 4 - Hidden Cave Chest within the Mt Rugged region
  • Mt Rugged 4 - Yellow Block Top Right within the Mt Rugged region
  • E1 Nomadimouse - Nomadimouse Letter Reward within the Dry Dry Desert region

Chapters 3, 4 & 5 Areas

  • Wasteland Ascent 1 - Yellow Block 2 within the Gusty Gulch region
  • GRN Treadmills/Slot Machine - In Chest within the Shy Guys Toybox region
  • Village Cove - Hidden Panel within the Jade Jungle region
  • Village Buildings - Red Yoshi Kid Letter Reward within the Jade Jungle region
  • SW Jungle (Super Block) - Underwater 3 within the Jade Jungle region

Chapters 6 & 7 Areas

  • (SE) Briar Platforming - Left Side Vine within the Flower Fields region
  • Shiver City Center - Snowmen Gift 2 within the Shiver Region region
  • Red Key Room - In Chest within the Crystal Palace region
  • P-Down, D-Up Room - In Chest within the Crystal Palace region

There are also a few Shared Star Locations that aren't quite identical, but have similarities, such as being sold by Rowf or Rip Cheato, or given out as a reward by Koopa Koot, but none of these stars occupied the exact same slot. However if it's none of the above Shared Star Locations I think it's likely that it could be one of these. Also in Seed 1 there was a check in which a Power Star and a Trap were collected at the same time within Jr. Troopa's Playground, and we speculated initially that this caused the issue. Hopefully these are good to go off of.

System Information:

OS: Windows 10
Emulator: M64Py (v0.2.5)
Mupen64Plus core version: v2.5.9

I would put the MD5 Checksum here but I can't find a way to calculate it for N64 ROMs. If this is information you'd be looking for and you know how to do it, please respond to this thread with instructions, and I will verify the checksum for the base ROM along with both rando seeds (assuming generating a rando changes the checksum).

Thank you very much for your time, and if you have any suggestions for workarounds please let us know, as we'd love to see the ending of a Star Hunt run sometime. Also this is absolutely not part of the request but if you wanted to put another feature on the roadmap, it would be really cool to see Merluvlee give hints for where the remaining power stars are.

Option to randomize music (swap themes randomly)

It would be cool to be able to randomize music. Not in a crazy absurd way, but following a certain logic; where music is in separate pools per category, and only swapped within the same pool. Something like this:

  • Action pool: upbeat event themes, e.g.: Normal Battle, Mid-boss Battle, Minigame, Fuzzies, Monty-Moles, etc.
  • Boss pool: all battles against a specific character, e.g. Bowser, Bosses, The Master, Jr Troopa, etc
  • Character pool: all themes of specific characters, e.g. bosses outside of battle, Peach, Twink, flower characters
  • Field pool: all areas where you can battle normal enemies, e.g. Pleasant Path, etc
  • Safe pool: all villages (except Toad Town) and other safe areas (e.g. Shooting Star Summit, Sun Tower, etc)
  • Establishment pool: transition themes in subareas of Toad Town, e.g. Merlon, Dojo, Rowf, Tayce T., etc., also maybe Club 64

Some other music would be unaffected, such as:

  • Toad Town (regular and Shy Guy version)
  • New partner, chapter completed, maybe star spirits theme?
  • themes that don't loop, of course: e.g. Intros, Credit, Cutscenes like train, Bowser castle collapsing, etc

Prologue Jr Troopa Health Overflow

I'm not sure if this is the correct place for this issue, but when fighting Jr Troopa in the prologue, he does not die until he's done his special attack. This would be fine, except if you have a Volt Shroom enabled and he does his special attack at 0HP, he will take 1 damage and his health will overflow to 255. I'm fully aware this is a randomizer exclusive bug that can simply be avoided by not using a Volt Shroom in this fight, but I figured that it was something worth pointing out. His health is represented as 250 in the video because I attacked him with bombette before I realized what had happened. He is also hovering directly above me because of another glitch with the Volt Shroom. Video attached.

2022-11-07.12-10-12.mp4

Randomize Starting Location Within Seed

I understand that implement something like Multiworld is a huge undertaking, but I've been playing some co-op pape rando with my partner and we thought it would be a lot of fun to have a setting where you can play the exact same seed as someone else, while starting in different locations, or even with different starting partner characters. It's just more interesting to not be in the exact same situation, so people's roles within a co-op randomizer can be more specialized, or their starting situation can throw them out of their comfort zone/habitual playstyle more. Thanks for the work you've done!

(Suggestion) Make Koot Favor Items/Trading Event Items Key Items ( ร  la the Red/Blue/Yellow/Bubble Berries)

Another suggestion. I always play with full randomization of favors and trade rewards.
I have to keep a separate document open on my computer in order to track items for both.

Trying to store and keep up with all of these relatively weak items isn't really a huge issue, but having the game track them and store them in the key item inventory would be--in my opinion--a massive quality of life improvement.

For the sake of documentation:

Koopa Koot Favor Required Items

  • Sleepy Sheep
  • Koopa Tea
  • Tasty Tonic
  • Life Shroom
  • Nutty Cake
  • Koopasta
  • Lime
  • Kooky Cookie
  • Coconut

Trading Event Required Items

  • Koopa Leaf
  • Nutty Cake
  • Coconut

As you can see, there is a lot of overlap. I'm often juggling several koopa leafs/goomnuts/coconuts as soon as I get them and keeping up with them in a separate doc is just a little bit of a pain.

Again, thanks for all of your work!

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.