TR Member Perks!

Ubisoft has long ignored the plight of signed integers and sign queer integers.  It’s the current year, and a software developer and organization involved in the greater technology industry practicing the kind of sign-misarithmancy Ubisoft is guilty of cannot stand.  No, by all that intersectionality finds holy, sign-misarithmancy like what is practiced at Ubisoft WILL not stand.

Integers in Computer Software

In mathematics, integers have an attribute called “sign.”  An integer can have positive (+7) or negative (-7) sign, or an integer can be “sign queer,” like 0.  If an integer is a measure of how large or small a measure or attribute is, then it is the sign that determines whether the integer acting as a measure is positive or negative.

In computer science, integers can be represented by a couple of primitive data types.  The first representation is as an unsigned integer, or uint.  In this representation, the integer is always positive.  Another representation is as an signed integer, or int.  Signed integers may be positive or negative.  0 belongs to both the unsigned integer and signed integer primitive data types, thus preserving its status as sign queer.

A software developer can use either signed or unsigned integers for the purposes of adding or subtracting values from each other.  For example, subtracting an integer from another integer is the same as adding a negative integer to the original integer [A-B=A+(-B)]. Similarly, subtracting a negative integer from an integer is the same as adding a positive integer to the original integer [A-(-B)=A+B].  The trick for a software developer is to remember how they represented an integer when they defined it when they start to do arithmetic on it.

Problematic Representations of Integers

The difficulty is when a software developer tries to force an integer into a primitive data type that the integer clearly does not identify as through an act of sign-misarithmancy.  Here’s an example.  Certain high end items in The Division have a talent called Reckless.  Reckless is supposed to increase the amount of damage a player receives as well as the amount of damage the player does. 

Currently, however, the Reckless talent reduces the amount of damage the player takes.  Put in math terms, Reckless is supposed to provide -10% all damage resistance, but currently gives +10% damage resistance.  When all the damage resistance percentages are added together, the signedness of all damage resistance from the Reckless talent is stripped from it.  The result of adding all the damage resistance number together, when combined with the damage resistance coefficient of Reckless being +10%, results in a 20% swing in damage taken by the player.  Intersectional sociologists throughout computer science circles call this “positive-washing” or “absolute valuing” an integer. 

Another example is a blatant case of positive washing an integer.  Armor items in The Division can have a stat called Protection from Elites.  It is represented as a positive integer percentage on the character screen.  As you can see in the in following code excerpt that was data mined from local game files by Reddit poster AlCalzone89, the signedness of the DamageTakenFromElitesModBonus item is assumed.

AttributeDefinition DamageTakenFromElitesModFinal < uid=5D31260055E839EA000081F986B31DA5 >

{

    myOriginalFormula "Max(0, (1 + DamageTakenFromElitesModBonus))"

    myBonusType Percentage

}

It is the current year, do we really need to be positive-washing our integers, or forcing all our integers to be positive value?  The games industry needs to grow up.  According to Ubisoft, this has been fixed in a patch on April 28, but what’s problematic is the original assumption by the developers on whether DamageTakenFromElitesModBonus was signed or not.

A Blatant Act of Sign-Misarithmancy

And how is Ubisoft going to fix the problem with damage reduction associated with the Reckless talent?  Is Ubisoft going to allow the damage reduction from Reckless to remain the primitive data type it is now?  I think we know better.  I think we all know Ubisoft is going to force the integer representing the damage reduction associated with the Reckless talent to be a primitive data type other than how it is now, so they can keep their damage mitigation calculations consistent. 

It is the current year.  Integers should be able to be the primitive data type they most identify with.  Any player with a DPS stat that identifies as a signed integer was destined to be a healer.  Any player with a sign queer DPS stat was destined to play another game.  Deal with it.

Ubisoft, I beseech you, and more importantly signed and sign queer integers around the world beseech you, to not force the all damage resist integers to be a data type other than what each one identifies as.  No, Ubisoft must change the way all damage resistance is calculated to preserve the data type of all the all damage resistance stats.

Let your distaste for the vastly unfair treatment of signed and sign queer integers be known by using the Twitter hashtag below.

#IntegerSignsMatter


Todd Wohling

A long time ago on an Intellivision far, far away my gaming journey started with Lock n' Chase, Advanced Dungeons & Dragons The Cloudy Mountain, and Night Stalker. I earned both a BS-Physics and a BS-Mathematics from the University of Wisconsin-Eau Claire. Today I spend most of my time on PC. I left a career of 14 years in aerospace in Colorado, so I could immigrate to Norway.