doc: new documentation helps

fix: issue with blank shop items
This commit is contained in:
aerinon
2026-01-30 10:05:29 -07:00
parent eda03d8657
commit bf92fe91c2
13 changed files with 2111 additions and 8 deletions

369
installation.md Normal file
View File

@@ -0,0 +1,369 @@
---
layout: default
title: Installation & Usage
nav_order: 3
---
# Installation & Usage
{: .no_toc }
Complete guide to installing and running ALttP Door Randomizer.
{: .fs-6 .fw-300 }
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
## Requirements
- Python 3.10 or higher (for running from source)
- A legal copy of The Legend of Zelda: A Link to the Past (JP 1.0 version) ROM
---
## Installation Methods
### Method 1: Pre-built Releases (Recommended)
This is the easiest method for most users.
1. Visit the [Releases page](https://github.com/aerinon/ALttPDoorRandomizer/releases)
2. Download the appropriate build for your system:
- **Windows**: `ALttPDoorRandomizer-{version}-windows.zip`
- **macOS**: `ALttPDoorRandomizer-{version}-osx.tar.gz`
- **Linux**: `ALttPDoorRandomizer-{version}-linux-focal.tar.gz`
3. Extract the archive to a folder of your choice
4. Run the executable:
- **Windows**: `DungeonRandomizer.exe`
- **macOS/Linux**: `./DungeonRandomizer` or `./Gui.py`
### Method 2: Running from Source
For developers or users who want to run the latest development version.
#### Step 1: Clone the Repository
```bash
git clone https://github.com/aerinon/ALttPDoorRandomizer.git
cd ALttPDoorRandomizer
```
For the development branch:
```bash
git checkout DoorDevUnstable
```
#### Step 2: Install Python Dependencies
The project includes a script to install platform-specific dependencies:
```bash
python resources/ci/common/local_install.py
```
This will install all necessary Python packages and platform-specific dependencies.
#### Step 3: Verify Installation
Test that everything is working:
```bash
python DungeonRandomizer.py --help
```
You should see the help text with all available options.
---
## Usage
### GUI (Graphical User Interface)
The GUI provides an easy-to-use interface for generating seeds.
#### Starting the GUI
**Pre-built release:**
- **Windows**: Double-click `DungeonRandomizer.exe`
- **macOS/Linux**: Run `./DungeonRandomizer` from terminal
**From source:**
```bash
python Gui.py
```
#### Using the GUI
1. **Select your ROM**: Click "Select ROM" and choose your ALttP ROM file
2. **Configure settings**: Use the tabs to adjust:
- **Dungeon Settings**: Door shuffle mode, intensity, key logic
- **Item Settings**: Item placement, shopsanity, pottery
- **Entrance Settings**: Entrance randomization options
- **Enemy Settings**: Enemy shuffle, boss shuffle
- **Game Options**: MSU resume, collection rate, etc.
3. **Generate**: Click "Generate" to create your seed
4. **Output**: The patched ROM will be created in the same directory
### CLI (Command-Line Interface)
The CLI offers more control and is useful for batch generation or scripting.
#### Basic Usage
```bash
python DungeonRandomizer.py [options]
```
#### Common Examples
**Basic crossed dungeon shuffle:**
```bash
python DungeonRandomizer.py --doorShuffle crossed --intensity 2
```
**With key shuffle and shopsanity:**
```bash
python DungeonRandomizer.py --doorShuffle crossed --keyshuffle wild --shopsanity
```
**Pottery and enemy drops:**
```bash
python DungeonRandomizer.py --doorShuffle basic --pottery lottery --dropshuffle underworld
```
**Generate without creating ROM (testing):**
```bash
python DungeonRandomizer.py --suppress_rom --spoiler none
```
**Create BPS patch instead of ROM:**
```bash
python DungeonRandomizer.py --bps --doorShuffle crossed
```
**Batch generation:**
```bash
python DungeonRandomizer.py --doorShuffle crossed --count 10
```
#### Key CLI Arguments
**Dungeon Settings:**
- `--doorShuffle [vanilla|basic|partitioned|crossed]` - Door shuffle mode
- `--intensity [1|2|3]` - Intensity level
- `--keyshuffle [none|wild|universal]` - Key shuffle mode
- `--key_logic [partial|strict|dangerous]` - Key logic algorithm
- `--door_type_mode [original|big|all|chaos]` - Door type shuffle
- `--trap_door_mode [vanilla|optional|boss|oneway]` - Trap door removal
**Item Settings:**
- `--algorithm [balanced|vanilla_fill|major_only|dungeon_only|district]` - Item placement
- `--pottery [none|keys|cave|cavekeys|reduced|clustered|nonempty|dungeon|lottery]` - Pot shuffle
- `--dropshuffle [none|keys|underworld]` - Enemy drop shuffle
- `--shopsanity` - Enable shop randomization
- `--bombbag` - Enable bomb bag item
- `--pseudoboots` - Enable pseudo boots
**Entrance Settings:**
- `--shuffle [vanilla|simple|restricted|full|crossed|insanity|...]` - Entrance shuffle mode
- `--overworld_map [default|compass|map]` - Overworld map mode
**Enemy Settings:**
- `--enemizercli [none|basic|shuffled]` - Enemy shuffle mode
- `--enemy_damage [default|shuffled|chaos]` - Enemy damage
- `--enemy_health [default|easy|hard]` - Enemy health
- `--shufflebosses [none|basic|normal|chaos|unique]` - Boss shuffle
**Logic:**
- `--logic [noglitches|owglitches|hybridglitches|nologic]` - Logic mode
- `--mode [open|standard|inverted]` - Game mode
- `--goal [ganon|trinity|ganonhunt|completionist]` - Victory condition
**Generation:**
- `--seed SEED` - Set seed number
- `--count N` - Generate N seeds
- `--suppress_rom` - Don't create ROM (testing)
- `--bps` - Create BPS patch instead of ROM
- `--spoiler [none|spoiler|playthrough]` - Spoiler log type
**Game Options:**
- `--msu_resume` - Enable MSU resume
- `--collection_rate` - Display collection rate
- `--reduce_flashing` - Reduce flashing animations
- `--shuffle_sfx` - Shuffle sound effects
For a complete list of options:
```bash
python DungeonRandomizer.py --help
```
---
## Multiworld Setup
Door Randomizer supports multiworld seeds where multiple players play different randomized games with shared item pools.
### Installing Multiworld Dependencies
Run the same installation script to install multiworld-specific dependencies:
```bash
python resources/ci/common/local_install.py
```
### Generating Multiworld Seeds
Create YAML files for each player (see `docs/player1.yml`, `docs/player2.yml`, `docs/player3.yml` for individual examples, or `docs/multi_mystery_example.yaml` for a complete multiworld configuration).
**Example player configuration:**
```yaml
description: Player 1's World
name: Player1
doorShuffle: crossed
intensity: 2
keyshuffle: wild
shopsanity: true
```
Generate the multiworld using the multi-mystery configuration file:
```bash
python DungeonRandomizer.py --customizer docs/multi_mystery_example.yaml
```
### Running Multiworld Server
```bash
python MultiServer.py
```
It will prompt you for the multidata file created from the multiworld generation step.
### Connecting with Multiworld Client
```bash
python MultiClient.py
```
Enter the server address and your player name to connect.
---
## Testing & Verification
### Running the Test Suite
To verify your installation and test the randomizer logic:
```bash
python TestSuite.py
```
**Test with specific settings:**
```bash
python TestSuite.py --dr basic --count 10 --tense 2
```
**Run specific test modules:**
```bash
python -m pytest test/
python -m pytest test/dungeons/TestDarkPalace.py
```
---
## Troubleshooting
### Common Issues
#### "Python not found" or "python: command not found"
- **Windows**: Make sure Python is installed and added to PATH during installation
- **macOS/Linux**: Install Python 3.10+ via your package manager or from [python.org](https://www.python.org/)
#### "No module named 'yaml'" or similar import errors
Run the dependency installation script:
```bash
python resources/ci/common/local_install.py
```
#### Pre-built executable won't run on macOS
macOS may block unsigned applications. Right-click the app and select "Open" to bypass the warning.
#### Pre-built executable won't run on Linux
Ensure the file has execute permissions:
```bash
chmod +x DungeonRandomizer
```
#### GUI window is too small or cut off
Try running from the command line to see if there are any error messages. Some display scaling settings can cause issues.
#### Generated ROM doesn't work with emulator
- Ensure you're using a clean US version of ALttP ROM (Japan 1.0)
- Try a different emulator (recommended: SNES9x, RetroArch with bsnes core)
- Verify the ROM was patched successfully (check file size and modification date)
### Getting Help
If you encounter issues:
1. Check the [Known Issues](/known-issues) page
2. Search [GitHub Issues](https://github.com/aerinon/ALttPDoorRandomizer/issues)
3. Ask in the [ALTTP Randomizer Discord](https://discordapp.com/invite/alttprandomizer):
- `#door-rando` - General help and questions
- `#bug-reports` - Report bugs and issues
When reporting issues, please include:
- Operating system and version
- Python version (`python --version`)
- Door Randomizer version or commit hash
- Full error message or description of the problem
- Settings used (CLI command or screenshot of GUI)
---
## Advanced Usage
### Custom Presets
You can create custom preset files to save your favorite settings combinations.
See the [Customizer documentation](docs/Customizer.md) for details on creating custom seeds with custom dungeons and rooms.
### Build from Source (Packaging)
To create a standalone executable from source:
See [BUILDING.md](docs/BUILDING.md) for detailed build instructions.
### Development Workflow
For contributors:
1. Fork the repository
2. Create a feature branch from `DoorDevUnstable`:
```bash
git checkout DoorDevUnstable
git checkout -b my-feature
```
3. Make your changes
4. Run tests: `python TestSuite.py`
5. Submit a pull request to `DoorDevUnstable` (not main/master)
---
## Next Steps
- Read the [Features Guide](/features) for detailed information on all settings
- Check the [Known Issues](/known-issues) page for current limitations
- See the [Roadmap](/roadmap) for upcoming features
- Join the community on [Discord](https://discordapp.com/invite/alttprandomizer)