Clam Blitz is a new mode that was added to Splatoon 2 in the version 2.1.0 update. It is far more complex than the previously released Ranked gamemodes and has left newcomers wondering what the rules are. (It doesn’t help that there is no required tutorial.) Even today, a year and a half after its release, some details about the gamemode mystify players. For example, it isn’t clear how clam spawning works. In addition, how the game decides to initiate Overtime is never explained and isn’t immediately obvious. With this article, I hope to clear up many of the mysteries surrounding Clam Blitz.
A quick note: I will be measuring times in “frames” since that is how they are specified in the game data. (Splatoon 2 runs at 60 frames per second, so each frame is 16.6 milliseconds.) For convenience, I will also provide times in “human units” like minutes and seconds.
If you like the article, please consider donating to my Patreon!
In case you are new to Clam Blitz, here is a quick rundown of the basic rules.
- Clams spawn in various places across the entire stage.
- Players have to collect 10 clams to create a Power Clam.
- Throwing a Power Clam at the opposing team’s basket will break the barrier around the basket.
- Other players can throw individual clam into the basket to score +3 points per clam. Power Clams give a score of +20 points.
- If there is a long period of time where there are no clams thrown into the basket, the barrier will regenerate and give the opposing team a free Power Clam.
- The team who scores the most clams wins.
This section will detail everything to know about the clams themselves.
In preparation for this article, I asked on my Twitter what people wanted to know the most about Clam Blitz. Probably the most common questions were related to how exactly clam spawning worked and how the game decides to spawn them. I will try to describe it to the best of my ability. This does get technical and dry at times, but I hope it doesn’t get too boring.
The clam spawning system involves three components: two objects called
Obj_VictoryClamSpawnPoint, and the Clam Blitz Director. (
Victory is the internal codename for Ranked.)
This object’s internal name is odd. It appears to come from a time when the Clam Blitz gameplay was different – more on that later. The emit area objects control where clams spawn at the start of the match. There can be multiple emit area objects per stage. Each emit area has a “weight”, which controls how many clams will appear within that area. When the game starts, 30 clams will be placed within the emit areas, with more clams placed in areas with higher weights.
I have included diagrams of each stage’s emit areas and their respective weights below. (While the emit areas’ weights do not need to add up to 30 clams, the stage designers still set most, if not all, of the weight values so that they add up to 30.)
This object, as you might expect, controls where clams spawn at regular intervals. There are many instances of these objects placed throughout each stage to provide multiple points where clams spawn.
However, these spawn points are only placed on one team’s side. “Then how do clams spawn on the other team’s side?”, you might ask. There is some special code used specifically for spawn points which automatically creates a mirrored version of the object. When the alpha team object is loaded, a corresponding bravo team object will be placed on the opposite side of the stage. An internal link is also generated between these objects for later use, so the game is able to access the bravo spawn point from the alpha point, and vice versa. This will be important to know for later.
The automatic generation can be turned off. This is used in some stages to place a spawn point directly in the middle. If the automatic generation was turned on for a spawn point in such a position, 8 clams would spawn at that spot within a short amount of time.
Here are diagrams of each stage’s spawn point locations. (Dots with the same color have an internal link because of mirroring.)
There is a set of code internally referred to as the “Director” which handles many of the rules and mechanics for Clam Blitz. (If you’re thinking of Left 4 Dead right now, you’re not alone!) The Director is updated once per frame. Every time this happens, it runs does a check to see whether it should be spawning any clams.
First, it adds up the total of all the clams in player possession and on the field. Power Clams are not included in this total. If it is more than 50, the Director will not spawn any clams.
Second, the Director determines whether an “accelerated spawning” mode should be used. There are two conditions which are checked (either one being fulfilled will activate accelerated spawning):
- Is the calculated total of clams less than 25?
- Is the game in Overtime and the scores are equal?
Third, it calculates how long it should be waiting before spawning clams. If the accelerated spawning mode is activated, this will be 240 frames (4 seconds). Otherwise, it will be 720 frames (12 seconds). It then divides this value by a per-stage number to get the final amount of waiting time. This value is set to 1 in every stage, which effectively means the standard Director values always be used. However, it does open the door for Nintendo to adjust the spawning times per-stage in the future. The Director will not spawn clams until the calculated amount of time has passed.
Fourth, the Director decides how many clams to spawn. It subtracts the number of clams in play from 50 and caps the result to a maximum of 4. This means the Director can spawn 1 to 4 clams per update. It then schedules the clams to appear on a spawn point on the next frame.
This process would then repeat every time the Director is updated.
HOW SPAWN POINTS ARE CHOSEN
Unfortunately, the code that is used to choose the spawn point is complicated and I was not able to reverse engineer all of it in time for this article. However, I can detail its most important aspects, though there is a chance that they are wrong or affected by other unknown conditions.
The Director goes through each spawn point object in the order they were loaded. It does not appear to favour any team regardless of who is in the lead. For each one, a random number generator is used to determine if it should be chosen. If the resulting number meets certain conditions (too technical for this article and it’s impossible to predict the outcome anyway), this spawn point will be chosen as a candidate.
To understand what happens next, I first need to mention a spawn point mechanic that hasn’t been relevant until now. Each spawn point can be considered as “occupied”. The game decides whether a spawn point is occupied by whether there is a player or any uncollected clams inside of it.
The Director will then check the “occupation status” of the current spawn point. If it is occupied, the process starts again from the beginning and another spawn point object is checked. If the tested spawn point is unoccupied, it will be chosen and clams will spawn in that area on the next frame.
Yes, this does mean you can temporarily disable spawn points. For example, throwing clams onto a spawn point will stop it from being a candidate for new clams to appear at. However, the despawning mechanics described in the next section makes this strategy near-useless. You could just idle on the spawn point, but then you wouldn’t be contributing much to your team. The best option is to leave one of the spawned clams there since it won’t despawn (see the section below), but still make the Director think the area is occupied. Anyway, I digress.
Remember that spawn points can automatically generate a corresponding object on the opposite side of the map? This is where it becomes helpful. If clam spawning is successful and the current spawn point has an automatically generated spawn point linked to it, the Director stores it in memory for later use. The next time clams need to be spawned, the Director attempts to spawn them at the linked spawn point. If clams are unable to be spawned because of its occupation status, it is discarded and the Director goes back to checking every loaded spawn point. This effectively makes a portion of clam spawning a “mirrored” behaviour.
Players can drop clams in various ways. For example, they can be dropped by pressing A (or L) to throw them on the ground. In addition, clams are dropped upon death or disconnection.
When a player dies, they don’t drop all of their clams. The number of clams dropped depends on how many they were carrying.
|Carried Clams||Dropped Clams|
|2 ~ 3||2|
|4 ~ 6||3|
|7 ~ 10||4|
Once a clam is dropped, it checks on every frame to see how long it has been on the floor for. After 240 frames (4 seconds), the clam will start to blink to alert the player it will disappear. At 600 frames (10 seconds), the clam will despawn. The same times are true for Power Clams as well. However, clams that have been placed by the Director do not despawn.
The Clam Basket
While it may seem like there isn’t much to say about the basket, it does have some notable properties and it’s worth it to talk about them!
When you first break the basket’s barrier, it is initially set to close in 600 frames (10 seconds). For each clam you throw into the basket, it extends the timer by 180 frames (3 seconds). Each Power Clam extends the timer by 600 frames. However, the maximum value the timer can reach is 600 frames.
When the basket closes and the barrier regenerates, it will always take 600 frames until the barrier is allowed to be broken again. During this time, the basket will be in its “closed” state and no Power Clam can reach it. Meanwhile, the opposite team’s Basket barrier will be available to break immediately.
The previously mentioned per-stage number which controls clam spawn times is set by the basket object, which seems odd. My only guess as to why is that every stage is guaranteed to have a basket object, so it is an easy place to access the value for balancing.
Interestingly, the basket’s barrier has HP. It can take 1000 HP of damage before the barrier breaks. When a Power Clam hits the barrier, it does ~10 damage per frame (so it will take ~1 or 2 seconds for the barrier to break). Unfortunately, I was not able to find the exact amount of damage per frame.
When you throw a clam in the air, it becomes a bullet akin to ink fired from a weapon. This is to make it easier to specify behaviour like how they fly in the air, what happens when a Power Clam touches the floor, and more. However, it is coded to not deal any damage, which is confusing because the basket’s barrier breaks after its HP is depleted. This is why I was not able to find the exact damage that a Power Clam does to the barrier.
The barrier actually has parameters to amplify damage when a player equipped with Object Shredder throws a Power Clam at it. Unfortunately, changing the parameter did nothing when I tried. (I tried changing a similar parameter for the Rainmaker shield since that is also affected by Object Shredder, and the change worked.) I suspect that the Power Clam damages the barrier in an “unusual” way, and because of this, the Object Shredder parameters are never taken into account in the damage calculations. If it did work properly, a player with Object Shredder shoes would throw Power Clams that deal 10% more per damage per hit to the basket’s barrier. This would open the basket faster.
I have completed one quick frame-by-frame analysis of breaking the basket’s barrier with Object Shredder and without on version 3.1.0 and found no significant difference. If someone could try on the latest version and ping me on Twitter with their results, that would be great.
Another one of the many questions I was asked is how Overtime in Clam Blitz works. It can be quite confusing, and Nintendo doesn’t explain any of it, so here’s what I was able to figure out.
The Director will start Overtime if any of the conditions are fulfilled:
- The losing team is in possession of a Power Clam
- The winning team’s basket is open
Overtime ends if any of the following conditions are met:
- The losing team fails to open the winning team’s basket within 1200 frames (20 seconds)
- The losing team’s Power Clams despawn
- The winning team’s basket closes and the losing team did not take the lead
- The losing team takes the lead
- The winning team scores
Note: if Overtime starts because the losing team is in possession of a Power Clam, the winning team’s basket must be opened within the 1200 frames. The Power Clam hitting the barrier does not count as being opened! If the losing team manages to open the basket in time, Overtime will be extended until the basket closes or the losing team takes the lead.
There is a special kind of Overtime for Clam Blitz. If neither team manages to score within the match, 10800 frames (3 minutes) of Overtime will begin. Whoever scores first wins. If nobody scores during that time, the game will automatically end. Contrary to popular belief, the game does not pick a winner at random in this scenario. The team that made the most Power Clams throughout the entire match wins. If both teams tie again, the game will give the win to the alpha team.
While researching the game code and files, I happened to come across some unused content for Clam Blitz. In case you were not aware, Nintendo accidentally included a bunch of beta, testing, and debugging content in version 1.0.0. This continued with every update all the way to version 3.2.0. After that, they started to become more mindful of what was in the files and removed everything that was unnecessary for the public version of the game. Despite this, they still slip up sometimes and include things that are still being worked on. For this article, I researched version 3.1.0 of the game as it is the last version that included the helpful debugging content. (However, I do also research the files from version 4.8.0 and verify my findings there.)
After coming across this early content, I then looked in some older versions of the game and found some old Clam Blitz test stages. By looking at what objects are inside these test stages, I am able to tell how the gamemode worked at the specific point in time that the stage was being used. There are three distinct “versions” of Clam Blitz in these files.
The “Collect ‘Em All” Era
In version 1.2.0, Nintendo added all of the code and files necessary to play a prototype version of Clam Blitz, including several objects and a basic version of the Director.
- Clams are hidden in locations defined by an object called
Obj_VictoryClamArea. The number of clams hidden in each area object is customizable.
- To reveal clams, you cover its location with your ink.
- You can collect clams by touching them. They do not need to be revealed for you to pick them up. Each clam gives +1 point to your team.
- Additional clams are continuously spawned in the area objects as the current clams are collected.
- Clams despawn after 30 seconds, regardless if they are hidden or not.
- The first team to reach 100 clams wins.
- If the scores are even at the end of the match, Overtime begins. When a team manages to collect one clam, the game is over.
- After the first 1200 frames (20 seconds) of the match, a container is dropped from the sky in a random place.
- For every 87.5 damage inflicted on the container, one clam is released.
- After 1750 damage (releasing 20 clams), the container is destroyed and an additional 15 clams are released at the same time.
- Only one container can be on the field at any given time.
- After the container is destroyed, another container will be spawned 600 frames (10 seconds) later.
- Container spawn locations are biased towards the losing team – that is, containers will spawn closer to their spawn point.
As you can tell, the gameplay is significantly different than what we got in the 2.1.0 update. Core aspects like collecting clams are the same, but scoring is entirely different, and some mechanics like containers were cut from the final product.
The gamemode as it is in version 1.2.0 is still in the prototyping stage, and models have not been produced yet. The clams use the Power Egg model from Octo Canyon and Salmon Run, and the container model is taken from the Mothership special event in Salmon Run.
The “Bank” Era
Clam Blitz underwent another overhaul after 1.2.0 was released. Nintendo changed many aspects of how the gamemode worked and introduced several new objects to go along with it.
- An object called
Obj_VictoryClamBankis placed in the middle of the map. In addition, various
Obj_VictoryClamBankEmitAreaare spread throughout the map.
- The bank flies up into the air and lands at a landing position object.
- While the bank is in the air, clams are fired from it like the train in N64 Rainbow Road from Mario Kart 8 Deluxe. The clams are placed within the emit areas linked to the current landing position. (Now you know why the emit area object is named how it is!)
- When a player comes into contact with the bank, the clams that they are holding are deposited into the bank and added to their team’s score.
- When a team’s total score exceeds a number specified by the current landing position, the bank flies up and moves towards another landing position.
- This repeats until the end of the match or if a team reaches KO.
The Director used to have code which controlled the landing positions for this iteration, but unfortunately, it was removed after they finalized how Clam Blitz should work. The gamemode did not change between version 1.2.0 and version 1.4.2, and the version 2.0.0 update has a “final” version of Clam Blitz, so we do not have a copy of the game’s code from the “Bank” Era. Instead, I partially restored the object’s behaviour using Starlight, an environment which allows me to run my own C++ code inside the game. (I also used Starlight to re-enable a debugging free-camera feature for various screenshots in this article!)
Because the code that controls the landing positions is no longer present and the object was such a large part of how Clam Blitz worked during this time, I instead had to make assumptions about how they were supposed to work using the leftover test maps and code. It is likely not 100% accurate to what Nintendo had internally.
In each of the two test maps which are intended for use with the bank version of Clam Blitz, there are only three landing position objects. One is placed in the centre, one is placed closer to team bravo’s base, and the last is placed even further back into their base. They are linked to each other to create a path. For example, the centre position is linked to the second position, and this link would seemingly be used if team alpha is winning. This implies that the bank will fly further back into the losing team’s base.
However, remember that there are only three objects: one in the centre, and two in team bravo’s base. What would happen if team bravo is winning? To me, this makes it seem like the landing position objects might’ve been automatically cloned for the opposite side of the stage, similar to how spawn points work in the final version. For my video, I just manually cloned the landing positions and set up their links in the object list.
The code that controls which landing position that the bank should land at is no longer present. Because of this, I had to assume how the bank chooses the various positions. (Without a landing position assigned to it, the game crashes.) At the start of the game, I assign the centre landing position. Each landing position object is also assigned a “minimum count before move” value, so I only assign a new position after the current position’s number is exceeded. I’m not sure if this behaviour is correct. For example, the furthest back landing position has a minimum of 75 in the Moray Towers test map. This would mean that in order for the losing team to push the bank out of their base after it lands there, they would need to put up to a nearly game-ending 25 clams inside it.
Finally, there is also a parameter called
MagScoreWinTeam which contains a single number, and I have no idea what it does.
Mag could be “magnitude/magnify” or just a misspelling of
Msg for “message”. It has a pattern: the centre object is set to 1, the mid is set to 2, and the furthest landing position is set to 4. (This pattern is similar to a bitfield, but I’m not entirely sure if it really is one.)
The gameplay is still not quite finished yet, but better matches the final incarnation of Clam Blitz compared to the previous version. For example, the general concept of putting clams into some sort of objective object is present. Some mechanics were ultimately cut, such as the objective moving and spawning clams along with it.
Interestingly, the game looks in the basket’s archive file to find the model for the bank, but it is no longer present. The bank’s model is supposed to have the name
ClamBoxFry (likely supposed to be
Fly, but “L” and “R” were mixed up by the designer), while the basket’s model is labeled
ClamBoxNet. In addition, the landing positions also references a model in the same archive file, but no name is ever specified. (I gave both the bank and the landing positions the final basket model to replace the missing models.)
The “Basket” Era
Finally, we have the “Basket” Era. The objects and rules in this iteration are essentially what we have in the final game, so there is not much to talk about. The code and objects for this version were added in update 2.0.0 and finalized in update 2.1.0.
There are some minor changes between the 2.0.0 Clam Blitz and the 2.1.0 Clam Blitz.
- When you die, you drop all of your clams.
- Throwing a Power Clam can deal up to 60 HP of damage to nearby players when it lands.
- Clam spawning within emit areas is “less randomized” (the game uses RNG in the final version to figure out where to place the clams – this does not seem to happen in 2.0.0).
- A disconnecting player will not drop their clams.
Here, I will answer some questions that don’t fit in any of the other sections.
Due to network lag, having two baskets being opened at the exact same time is effectively impossible in a real match. One event will arrive at the host before the other, so one basket opening will always be first and take precedence. However, if we ignore that, it would likely be whichever basket or Power Clam happens to have been loaded by the game first since the game processes each object in that order.
How does the game determine which team to give free special gauge points to? (suggested by Lean)
In case you weren’t familiar, in Ranked Battle, an entire team’s special gauges can increase automatically. Clam Blitz has its own set of rules to determine whether a team should get points towards their gauges.
First, the game checks if the current team has a Power Clam and the other team does not. If so, the current team will have their Special Gauges filed up automatically. If not, the code continues on to the next check. The current scores for both teams are compared. If the scores are equal, no free points are given out. Otherwise, the losing team gets points.
… Compared to the other mechanics, this was actually quite simple!
What are some odd clam spawn points? (Paladinknightprime)
To be honest, after creating my diagrams of all the spawn points, there really is nothing that jumps out at me as “odd”. They are all placed in sensible locations (at least to me). One thing that I found interesting is that some maps have a lot of spawn points compared to others, likely due to size differences. For example, The Reef has around 24 total spawn points.
I’d like to know the time difference between throwing a clam in the basket and when the timer extends. I’ve had games where it doesn’t register probably because it’s at the very last second. (OtoNoKizunami)
In the best case scenario, immediately. In practice, it will depend on network lag. In this case, it didn’t register because the basket was already closed, and you throwing a clam into the basket didn’t get communicated to the lobby host in time.
Clam Blitz is probably my favourite gamemode in Splatoon 2. It’s nice to be able to demystify some aspects that I and several others have been wondering for a while. While it was difficult and tedious at times for me to reverse engineer the game, I hope that the knowledge I was able to share with you will help when playing Clam Blitz!
If you liked this content, please consider donating to my Patreon. I basically do this stuff for free because I like it, but there are costs associated with it. For example, the server that runs this very website costs money, and I’ve also had to rent out another server recently to host JelonzoBot and SSBUBot. (They were starting to outgrow my main server!) These costs add up, so any donation helps. Thank you!
- <3 Simonx22
- Shadow for starting the Starlight project
- Khangaroo, Dualie, shibboleet, Thog, and everyone else who contributed to Starlight
- LeanYoshi for submitting corrections