A C# library for integrating games with the Archipelago multiworld randomizer. Provides memory read/write, location monitoring, item handling, overlay display, and support for both native process memory and BizHawk via named pipe.
dotnet add package Archipelago.Core
using Archipelago.Core;
using Archipelago.Core.Helpers;
using Archipelago.Core.Models;
using Archipelago.Core.Util;
var gameClient = new GameClient("MyGame.exe");
if (!gameClient.Connect())
throw new Exception("Game not running");
var client = new ArchipelagoClient(gameClient);
// Wire up events after Login initialises the managers
client.Connected += async (s, e) =>
{
client.ItemManager.ItemReceived += OnItemReceived;
client.LocationManager.LocationCompleted += OnLocationCompleted;
await client.ReceiveReady();
await client.MonitorLocationsAsync(BuildLocationList());
};
await client.Connect("archipelago.gg:38281", "My Game");
await client.Login("PlayerName");| Topic | Description |
|---|---|
| Game Client | Connecting to a game process |
| ArchipelagoClient | Server connection, login, events, and state |
| Items | Receiving and handling items |
| Locations | Defining and monitoring check locations |
| Memory API | Reading and writing game memory |
| PlatformMemory | Process management and native memory utilities |
| Object Mapping | Mapping C# classes to memory structures |
| BizHawk | Using Archipelago.Core with BizHawk via named pipe |
| Overlay | Displaying text over the game window |
| GPS Handler | Tracking player position and map changes |
| Death Link | Synchronising deaths between players |
| Advanced | Function hooking, lag simulation |
| Configuration | config.ini file support and custom settings |
MIT. See LICENSE for details.
Issues and pull requests welcome at https://github.com/ArsonAssassin/Archipelago.Core.