Setup Your World Extension

Because all Primodium contracts are built and compliant with the open MUD standard (opens in a new tab) for large-scale Ethereum applications, all smart contracts that interface directly with the Primodium world contract should also implement the open MUD standard for a better developer experience.

Getting Started

To start developing with Primodium, you will need to create a MUD project.

  1. Ensure you have node (opens in a new tab), pnpm (opens in a new tab) and foundry (opens in a new tab) installed.
  2. Complete the MUD world extension tutorial (opens in a new tab).
  3. Use the following command at the root of your project to initialize your extension's MUD version to the same as Primodium's MUD version:
pnpm mud set-version --mudVersion 2.0.9 && pnpm i && pnpm build
  1. Any time you have used the <namespace>__<function> pattern in your code to call a function, replace it with the <namespace>_<system>_<function> pattern.
    • This is due to our current MUD version being slightly older than the extension tutorial's MUD version.
  2. Set the WORLD_ADDRESS in your .env file and to the live Primodium world contract address, available on the latest release page.
  3. Set the worlds.json file to the following 10017 chainID and substitute in the world address:
{
  "10017": {
    "address": "PRIMODIUM_WORLD_ADDRESS_HERE"
  }
}
  1. When you eventually want to test and/or deploy your extension, the namespace name for your extension must be unique and not already used within the Primodium world contract. To see if your namespace name is available, use the tool in this MUD Discord forum post (opens in a new tab). When you plan on testing, follow the testing guide so that you don't unnecessarily consume a namespace name in the live Primodium world.
    • If you need to change your namespace name, make sure to do so both in your mud.config.ts file and any function calls that use that namespace name (like what is mentioned in step 4).