Skip to content

The level system

Gur Ladizhinsky edited this page Jul 5, 2023 · 2 revisions

The level system

Levels in Frogman Magmaborn are separated into 3 independent parts – the level metadata, the selected conversation, and the selected map – to allow for multiple variations of the same level.

The level creation process

Generally, levels in Frogman Magmaborn are structured like this:

  1. Load the matching level metadata.
  2. Select a semi-random conversation matching the level metadata.
  3. Select a semi-random map matching both the level metadata and the selected conversation.
  4. Play the pre-battle part of the selected conversation.
  5. Begin the battle.
  6. If the player loses (the :lose: command gets called – more on commands in the conversation system), show the Game Over screen and return to the menu.
  7. If the player wins (finishes the map objective or the :win: command gets called):
    1. Play the post-battle part of the selected conversation.
    2. Show the level-up screen.
    3. Increase the level number, then go back to 1.

We will cover steps 1-3 here, and the difference between level metadata, conversations and maps. The other steps – and more details about the first three – will be explained in the tutorial.

The level metadata

The level metadata contains the information about the level that will (almost) always remain the same – mainly the different teams in that level, but also the battle music, the different alliances between the teams, and the unit replacements.

Level Metadata Editor

The Level Metadata Editor in Frog Forge, showing the level metadata of level 1.

The level metadata contains a lot of information, and is fully explained in the relevant tutorial, but the most important thing about it is that it’s constant – no matter how many times you play it, the level metadata for each level will stay the same. This is not true for conversations and maps.

The selected conversation

After loading the level metadata, the game selects a matching battle conversation. The amount of possible battle conversations will usually be much larger than the amount of levels – for example, at the time of writing, Frogman Magmaborn has over 70 possible battle conversations, yet only 8 complete levels.

Sample conversation in Frog Forge

A sample conversation, as seen in Frog Forge’s Conversation Editor. Understanding and writing conversations is a fairly complex topic, which will be covered more in-depth in the tutorial.

Each conversation defines a set of requirements for selecting it – if any of the requirements is not fulfilled, the conversation will not appear. The most common requirement is level number – every selectable conversation in Frogman Magmaborn can only appear in one specific level number.

After filtering all conversations, the game will select the conversation with the highest priority. If two or more conversations are tied, it will randomly select one of them.

Sample conversation in-game

The same conversation inside the game.

A more detailed explanation of conversations and all their different parts is available in the relevant tutorial. The conversation system is also important for understanding them.

The selected map

Maps are where the level actually takes place. Maps define the terrain, the objective, and all the units in the level, and are directly tied to the level number: every map can only appear in one specific level number.

Map Editor

The Map Editor in Frog Forge, showing one possible map for level 4.

Maps are the last thing selected when generating a level, because conversations can potentially change the pool of available maps – for example, in Frogman Magmaborn, the first level’s maps are divided into maps for Firbell and maps for Kresla, which can only appear if you get the respective character in the first conversation. This also means that different maps can appear for the same conversation in different runs/save files.

Sample conversation in-game, but in a different map

The same conversation from before, this time in a different map.

Clone this wiki locally