1 of 29

PYRO MECHANICS 101 DAY 1:�ATTRIBUTES OF FLAMES

PRESENTED BY WHISPY

WITH HIS LOVELY ASSISTANT STACK_MAN

2 of 29

WHAT ARE WE DOING TODAY?

  • Who am I?
  • Overview of the Program and this Lecture Series
  • Quick History of Pyro
  • Flamethrower Mechanics: Shaping Fire and its Behavior
    • Flame Managers
    • Flame Points
    • Attributes of Fire

3 of 29

WHO IS WHISPY?

  • 10-Year Pyro Player
  • Highest Honors: Second Place Invite Highlander
  • Background: Computer Engineering
  • me like pyro and pyro number
  • me lazy

4 of 29

THE PYRO “PHD” PROGRAM

  • Lectures on Saturday 2pm PDT, 1-4 weeks apart, depending on my life. Get subscribed for random dopamine spikes.
  • 30 Minute Time limit per lecture, 30 minute live Q&A after class in Discord voice chat.
  • If you want to help me with this project, join the Discord (linked below).

5 of 29

THE PYRO “PHD” PROGRAM

Mechanics

Tactics

Strategy

6 of 29

PYRO MECHANICS SERIES

  • Emphasizing what is and isn’t possible (That we know of).
  • Touch on practical and impractical tactics using these mechanics.
  • Discussing what we do and do not know in as much detail as possible.
  • Avoid judgements (unless entertaining), simply discuss what is true NOW.
  • Save unlock and loadout discussions for future series, with some exception.

7 of 29

PYRO MECHANICS SERIES

  • Flamethrower
  • Weapon Timings
  • Airblast
  • Reflects
  • And maybe some things that I’m forgetting.

8 of 29

A BRIEF HISTORY OF PYRO TF2

Release: 2007

TF2 is released.

Pyro is unleashed.

The Pyro Update: 2008

Airblast created.

Everyone is devastated.

Mann-Conomy: 2010

Degreaser unlocked.

And it ROCKED.

Tough Break: 2015

Degreaser nerfed.

5 years of muscle memory is now worthless!

Jungle Inferno: 2017

Flamethrower overhaul leading to shakey Pyro flames being most effective.

Everyone suffered. (except for me)

Blue Moon: 2018

Damage Ramp-Up introduced. Shakey Shakey now half as effective.

9 of 29

JUNGLE INFERNO AND BLUE MOON

10 of 29

JUNGLE INFERNO (JI) AND BLUE MOON (BM)

  • Arguably the most important updates to Pyro’s mechanics.
  • Fixed many issues with flames, most importantly Flamethrower “Mojo” and Flame particle visuals.
  • JI made flames TOO consistent.
  • BM introduced Ramp-Up to address this.

11 of 29

FLAME MODEL BASICS

  • Flames are actually little floating cubes.
  • They are fired about once every 0.044 seconds.
  • Ammo is consumed about once every 0.08 seconds, or about 1 ammo per 2 points.
  • They are 24 “hammer units” long on each side, about half the size of your projectile “collision hull”.
  • They travel quickly at first, then quickly experience “drag”, slowing down to a halt at the end of their range.
  • They collide with the world, and are generally very cute.

12 of 29

FLAME “MODEL”: BEFORE AND AFTER JUNGLE INFERNO

Before: Flame Entities

After: Flame Managers and Flame Points

13 of 29

FLAME “MODEL”: BEFORE AND AFTER JUNGLE INFERNO

Before: Flame Entities

  • Flames belong to a Flamethrower.
  • Flame boxes act independently of one another.
  • Each flame hits an individual target once and only once.
  • Entities were not represented visually: instead an approximation was made.
  • Despite the visuals colliding with the world, these entities simply passed through walls (and attempted to avoid dealing damage after doing so).
  • Inherited ALL player momentum at time of creation.

After: Flame Managers and Flame Points

  • Individual flames are now called Flame Points
  • Flame Points no longer act fully independently: They act through a “Flame Manager”.
  • Every Pyro with a “normal” Flamethrower has one Flame Manager.
  • Flame Points do not deal damage individually: instead the Flame Manager decides when damage is dealt.
  • The Flame Manager deals damage once every 0.075 seconds, as long as a target is colliding with at least ONE flame point.
  • Damage dealt is based on the OLDEST flame point touching a target.
  • Flame Points Inherit only a SPECIFIC PORTION of player momentum at time of creation.

14 of 29

FLAME MANAGER ATTRIBUTES THAT CONTRIBUTE TO SHAPING FIRE

Utilized Attributes

  • Spread Degree
  • Flame Speed
  • Flame Life Time
  • Random Life Time Offset
  • Flame Drag
  • Flame Up
  • Flame Ignore Player Velocity

Unused Attributes

  • Flame Gravity
  • Start/end Size Multiplier
  • Redirected Flame Size Multiplier
  • Should “Reflect”
    • Reflection Additional Lifetime
    • Reflection Damage Reduction
    • Max Flame Reflection Count

