Cave spawning
From Pikmin Technical KB
This page explains the game's process behind spawning enemies in a cave. This is obtained through observation, and is subject to have some parts incorrect.
Editor's note: Until further notice, this only applies to spawning enemies.
Process[edit | edit source]
Some time after the cave is built out of its available units, the game will run this "main algorithm" in order to spawn objects.
Main algorithm[edit | edit source]
- For each
TekiInfo
entry in the sublevel's configuration, in order...- Store the minimum amount of enemies to spawn.
- Store the spawn coordinate type.
- Do the spawn algorithm with this enemy type, amount, and spawn coordinate type.
- If the number of enemies hasn't reached
{f002}
yet...- For each
TekiInfo
entry in the sublevel's configuration...- Grab its random distribution weight and add it to a list.
- While the number of enemies hasn't reached
{f002}
...- Randomly decide what enemy to spawn next, using the weighted list built in the last step.
- Store the enemy's type.
- Store the spawn coordinate type.
- Do the spawn algorithm with this enemy type, amount of 1, and spawn coordinate type.
- For each
- Remove every spawned object that is not meant to be there (collected treasures, Candypop Buds that disappear when you have 20+, etc.)
Spawn algorithm[edit | edit source]
- While the intended amount of enemies hasn't been spawned yet...
- If all of the possible spawn positions of the intended type have been used up, leave this algorithm.
- Pick a random non-dead end spawn coordinate of the intended type (every unit in the cave has a set of spawn coordinates).
- If this coordinate is out of bounds, skip it.
- If this coordinate has already been used, skip it.
- Decide how many enemies to spawn here, picking randomly between the spawn coordinate's amount limits.
- For each one in that amount...
- If the number of enemies spawned here surpasses the intended amount, leave this algorithm.
- Spawn that enemy in these coordinates (with slight variation).
- Mark this spawn coordinate as used.
Weighted distribution[edit | edit source]
Some types of object may come up more often than others. For instance, a developer could want a cave where the enemy slots are filled randomly, with each one having a 90% chance of being a Red Bulborb, and 10% chance of being a Wollywog. This is known as weighted random distribution. The way Pikmin 2 does this is that every object definition has a weight number that goes from 0 to 9. Any object definition with a weight of 0 will not be picked, though.
To know what the chances are of the game picking a given object, all of the weight numbers are summed up, and the chance of that object is <object's weight> / <sum>
. So for example, if you have the following list:
Object | Weight |
---|---|
Red Bulborb | 4 |
Wollywog | 7 |
Water Dumple | 3 |
The chances of spawning a Red Bulborb are 28.5% (4 in 14), the chances of a Wollywog are 50% (7 in 14), and the chances of a Water Dumple are 21.4% (3 in 14).