An Archipelago integration mod for the game PEAK, allowing the game to be played as part of a multiworld randomizer.
This mod connects PEAK to the Archipelago multiworld randomizer system. Ascent unlocks, badges, and other progression items are randomized across multiple games and players, creating a unique cooperative or competitive experience.
- Ascent Progression: Unlock ascents (1-7) by receiving Archipelago items
- Badge Randomization: Badges are tracked and managed through Archipelago
- Location Checks: Game events and collectibles send progression to other players
- DeathLink Support: Optional death synchronization with other players
- Auto-Reconnect: Automatically reconnects to the Archipelago server if disconnected
- Persistent State: Tracks received items and checked locations across game sessions
- Real-time Integration: Seamlessly integrates with PEAK's gameplay
This mod consists of two main components:
- File:
PeakArchipelagoPlugin.cs - Purpose: Runs inside the PEAK game client
- Dependencies: BepInEx, Archipelago.MultiClient.Net, Harmony
- Location:
peak/directory - Purpose: Defines game logic, items, locations, and rules for the Archipelago server
- Files:
__init__.py- Main world definitionItems.py- Item definitions and classificationsLocations.py- Location (check) definitionsOptions.py- Player-configurable optionsRegions.py- Game region structureRules.py- Progression logic and access rules
-
Install BepInEx:
- Download BepInEx 5.x for your platform
- Extract to your PEAK game directory
- Run the game once to generate BepInEx folders
-
Install the Plugin:
- Download the
PeakArchipelagoPluginDLLfolder from the releases - Drag the entire
PeakArchipelagoPluginDLLfolder into yourBepInEx/plugins/directory - The folder contains all necessary DLLs including the plugin and Archipelago.MultiClient.Net
- Download the
-
Launch the Game:
- Start PEAK - the plugin will create a configuration file on first run
- Configure your connection settings (see Configuration section)
-
Locate Archipelago Installation:
- Find your Archipelago installation directory
- Navigate to
lib/worlds/orworlds/
-
Copy World Files:
- Copy the entire
peak/folder to the Archipelago worlds directory
- Copy the entire
-
Verify Installation:
- Run Archipelago's world validator to ensure proper installation
- The "PEAK" option should appear when generating games
The plugin creates a configuration file at BepInEx/config/com.yourname.peak.ap.cfg:
[Connection]
# Archipelago server address
Server = archipelago.gg
# Server port
Port = 38281
# Your slot/player name
Slot = Player1
# Room password (if required)
Password =
# Auto-reconnect on disconnect
AutoReconnect = true
[DeathLink]
# Enable DeathLink mode
DeathLink = false
# Death behavior: 0 = Reset Run, 1 = Reset to Checkpoint
DeathLinkBehavior = 0
# Drop items on DeathLink death
DeathLinkDropItems = true
# Apply status effects on DeathLink death
DeathLinkApplyStatus = trueWhen generating an Archipelago game, the following PEAK-specific options are available:
- Goal: Choose between "Reach Peak" or "Complete All Badges"
- Required Ascent Count: Number of ascents needed to complete (0-7, default: 4)
- Required Badge Count: Number of badges needed for badge completion goal (10-50, default: 20)
- Death Link: Enable death synchronization with other players
- Death Link Behavior: Choose between full run reset or checkpoint reset
-
Generate a Multiworld:
- Create a YAML configuration for your PEAK world
- Generate the multiworld using Archipelago's generator
- Host or join a multiworld session
-
Start PEAK:
- Launch the game with the mod installed
- The in-game UI will show connection status
-
Connect to Archipelago:
- Use the in-game menu (press the UI toggle key)
- Connection will happen automatically based on your config
- Verify connection status in the UI overlay
-
Play the Game:
- Ascents are initially locked - unlock them by receiving items
- Collecting items and completing objectives sends checks to other players
- Receive items from other players as they complete their objectives
- Work together (or compete) to complete your goals!
The mod includes an on-screen overlay showing:
- Connection status
- Current server/slot information
- Items received counter
- Last received item and timestamp
- Luggage opened count
- DeathLink status and history
- Unlocked ascents
Toggle the UI visibility using the configured hotkey.
Requirements:
- .NET Framework compatible with Unity
- BepInEx 5.x references
- Archipelago.MultiClient.Net library
- Harmony library
- PEAK game assemblies for reference
The Python world code follows Archipelago's world API:
- Modify
Items.pyto add/change items - Update
Locations.pyfor new location checks - Edit
Rules.pyto adjust progression logic - Change
Options.pyto add player options
- Test the client plugin in isolation with debug logging enabled
- Generate test multiworld with only PEAK
- Verify item receiving and location checking
- Test with other Archipelago games for integration
- Verify BepInEx is installed correctly
- Check
BepInEx/LogOutput.logfor errors - Ensure all dependencies are in the plugins folder
- Verify server address and port in config
- Check firewall settings
- Ensure the Archipelago server is running and accessible
- Check connection status in UI
- Verify slot name matches your generated world
- Review state file for corruption:
BepInEx/config/Peak.AP.state.*.txt
- Ensure you're connected to the server
- Check that the location exists in the world definition
- Review debug logs for check submission errors
- Mod Author: [Your Name]
- Archipelago: Archipelago Team
- PEAK: [Original Game Developer]
- BepInEx: BepInEx Team
Current Version: 0.3.0
[Specify your license here]
Note: This is a fan-made mod and is not affiliated with or endorsed by the original PEAK developers.