15 of 29

USED ATTRIBUTES DEMONSTRATION

FOR REALSIES

16 of 29

SPREAD DEGREE

  • Controls the random vector added to each flame point’s velocity
  • Units: Almost certainly degrees, but unconfirmed.
  • Default Value of: 2.8
  • Likely behavior: a random vector with a magnitude based on the value is added to each Flame Point upon its creation.
  • Other possible behavior (possibly exhibited in Flame Entities): a vector is added to the position of flame entities. every game tick.

17 of 29

FLAME SPEED

  • Controls the initial magnitude of each Flame Point’s velocity.
  • Units: Possibly Hammer Units per second.
  • Default Value: 2450
  • Fairly straightforward.

18 of 29

FLAME UP

  • Controls the magnitude of the upwards pointing vector added to Flame Points position.
  • Units: Possibly Hammer Units, Or Hammer Units per Second.
  • Default Value: 50
  • The Upwards Vector is likely applied on each game tick.

19 of 29

FLAME DRAG

  • Controls how quickly Flame Points slow down.
  • Units: Unknown
  • Default Value: 8.5
  • More research is needed to discover the Drag formula used for the physics model.
  • Thankfully, it’s probably safe to assume they were lazy and mostly copy-pasted the Flame Entity’s code for this, so we should be able to see it in the source code leak.
  • Still, we cannot guarantee that the old code is exactly the same as the new code, so tests must be done to confirm that.

20 of 29

LIFE TIME ATTRIBUTES

Flame Life Time

  • Controls the “Base” lifetime of flames.
  • Units: Seconds
  • Default Value: 0.6

Random Life Time Offset (RTLO)

  • Controls the positive and negative “range” of possible life times of flames.
  • Units: Seconds
  • Default Value: 0.1
  • Lifetime of flame point is decided on its creation:
  • A random value between –RTLO and +RTLO is chosen to be added to the Life Time.
  • Ex: 0.6 + (0.05) = 0.65
  • Or: 0.6 – (0.1) = 0.5

21 of 29

FLAME IGNORE PLAYER VELOCITY

  • Controls if Flame Points should ignore player velocity on creation.
  • Units: None
  • Default Value: 0
  • By default, flames inherit the projection of the attacker’s velocity vector onto their aim vector.
  • This allows us to disable that.
  • Oddly, this is stored as a float rather than a Boolean. Maybe it’s a multiplier? More testing is required.

22 of 29

UNUSED ATTRIBUTES DEMONSTRATION

FOR FUNSIES

23 of 29

FLAME GRAVITY

  • Controls how much gravity should affect Flame Points.
  • Units: Unknown.
  • Default: 0
  • This is probably not an inverse of Flame Up, as they would simply cancel out.
  • One possibility is that this value multiplies a gravitational constant that is applied to Flame Points each game tick.

24 of 29

START AND END SIZE MULTIPLIERS

  • Controls how large flames are relative to their “Base” size.
  • One controls how large flames are at the beginning of their life, and other controls how large they are at the end of their life.
  • Units: None
  • Default Values: 1
  • Incidentally, the size of flame points is controlled by a CVAR in the game. This is set to 12 by default, and controls the “RADIUS” of Flame Points.

25 of 29

REDIRECTED FLAME SIZE MULT

  • Controls how much flames should grow or shrink after colliding with the world.
  • Units: None
  • Default Value: 1
  • This multiplier applies after one collision, and does not stack if a flame collides with the world.

26 of 29

FLAME REFLECTIONS

  • “ShouldReflect” enables and disables this feature.
  • When enabled, flames bounce off the world in an “elastic” fashion.
    • “The Angle of Reflection is Equal to the Angle of Incidence”.
  • Reflect Additional Life Time controls how much faster or slower flames should die after reflecting.
  • Reflect Damage Reduction controls how much more or less damage flames should deal after reflecting.
    • Not sure if this stacks per bounce.
  • Max Flame Reflection Count controls how many times flames should reflect off the world…. Maybe.
    • Not sure if this is working correctly.
    • This might control how many times the additional lifetime and damage reduction is applied.
    • More testing required.

27 of 29

FLAME MANAGER AND FLAME POINT MEMBER VARIABLES

Flame Manager Members

  • Weapon
  • Attacker
  • Next Point Index
  • TABLE: Point Spawn Times
  • Player Map
    • Last Valid Hit
    • “Heat” value

Flame Point

  • Spawntime*
  • Maximum Lifetime
  • Velocity
  • Number of “reflects”
  • And some more.

28 of 29

HOMEWORK

  • What properties did I change to make the funthrower?
  • Go for a walk. Be sure to wear a mask, especially when going indoors.
    • Your mask protects me, my mask protects you.
  • Tell your loved ones that you love them.
  • Hit up an old friend and check in on them.
  • Remind yourself that you are valid.
  • Black Lives Matter.

29 of 29

NEXT TIME…

  • Blue Moon Damage Model?
  • Give suggestions. Not set in stone just yet!