Jugo Level Editing [EARLY DRAFT]

Jugo will soon have a built-in level editor and we are considering Steam Workshop support. Until then, you can still build your own Jugo levels, just whip out your favorite text editor. You can create new Jugo levels in plain text (JSON).

Minimum data required

Example:

{
  "Id" : "B678TE14",
  "Author" : "TheHeadGear",
  "Caption" : "B: Default fill, fixed Layout",
  "Seed" : "ABC123",
  "DesignScore" : 100000,
  "LevelDifficulty" : "Medium"
}

Id [Required]

The Id will be created automatically by Jugo. It is used to globally identify the level allowing competition on the leaderboards.

Seed [Optional]

Seed used by the shuffle bag pseudo random number generator (PRNG). If blank, Jugo will create a random seed. Set the seed to a specific value to ensure the fill is the same for each play.

Caption [Required]

Name of the level

DesignScore [Required]

Score to beat

LevelDifficulty [Required]

Easy, Medium, or Hard.

Score to beat

Each level can have up to 16 different ShuffleBags, one for each SpawnPoint. The minimum number of ShuffleBags is 1. The MatchingRegion ShuffleBag is a special case, it is only used (if defined) during the initial board fill.

A Single ShuffleBag

SuffleBags hold particles waiting to enter the board. Bags can be completely randomized or dole out the particles in a specific sequence.

Levels can use a single ShuffleBag or up to 16 bags, one for North/South/East/West edge square.

Jugo will automatically create a single bag by ... #TBD# or you can define the bag yourself.

Example: The following creates a single bag in the default Endless mode with 10 Five Particles and 1 Ten particle.

{
  "Id" : "D678TE16",
  "Caption" : "D: Single ShuffleBag, Auto-Layout",
  "Seed" : "192S",
  "DesignScore" : 200000,
  "LevelDifficulty" : "Hard",
  "shuffleBag" : {
    "mode" : "AutoRefill",
    "contents" : [
      {
        "kind" : "Particle",
        "flavor" : "Circle",
        "number" : 5,
        "count"  : 10
      },
      {
        "kind" : "Particle",
        "flavor" : "Square",
        "number" : 10
      }
    ]
  }
}

SuffleBag Modes

AutoRefill [Default]

A real shuffle bag the refills itself when calling Next() when the bag is
empty. Calling Next() removes the item from the bag.

Endless

Endless mode acts just like the PRNG does without a bag, the bag is only
used to determine the range of contents returned by the bag.

SequenceRepeat

A non-shuffle bag that gives items out in order and refills automatically.

Multiple ShuffleBags

Multiple ShuffleBags require specifying which bag supply which part of the
board. Jugo calls squares that supply new tokens SpawnPoints.

Example: Create two bags, one with a single Five Particle and one with a
single CherryPi. Refer to the #TBD# diagram for SpawnPoint coordinates.

{
  "Id" : "A678TE13",
  "Caption" : "A: Multiple ShuffleBags",
  "Seed" : "FFFF",
  "DesignScore" : 200000,
  "LevelDifficulty" : "Easy",
  "shuffleBags" : [
    {
      "id" : "Circle5",
      "contents" : [
        {
          "kind" : "Particle",
          "flavor" : "Circle",
          "number" : 5
        }
      ]
    },
    {
      "id" : "CherryPi",
      "contents" : [
        {
          "kind" : "Proto",
          "flavor" : "Circle",
          "number" : 16
        }
      ]
    }
  ],
  "spawnPoints" : [
    {
      "id" : "2:7",
      "shuffleBagId" : "Circle5"
    },
    {
      "id" : "3:7",
      "shuffleBagId" : "Circle5"
    },
    {
      "id" : "4:7",
      "shuffleBagId" : "Circle5"
    },
    {
      "id" : "5:7",
      "shuffleBagId" : "Circle5"
    },
    {
      "id" : "2:0",
      "shuffleBagId" : "CherryPi"
    },
    {
      "id" : "3:0",
      "shuffleBagId" : "CherryPi"
    },
    {
      "id" : "4:0",
      "shuffleBagId" : "CherryPi"
    },
    {
      "id" : "5:0",
      "shuffleBagId" : "CherryPi"
    },
    {
      "id" : "7:2",
      "shuffleBagId" : "Circle5"
    },
    {
      "id" : "7:3",
      "shuffleBagId" : "Circle5"
    },
    {
      "id" : "7:4",
      "shuffleBagId" : "Circle5"
    },
    {
      "id" : "7:5",
      "shuffleBagId" : "Circle5"
    },
    {
      "id" : "0:2",
      "shuffleBagId" : "Circle5"
    },
    {
      "id" : "0:3",
      "shuffleBagId" : "Circle5"
    },
    {
      "id" : "0:4",
      "shuffleBagId" : "Circle5"
    },
    {
      "id" : "0:5",
      "shuffleBagId" : "Circle5"
    }
  ]
}
top