GPU
GPU is a passive upgrade in tibo.dog. In-game description: “+1 projectile. Firing builds heat. At full heat, weapons fire at half speed for 3s. Each level adds fire rate and cooling.”
Overview
GPU gives +1 projectile at every level, plus 2% cooldown reduction per level (10% at level 5). The catch is heat: weapons build heat as they fire, and when it fills up they slow to half speed for 3 s. Higher levels raise the heat cap from 20 to 36 and cooling from 2.6 to 2.8 heat per second. The extra projectile does not grow with level; only the cooldown and heat values do.
It is the catalyst for Kettle Cyclone (from Chip Shuriken) and Spark Corral (from Spud Fence). GPU has the lowest offer weight of any passive (40), so it shows up on level-up cards less often than the others.
How it works
Heat gain. Each time a weapon starts an attack, heat rises by that weapon's current cooldown in seconds, at most 6. No heat is added while throttled.[1] Turret shots add heat too.
So a weapon that fires as soon as its cooldown is ready adds about 1 heat per second, whatever its cooldown: a 0.5 s weapon adds 0.5 heat twice a second. This also means cooldown reduction, from GPU itself or Chives, does not lower heat per second. Fire-rate boosts that are not cooldown, such as the Frenzy Fryer, do raise it. Weapons with no cooldown, such as Steam Vent, add no heat.
Cooling. Heat drops by 2.6–2.8 per second. If heat reaches the cap after cooling, GPU throttles.
Throttle. For 3 s, weapon timers run at half speed, and heat drains in a straight line from the cap to 0.[2] After the throttle, heat starts again from 0.
Measured (build 41 main-B2gf34bA.js, headless tools/play.mjs, standard mode, normal difficulty; GPU and weapons given with give, HP refilled every tick, Tibo standing still, later level-ups taking the first offer):
- With GPU at level 1 or 5 and Peeler, Small Fry, Tot Toss, Chip Shuriken and Starch Chain given once each (seed
s1, 240 s), the heat cap was 20 and 36, and heat fell by exactly 2.6 and 2.8 per second between attacks. Every throttle (23 and 13) started with heat at the cap and lasted exactly 3 s. Each heat jump was a weapon's base cooldown times the cooldown multiplier, such as 0.49 and 0.98 at ×0.98. - On seed
s2, where Peeler is the starting weapon, a lone Peeler added 1.00 heat per second both without Chives (cooldown ×0.98, 1.02 attacks per second) and with Chives at level 5 (×0.63, 1.58 attacks per second), over 180 s. - With heat forced to the cap so that GPU stayed throttled, the same lone Peeler attacked 0.508 times per second instead of 1.017, exactly half (seed
s2, 120 s each).
The +1 projectile goes through the normal amount stat, so it does not help aura, cone, nuke or ring weapons (see Sprouting Eyes).
Tips
- Cooling of 2.6–2.8 per second keeps pace with two weapons that fire constantly, but not with three. Measured at GPU level 1 over 180 s with Peeler and Small Fry given once each: Peeler + Small Fry (seed
s2) added 2.0 heat per second and never throttled. The starting Seeker Sprouts + Peeler + Small Fry (seeds3) added 2.9–3.0 heat per second and throttled 3 times, or 2 with Chives at level 5. A full set of fast-firing weapons overheats; weapons that only fire when a target is in range add less. - Each level raises the heat cap and the cooling rate, so levelling GPU makes throttles rarer. The throttle itself always lasts 3 s.
- GPU's +1 projectile stacks with Sprouting Eyes and Extra Eye.
Levels
| Level | Projectiles (amount) (amount) total |
Cooldown total |
|---|---|---|
| 1 | 1 | 0.02 |
| 2 | 1 | 0.04 |
| 3 | 1 | 0.06 |
| 4 | 1 | 0.08 |
| 5 | 1 | 0.1 |
Totals are added to Tibo's stat sum. How each stat turns into a multiplier (caps and diminishing returns) is on Stats.
Heat
GPU has a heat mechanic (thermal). Values by level:
| Level | Heat cap | Cooling per second |
|---|---|---|
| 1 | 20 | 2.6 |
| 2 | 24 | 2.65 |
| 3 | 28 | 2.7 |
| 4 | 32 | 2.75 |
| 5 | 36 | 2.8 |
Max heat per volley: 6. When heat is full, weapons fire at 0.5× rate for 3 s (matches the in-game text “weapons fire at half speed for 3s”).
Catalyst for
| Result | Also needs |
|---|---|
Names in other languages
Verified: the name the game shows when another language is selected in Settings, from its translation files.[3] See Languages.
Show names in 26 languages
| Language | Code | Name |
|---|---|---|
| 简体中文 · Simplified Chinese | zh-CN |
GPU |
| 繁體中文 · Traditional Chinese (Taiwan) | zh-TW |
GPU |
| 日本語 · Japanese | ja |
GPU |
| 한국어 · Korean | ko |
GPU |
| Español · Spanish | es |
GPU |
| हिन्दी · Hindi | hi |
GPU |
| Deutsch · German | de |
GPU |
| Français · French | fr |
GPU |
| Português (Brasil) · Brazilian Portuguese | pt |
GPU |
| Türkçe · Turkish | tr |
GPU |
| Bahasa Indonesia · Indonesian | id |
GPU |
| Русский · Russian | ru |
GPU |
| Bahasa Melayu · Malay | ms |
GPU |
| Filipino | fil |
GPU |
| मराठी · Marathi | mr |
GPU |
| Tiếng Việt · Vietnamese | vi |
GPU |
| తెలుగు · Telugu | te |
GPU |
| தமிழ் · Tamil | ta |
GPU |
| বাংলা · Bengali | bn |
GPU |
| ไทย · Thai | th |
GPU |
| Hausa | ha |
GPU |
| Naijá · Nigerian Pidgin | pcm |
GPU |
| العربية · Arabic | ar |
GPU |
| فارسی · Persian | fa |
GPU |
| עברית · Hebrew | he |
כרטיס מסך |
| اردو · Urdu | ur |
GPU |
Data
Show raw game data
{
"id": "gpu",
"stat": "amount",
"perLevel": [
1,
1,
1,
1,
1
],
"extra": {
"stat": "cooldown",
"perLevel": 0.02
},
"thermal": {
"cap": [
20,
24,
28,
32,
36
],
"coolPerSec": [
2.6,
2.65,
2.7,
2.75,
2.8
],
"maxVolleyHeat": 6,
"throttleSec": 3,
"throttleRate": 0.5
},
"maxLevel": 5,
"weight": 40
}
Sources
Game version 75: main-CSuyb4iv.js / boot-CPW8VVmR.js / sim-BkfBhQfw.js from https://tibo.dog/, researched 2026-11-05. See Versions & updates.
- Content registry exported by
boot-CPW8VVmR.js; boss definitions and order exported bysim-BkfBhQfw.js; lazy endgame definitions fromendgame-content-CyuS5vbP.jsandcatalog.generated-JnyrtBzy.js - English names and descriptions from
i18n-en-content--0ALgcKX.js - Names in other languages from the 26
i18n-<code>-contentfiles ofmain-CSuyb4iv.js(data/i18n-names.json)
Code references
- sim-BkfBhQfw.js
function Pm(e,t){let n=e.loadout.thermal;!n.on||e.player.throttleTicks[e.me]>0||(e.player.heat[e.me]=e.player.heat[e.me]+Math.min(t,n.maxVolleyHeat))} - sim-BkfBhQfw.js
function Mm(e){return(e.player.throttleTicks[e.me]>0?e.loadout.thermal.throttleRate:1)*Nf(e)} - i18n-ja-content-DO6GrqHt.js
"content.passive.gpu.name":["GPU"]