Micromodding help

I want my 15 rapid-fire quantum torpedo launchers Uber-Defiant now! - Get help from modders. Share your work. Discuss modifications.
1, 2, 3
posted on March 27th, 2012, 4:46 am
Last edited by Dominus_Noctis on March 27th, 2012, 4:48 am, edited 1 time in total.
There are no plans to change these formulae to do what you are describing. Stuff like passives, profile etc is accounted by cost, buildtime etc, which has worked just fine.

Ah, I see where the confusion lies - the Defensive Values and other values that you see in game are not the precise values used for calculations. The values on display are instead calculated based on faction bonuses, which are rounded for display. The original atomic values are separate of these faction bonuses, which in turn calculate other features. Everything is rounded when displayed, but is not rounded for calculations.

EDIT: just compared some stuff to 326 values, and it appears the same formulae must be in use more or less, so no extra hidden stuff.
posted on March 27th, 2012, 6:51 am
you are inferring rounded values from rounded values so you will of course end up with errors. Defensive Value is an atomic value in Fleet Operations (atomic means that its not calculated from other values). It is a float but starts out as an integer number, let's say 40. Now, some modifications might apply. For example a passive which leads to +5% Defensive Value. Rounding is the last step in the chain and just used for display, both on the tooltips and the ODFs (tooltips are rounded to integer and odfs to 3 decimals).
posted on March 27th, 2012, 3:13 pm
Last edited by Tryptic on March 27th, 2012, 3:16 pm, edited 1 time in total.
You keep using this word.  I do not think it means what you think it means.

Atomic adj (From Greek "atomos", indivisible) Indivisible; cannot be split up.  An atomic data type has no internal structure visible to the program. It can be represented by a flat domain (all elements are equally defined). Machine integers and Booleans are two examples.

I can see how a float can be atomic in one sense of the word, but by the commonly understood definition it cannot.  Only integers can be atomic, and atomic values cannot be rounded.

...

Sweet, so there ARE modifiers to defensive value based on passives?  Do all the passives grant the same modifier, or do some add more than others?
posted on March 27th, 2012, 3:26 pm
All they mean is that is an independent value from system and offensive value.  Those two have other things they rely on, but defensive value is "atomic" and independent from the rest.
posted on March 27th, 2012, 4:46 pm
Last edited by Anonymous on March 27th, 2012, 7:04 pm, edited 1 time in total.

direct link: youtube v=G2y8Sx4B2Sk



EDIT: forgot to mention that the guy inigo montoya is talking to here is played by wallace shawn of zek fame



I'll just leave these here:
clicky blue link 1
clicky blue link 2
posted on March 27th, 2012, 5:52 pm
what is atomic or not depends on your context (or better said your abstraction). Most programming languages, for example, come with some atomic datatypes, including integer, float, char or boolean. Algorithms designed for micro controllers, in contrast, do often work on bits and bytes and none of the above is an atomic datatype (except boolean, depending on its implementation). XML on the other hand offers no concept of chars, making a whole string an atomic datatype. Atomic means that a piece of information can no longer be devided into more basic (simpler, more abstract) pieces within the same abstraction level.

The technological implementation of floats in every hardware you touch in your daily life makes floats atomic: they have finite and well-defined precision, accuracy and capacity - just like integers.

If a datatype can be (meaningfully) rounded has nothing to do with whether its atomic or not. Rounding depends on if there is a distance function for this datatype (and a few other characteristics of this function). Just like i can round a (often non-atomic) float3 {1.24, 84.7, 19.999} to a precision of 10^-1 leaving {1.2, 84.7, 20}, i can round an integer of 1337 to a precision of 10^2 leaving 1300.

In Fleet Operations, the attributes are atomic.

Passives don't modify the attributes. except if they say so. I just made up a fictional passive to emphasize the rounding problem. The Descent passive, for example, modifies the defensive value.
posted on March 27th, 2012, 10:21 pm
Okay, I can see that.  There's a difference between atomic numbers and atomic data values, which leads to a different definition in the realm of computer science than in mathematics and the rest of the world.

So, if these values start out as decimals, just how precise are they?  Does the process start out with Defensive values of precision 10^3?  10^4?

...2^32?

My goal was to be able to reproduce the current Fleet Ops odf folder directly from a SQL database of simplified values, THEN start modding once I fully understand the layout.  But if the O/D/S values themselves conform to no communicable scale, it's simply impossible for me to do it.
posted on March 27th, 2012, 11:00 pm
I usually just skip the values when modding.  To convoluted for anyone but the devs to actually use effectively.  :sweatdrop:
posted on March 27th, 2012, 11:45 pm
As Optec and I said before, the values "start off" as integers :). So, a K'beajQ has a Defensive Value of exactly 19 (or 19.0 or however many decimal places you want to assign).
posted on March 28th, 2012, 2:43 am
Last edited by Tryptic on March 28th, 2012, 2:51 am, edited 1 time in total.
See, that's what I thought but the rounding errors are just too big:

The kbeajq has 208 shields and 208 hull.  Using the equation you gave me,

