Loading...
  OR  Zero-K Name:    Password:   

Zero-K Unit Stats Spreadsheet (0.1)

14 posts, 845 views
Post comment
Filter:    Player:  
sort
3 years ago
Hello Zero-K players!

I've created a spreadsheet to easily view unit stats.

Link to the Google spreadsheet here

This was generated by parsing the unit lua files from the GitHub source using Python.
Please post comments and suggestions below and I will try to update when I can!

You can easily compare and contrast units side-by-side using this sheet, faster than using the wiki.
Some stats are easily available here without calculation (e.g. DPS per unit cost).
For example: sorting by DPS/unit cost shows that the Scorcher has more DPS per cost than almost any other unit! (barring Puppies that self-destruct and Gnats which do EMP damage).


Known Issues
Ogre reload and two-shot mechanic is misrepresented in reload time and DPS
Gnat, Faraday, and other EMP-only weapons are represented in the wrong damage slot
Units that aren't available in the game are on this sheet
Bomb damage is not represented
+7 / -0
Ace, theoretical question - would it (theoretically) be possible to reverse the functionality of the python script to re-write and update the lua files based on a singular master spreadsheet?

Just a thought to create a really fast (albeit dangerous) way to make sweeping balance updates so that we can give the developers an easier time.

Edit: Not sure what's up with my keyboard there, crikey. You'll have to excuse me.
+0 / -0
3 years ago
That would absolutely be possible - to an extent.

Most units map 1-1 in a lot of ways, stats like HP is easy to find, but there are a lot of units that aren't easily represented in a spreadsheet. For example, the Toad has two weapons systems, but only one is on this sheet.

Lots of basic stats could be edited this way, but usually those are easy to find in the lua already. If it has value, though, I would be happy to help make something like that, or even share my code for others to do something with.
+0 / -0


3 years ago
What you've done here is already fantastic, although I'm definitely the wrong person to have their hands on this because I'm already flagging fields as "WTF" such as Vandal's HP per cost. Rabbit hole. Might just stop before I begin. Great work.
+0 / -0


3 years ago
quote:
Just a thought to create a really fast (albeit dangerous) way to make sweeping balance updates so that we can give the developers an easier time.

I'm pretty sure GoogleFrog could make his own scripts for that. I'm not sure why he would though if he isn't already using such scripts.
+0 / -0

3 years ago
MMORPG games use the removal of all dynamic information from the source code to a data file, after which a program is made to edit it. Changing values ​​manually on lua is strange. Another option is to store data in a database

Sample program
+1 / -0
3 years ago
freezing the header would be nice
+0 / -0


3 years ago
Well done on the sheet, is there some way to make the columns sortable?

quote:
Ace, theoretical question - would it (theoretically) be possible to reverse the functionality of the python script to re-write and update the lua files based on a singular master spreadsheet?

There was a tool that does this but it stopped being used (maybe it stopped working, I'm not sure) ten or so years ago. Nowdays I rarely make large changes, but when I do I use unitdefs_posts to test them. Once the changes are stable I (or more likely PLrankAdminSprung) apply them to the defs.

This means that the defs are not entirely based on what you see in the individual files. Under the hood I suspect (I have not looked that closely) that the defs loader is essentially a lua state that outputs a few tables. Most of the unit and weapon data is set as data in the Units directory, but there are some changes later on, especially to set our own defaults (such as default wreck values, or cost ratio). Even without unitdefs_posts there isn't a one-to-one correspondence between the defs and what ends up ingame. The engine itself has calculated defaults for things such as AoE speed. This all means that the only way to get the proper unitdefs and weapondefs is to make a widget that writes this information to a file. Parsing the files in some other way will often work, but it isn't a guarantee.

I mainly use stats like these for comparing BP/cost, energy/cost, shield charging, DPS/cost for AA, and how many shots a Dagger takes to kill a unit.

RUrankizirayd I can see the value in graphical editor programs, but I would always want some sort of human-readable and searchable data files underneath. Changing a few values or adding a field is simple when you don't have to go through a UI.
+0 / -0

3 years ago
quote:
RUrankizirayd I can see the value in graphical editor programs, but I would always want some sort of human-readable and searchable data files underneath. Changing a few values or adding a field is simple when you don't have to go through a UI.


I write programs with multi-selection, where you can change all values
+0 / -0


3 years ago
wow, on paper the jack is an absolute beast
+0 / -0


3 years ago
I made this for Planetary Annihilation long ago.
Maybe there could be something for inspiration.
https://people.dsv.su.se/~akbj7812/pa-db/unit/tank_light_laser.html

A pretty useful stat for comparing units in Zero-K is strength as I called it.
Which is (DPS*HealthPoints)/cost^2.

I also made some unit specific match-up tables which compares how units do for cost against eachother.
https://people.dsv.su.se/~akbj7812/pa-db/unitmatchup/tank_light_laser/stat.html
+0 / -0
quote:
Well done on the sheet, is there some way to make the columns sortable?

Thank you! I appreciate the praise from the lead dev :)
The sheet should be sortable if you mouse over the column label (A, B, etc), or you can use Data -> Create New Filter View for some more customization. For more freedom, make a copy (File -> Make a Copy).

quote:
freezing the header would be nice

Done!

quote:
A pretty useful stat for comparing units in Zero-K is strength as I called it.
Which is (DPS*HealthPoints)/cost^2.

This is interesting. It would be pretty simple to add a column like this. What value do you see in a stat like this? What does it represent, why square the cost? Is it related to Lanchester's square law?

quote:
I also made some unit specific match-up tables which compares how units do for cost against eachother.

I was considering adding a tab to the sheet that allows you to pick two units and have the formula calculate their matchup. I can work on that if anyone is interested, though there are other things on the sheet that need fixing as well!
+0 / -0


3 years ago
quote:
This is interesting. It would be pretty simple to add a column like this. What value do you see in a stat like this? What does it represent, why square the cost? Is it related to Lanchester's square law?
While not directly related, Strength is is what you would call "damagerate" in this equation. A and B would be the 2 different units Strength.

https://en.wikipedia.org/wiki/Lanchester%27s_laws
Perfect focus fire for groups of units in Zero-K with no overkill, would reflect the Lanchasters square law in Zero-K. That is when you can easily plug in Strength and get accurate results.
Of course, perfect focus fire in Zero-K is rarely a thing between groups of units. Typically only a few smaller units can engage a bigger target at the same time.
Oh... right...
I should separate Strength compared to Strength per 1 Metal.
Strength is just DPS*HP.
You can take the Strength of the 2 units and plug it in directly as damagerate and it follows Lanchesters square law neatly for perfect focus fire between groups of units.
However, if you want to calculate Strength for multiple units you can do it as the following.
Cumulative strength:
SUM = UnitHealth*DPS*1 + UnitHealth*DPS*2 + UnitHealth*DPS*3 + ... +UnitHealth*DPS*n
If the Strength SUM of these units are higher than the target Strength, they will win if you disregard overkill or misses.
+0 / -0


3 years ago
For Strength per 1 Metal, you have to square the cost because DPS and HP presents a squared relationship.
A big 10 DPS and 10 HP unit has a Strength that is 100 times higher than a small 1 DPS and 1 HP unit.
However, 10 small units have the same combat value as a single big unit if you plug it into Lanchasters square law.
So if the big unit costs 10 metal while the small unit costs 1 metal, they have the same Strength per 1 cost.
+1 / -0