Hull Defensive Value = ((208/18)^(10/11))/0.5
Shield Defensive Value = ((208/18)^(10/11))/0.5
Defensive Value = (Hull D + Shield D)/2

Hull Defensive Value = 18.501
Shield Defensive Value = 18.501
Defensive Value = 18.501

Now, I know there can be rounding errors but this is too much, because:

Hull/Shield hitpoints = ((Defensive Value * hull ratio)^1.1)*18
((19 * 0.5)^1.1)*18 = 214.175

If you simply rounded the hull and shield values to whole numbers, they would be 214.  Clearly the Kbeajq was created with a Defensive Value of 18.5.

Now, the Kbeajq has a defensive passive that does not say anything about modifying Defensive Value, but perhaps it does?  Subsystem durability is technically governed by System Value but it wouldn't be a problem if the passive affected Defense because of the role it plays.

I thought that perhaps it was a racial modifier, but that doesn't make sense either.  It can't be an additive modifier because the offset isn't consistent across ships.  It can't be multiplicative because they are all within 0.5 of their listed value.  Perhaps if it was an additive modifier for being Klingon, combined with a second additive modifier for the subsystem passive, that would make sense.  But in that case, why even bother with such a small modifier?  It's only a 0.25% difference!
posted on March 28th, 2012, 3:04 am
Last edited by Dominus_Noctis on March 28th, 2012, 3:08 am, edited 1 time in total.
Ok, pick one without such a passive - like the B'rel or Negh'var :). Klingons in general don't get any faction-based defensive buff, so should be easy to see.

I shouldn't have blindly chosen the K'beajQ: but once again, you're falling into the same trap as before - the modifier for all you know could be 184%, with a base of 10 ;) . Don't make assumptions :) .
posted on March 28th, 2012, 4:49 am
floats are actually atomic in the mathematical definition, too. floats are not a representation of R, but just represent a well defined collection of numbers.

The difference in the kbeajq is not related to its passives, but related to its "role" as a defensive vessel, which adds an implicit modification. When we do modifications, we do them in percent for better scaling, not in "integer" numbers.

The Attributes in the tooltips are there to make the game mechanics and the stats of a vessel easily understandable. They are not there to completely define a ship. Even on a tiny ship as the kbeajq, we are talking about an "error" of less then 3 percent in the extreme case of a 0.49 rounding.
posted on March 28th, 2012, 7:23 am
Last edited by Tryptic on March 28th, 2012, 7:26 am, edited 1 time in total.
I respectfully disagree.  While it is true that floats are an imperfect representation of R, they exist for that purpose.  No human can or should work with floats as a perfectly defined collection of numbers; good programming practices dictate that we remain within the limits of acceptable error for whatever task we are completing, and if we require enough precision that it becomes unacceptable we must switch to doubles or even a customized data type that will be able to support the abstraction.

Technically you are correct of course, but the technical definition is useless in the real world.  Otherwise the float data type would not exist and all calculations would be done with integers, with the user keeping track of "decimal" values.

@Dom:  Ah, you're right.  Of course the final value will always be within .5 of the listed value, but that doesn't mean that wasn't derived multiplicatively from a different starting value.

Is there any chance that you guys could give me a sneak peak at the process?

So with the Kbeajq, its defensive value starts at an integer x.  Is this some core value for early game Klingon ships or is it decided by the devs?

Then it is multiplied by a role modifier.  Is this global across races, or does each race have its own set for offense, defense, etc?

Is that the end of the process?  Just how many separate multipliers does the Defensive Value go through before the final version is converted to hitpoints and rounded to display on the tooltip?
posted on March 28th, 2012, 9:22 am
floats are actually used because their precision is not uniformly distributed over their capacity space, unlike integers. Yet, floats are nothing more than integers, they map a specific set of numbers onto a specific set of bits. They are just a cheap way to represent an array of numbers which are non-uniformly distributed. The term "atomic datatype" is actually derived from the mathematical usage. There are even full R atomic magnitudes in physics, like time (at least if we consider every-day-physics, like a Newtonian mechanics problem or so).

But let's skip this discussion. If you want to study the topic in detail, please send me an PM. As Artificial Intelligence, Information Theory and Theoretical Informatics are my research topics, I can hopefully point you to more material to read.

There are many modifiers that stack on the basic attributes and they vary in terms of how they were calculated. Some of them are fine tuned via balance testing, some of them are set by hand to enforce gameplay and some of them are derived from heuristics. For example consider a new ability being added to a ship. Or even a whole new ship has been added. This might have an effect on the importance and value of aspects of other units of the same - and all hostile! - factions. There is no efficient way to make this process accessible, as you can imagine, but we are working on a simplified toolset for modding purpose.
posted on March 28th, 2012, 7:08 pm
So what you're saying is, when one race receives a new ship (say, the Spectre) with a passive that makes it strong against short range, every short range ship in the game is very slightly adjusted to be stronger to make up for this new disadvantage?
1, 2, 3
Reply

Who is online

Users browsing this forum: No registered users and 6 guests

cron