New Fuel Settings?

Describe your experience with the latest version of FreeOrion to help us improve it.

Moderator: Oberlus

Forum rules
Always mention the exact version of FreeOrion you are testing.

When reporting an issue regarding the AI, if possible provide the relevant AI log file and a save game file that demonstrates the issue.
Message
Author
Morlic
AI Contributor
Posts: 296
Joined: Tue Feb 17, 2015 11:54 am

Re: New Fuel Settings?

#16 Post by Morlic »

Ophiuchus wrote: Wed Aug 28, 2019 9:00 pm Would exchanging an external slot for 2 fuel (so 3.5 fuel) make sense to you?
Speaking of early game (up to military techs of Laser, Zortrium and first shields):
With current balancing (4 external slots), the robotic hull is only cost-efficient* if you use shields against MD4 level (i.e. 6 damage per shot or below) and have both Zortrium and Laser. Otherwise, the organic hull offers better combat stat efficiency, more speed and fuel regen. This also means that robotic hull designs probably do not want to use the internal slot for extra fuel. Organic hull designs, however, do want to use the fuel pod (or engines) as shields are cost-inefficient on them (unless the enemy has bad pilots or otherwise worse than standard MD4 level of 6 damage per shot).

Removing another external slot from the robotic hull (i.e 3 external slots) pushes the cost-efficiency of the shielded robotic hulls below the cost efficiency of shielded organic hulls after Zortrium Armor (i.e. the first armor upgrade) is researched. In other words: Robotic hulls lose their niche in the eco-system of ship designs.

So, I don't think a nerf of the external slots and subsequently the cost-efficiency of the hull is warranted. Just give it the 2 fuel.



* Using the definition cost_efficiency = (structure*damage)/cost^2
If I provided any code, scripts or other content here, it's released under GPL 2.0 and CC-BY-SA 3.0

Ophiuchus
Programmer
Posts: 3427
Joined: Tue Sep 30, 2014 10:01 am
Location: Wall IV

Re: New Fuel Settings?

#17 Post by Ophiuchus »

by the way morlic opened an issue on the mentioned documentation problems #2541
Any code or patches in anything posted here is released under the CC and GPL licences in use for the FO project.

Look, ma... four combat bouts!

User avatar
Oberlus
Cosmic Dragon
Posts: 5704
Joined: Mon Apr 10, 2017 4:25 pm

Re: New Fuel Settings?

#18 Post by Oberlus »

I've splitted the posts about cost efficiency of hulls/ship designs to a new thread.

Ophiuchus
Programmer
Posts: 3427
Joined: Tue Sep 30, 2014 10:01 am
Location: Wall IV

Re: New Fuel Settings?

#19 Post by Ophiuchus »

Morlic wrote: Thu Aug 29, 2019 1:47 pm
Ophiuchus wrote: Wed Aug 28, 2019 9:00 pm Would exchanging an external slot for 2 fuel (so 3.5 fuel) make sense to you?
Speaking of early game (up to military techs of Laser, Zortrium and first shields):
With current balancing (4 external slots), the robotic hull is only cost-efficient* if you use shields against MD4 level (i.e. 6 damage per shot or below) and have both Zortrium and Laser.
That seems to be a very small niche for a ship design. But maybe I was undervalueing organic 2Zortrium 1MD designs (because cost efficiency is even better than with lasers) and I should not tech up as fast as I do (in that case the niche would make more sense).

Buuut the real value of that robo design is that is very fleet cost-efficient even against lasers (didnt check for plasma yet). By that I mean cost efficiency when considering fleet upkeep. It has the best value for the hulls I compared on that tech level (robohulls, organic, multicell, symbiotic).

That value almost drops to multicell level if I take away one external slot. So the hull should keep it(?) or is it OP in that regard? How about a slight cost increase to 45 PP for the fuel increase? Cost efficiency against MD4 drops from 1,71% to 1,60%; organic 2Z 1MD is ata 1,51%)
Any code or patches in anything posted here is released under the CC and GPL licences in use for the FO project.

Look, ma... four combat bouts!

User avatar
alleryn
Space Dragon
Posts: 259
Joined: Sun Nov 19, 2017 6:32 pm

Re: New Fuel Settings?

#20 Post by alleryn »

Ophiuchus wrote: Fri Sep 13, 2019 5:28 pm
Buuut the real value of that robo design is that is very fleet cost-efficient even against lasers (didnt check for plasma yet). By that I mean cost efficiency when considering fleet upkeep. It has the best value for the hulls I compared on that tech level (robohulls, organic, multicell, symbiotic).

That value almost drops to multicell level if I take away one external slot. So the hull should keep it(?) or is it OP in that regard? How about a slight cost increase to 45 PP for the fuel increase? Cost efficiency against MD4 drops from 1,71% to 1,60%; organic 2Z 1MD is ata 1,51%)
To answer this question, i think we would need to determine how important fleet upkeep efficiency vs. small fleet efficiency is at this stage of the game. This is an extremely complex question, but my intuition is that no one is really investing heavily into military at this stage of the game (unless its a 2-player (or 2-alliance) game), as conflict is just a bad strategic idea in non-zero-sum games. As such, i would guess that small fleet efficiency is more important at this phase, but those of you with multiplayer experience are naturally much better poised to answer this.

My personal take right now is that robo hull isn't really overpowered at this point (all this talk of trading slots for fuel at some precise ratio is, to me, a bit silly as it presumes that the hulls are already perfectly balanced, which not that i think they are extremely out of whack, but i also don't think some little fudging for the sake of this fuel system rework is going to really upset some intricately-7-spinning-plates-while-juggling-corgis type of balance, and i would agree with morlic:
Morlic wrote: Thu Aug 29, 2019 1:47 pm Just give it the 2 fuel.

Ophiuchus
Programmer
Posts: 3427
Joined: Tue Sep 30, 2014 10:01 am
Location: Wall IV

Re: New Fuel Settings?

#21 Post by Ophiuchus »

alleryn wrote: Sat Sep 14, 2019 6:23 pm My personal take right now is that robo hull isn't really overpowered at this point (all this talk of trading slots for fuel at some precise ratio is, to me, a bit silly as it presumes that the hulls are already perfectly balanced
The point is having a framework for keeping the balance for ships of the same fuel efficiency without having to do a full rebalancing.


The numbers say that robo hull is for its level in a sense overpowered - its better than the higher tech alternatives symbiontic/multicell.

If my calc is correct fleet cost efficiency has a big influence - if you build at least for three robo 2Z 2L the fleet is more cost efficient than anything else. Even more efficient than fully grown symbiontic ships which have almost double the ship cost efficiency. Breaking point is at tiny 315PP - this is counterintuitive to me, so i will have to check my numbers again.

So after correcting my formulas this looks more sensible. Breaking point is rather at stellar 30,000PP (268 robos are more powerful than 500 multicells at the same cost). So ship efficiency prevails until then.

So for closing this subdiscussion I will just give the 2 fuel and wait for reports of further need of rebalancing hulls.

I probably also will open a thread for finding suggestions how to give (robo hulls with) shields-3 more meaning.
Any code or patches in anything posted here is released under the CC and GPL licences in use for the FO project.

Look, ma... four combat bouts!

User avatar
alleryn
Space Dragon
Posts: 259
Joined: Sun Nov 19, 2017 6:32 pm

Re: New Fuel Settings?

#22 Post by alleryn »

Has anyone given any more thought to how to document this feature in the pedia for ship hulls? (https://github.com/freeorion/freeorion/issues/2541)

It looks like the hull information is currently provided via /UI/EncyclopediaDetailPanel.cpp:

https://github.com/freeorion/freeorion/ ... 1363-L1367

Code: Select all

        detailed_description += UserString(hull->Description()) + "\n\n" + str(FlexibleFormat(UserString("HULL_DESC"))
            % hull->Speed()
            % hull->Fuel()
            % hull->Speed()
            % hull->Structure());
Is there a similar function (or method, whatever it's called) we can use like

Code: Select all

% hull->FuelEfficiency()
or something like that?

Edit: Also, this is more a matter for my own curiosity, but if someone happens to know, why is % hull->Speed() in there twice? /Edit
Edit2: It looks like part of it is coming from /default/stringtables/en.txt
https://github.com/freeorion/freeorion/ ... 120-L13131

Code: Select all

##
## Hull and ship part description templates
##


# %1% hull base starlane speed.
# %2% hull base fuel capacity.
# %3% hull base starlane speed.
# %4% hull base structure value.
HULL_DESC
'''[[metertype METER_SPEED]]: %1%
[[metertype METER_FUEL]]: %2%
[[metertype METER_STRUCTURE]]: %4%'''
/Edit2

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13586
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: New Fuel Settings?

#23 Post by Geoff the Medio »

alleryn wrote: Sun Oct 13, 2019 8:47 pmIs there a similar function (or method, whatever it's called) we can use like

Code: Select all

% hull->FuelEfficiency()
or something like that?
The fuel efficiency mechanism exists only in FOCS scripts and macros, from here: https://github.com/freeorion/freeorion/ ... acros#L175

C++ code doesn't know anything about those numbers. It could check if a HullType has a tag, although checking in C++ for FOCS defined stuff is generally discouraged, although is done in a few cases to control UI stuff. This case is rather content-dependent with several similar and balance dependent tags involved, though, so not a good case for that.

The FOCS effects could probably be modified to self-correct for the hull's inherent fuel capacity by subtracting the hull's own fuel before multiplying and then re-adding the hull's own fuel after the scaling effect... Something like

Code: Select all

effects = SetMaxFuel value = (Value - HullFuel name = ThisHull) * @2@ + HullFuel name = ThisHull
(I don't know what the Statistic If in the existing script that checks for a matching tag is for... The corresponding fuel efficiency effectsgroup should only be added to hulls that have that efficiency anyway.)

User avatar
alleryn
Space Dragon
Posts: 259
Joined: Sun Nov 19, 2017 6:32 pm

Re: New Fuel Settings?

#24 Post by alleryn »

Geoff the Medio wrote: Sun Oct 13, 2019 11:24 pm The FOCS effects could probably be modified to self-correct for the hull's inherent fuel capacity by subtracting the hull's own fuel before multiplying and then re-adding the hull's own fuel after the scaling effect... Something like

Code: Select all

effects = SetMaxFuel value = (Value - HullFuel name = ThisHull) * @2@ + HullFuel name = ThisHull
(I don't know what the Statistic If in the existing script that checks for a matching tag is for... The corresponding fuel efficiency effectsgroup should only be added to hulls that have that efficiency anyway.)
I don't really understand the idea here. Is this aimed at the pedia fuel display issue or something else?
___
I can't seem to find where the hull->Speed(), hull->Fuel(), etc stuff is coming from in the code. I can find a lot of places hull_type->Fuel() gets used (where hull_type is a const HullType*) but when i search for HullType* i'm having difficulty following the thread to where these methods are defined.
___
Is there some way we could report the "final value" (maxFuel i guess?) instead of Fuel(), in order to bypass the need for the C++ code to check in FOCS for which HULL_FUEL_EFFICIENCY tag is in place for a given hull?

Ophiuchus
Programmer
Posts: 3427
Joined: Tue Sep 30, 2014 10:01 am
Location: Wall IV

Re: New Fuel Settings?

#25 Post by Ophiuchus »

alleryn wrote: Sun Oct 13, 2019 8:47 pm Edit: Also, this is more a matter for my own curiosity, but if someone happens to know, why is % hull->Speed() in there twice? /Edit
Once there was a distinction between ship combat speed and starlane speed. This is most likely an artifact of that. If you look at the commit history of that line you should be able to see it.
Geoff the Medio wrote: Sun Oct 13, 2019 11:24 pm I don't know what the Statistic If in the existing script that checks for a matching tag is for... The corresponding fuel efficiency effectsgroup should only be added to hulls that have that efficiency anyway.
The tag is necessary for AI to pick up fuel efficiency (and probably we could also use it for generating encyclopedia entries). The check in FOCS is so that you can see that you forgot to add the tag. One would probably miss that the AI miscalculates the fuel on ship design because the tag is missing.
alleryn wrote: Mon Oct 14, 2019 12:19 am
Geoff the Medio wrote: Sun Oct 13, 2019 11:24 pm The FOCS effects could probably be modified to self-correct for the hull's inherent fuel capacity by subtracting the hull's own fuel before multiplying and then re-adding the hull's own fuel after the scaling effect... Something like

Code: Select all

effects = SetMaxFuel value = (Value - HullFuel name = ThisHull) * @2@ + HullFuel name = ThisHull
(I don't know what the Statistic If in the existing script that checks for a matching tag is for... The corresponding fuel efficiency effectsgroup should only be added to hulls that have that efficiency anyway.)
I don't really understand the idea here. Is this aimed at the pedia fuel display issue or something else?
Yes, the base fuel of the hull could be set to the effective fuel value which is already shown in the pedia. With this implementation fuel efficiency effect description becomes a bit more strange (efficiency only affects fuel tanks and other fuel effects but not base fuel).
This does the trick for ship hulls but it makes the effect more convoluted so I decided against it when doing the implementation.
alleryn wrote: Mon Oct 14, 2019 12:19 am I can't seem to find where the hull->Speed(), hull->Fuel(), etc stuff is coming from in the code. I can find a lot of places hull_type->Fuel() gets used (where hull_type is a const HullType*) but when i search for HullType* i'm having difficulty following the thread to where these methods are defined.
HullType is defined in universe/ShipDesign.h and universe/ShipDesign.cpp (NB: all game objects are in the universe folder).
alleryn wrote: Mon Oct 14, 2019 12:19 am Is there some way we could report the "final value" (maxFuel i guess?) instead of Fuel(), in order to bypass the need for the C++ code to check in FOCS for which HULL_FUEL_EFFICIENCY tag is in place for a given hull?
Probably. You need an extra effect application to do this similar to what we do in the ship design screen. But you still need to know the fuel efficiency of a hull (which could be extracted from analysing the fuel efficiency tags).

The question is also which places of pedia you want to address. There are hulls, ship designs, fuel tanks, species fuel effects and other fuel effects which get influenced by efficiency. And the most difficult thing is that fuel tanks effect also depends on your fuel tech research.

For the hull descriptions something like the following should suffice e.g.: this hull has average effective fuel but bad fuel efficiency

For ship design and ship info the effects need to applied and the resulting value shown (which happens).

and so on...
Any code or patches in anything posted here is released under the CC and GPL licences in use for the FO project.

Look, ma... four combat bouts!

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13586
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: New Fuel Settings?

#26 Post by Geoff the Medio »

alleryn wrote: Mon Oct 14, 2019 12:19 amI don't really understand the idea here. Is this aimed at the pedia fuel display issue or something else?
I am proposing changing how the fuel efficiency effect works so that a single fixed hull fuel statistic in the UI is an accuracte and complete indication of a hull's inherent fuel capacity.
I can't seem to find where the hull->Speed(), hull->Fuel(), etc stuff is coming from in the code.
What do you mean by "stuff" and "coming from in the code"?
I can find a lot of places hull_type->Fuel() gets used (where hull_type is a const HullType*) but when i search for HullType* i'm having difficulty following the thread to where these methods are defined.
Do you mean you can't find the HullType class definition? Or where the code for HullType::Fuel is located? Or where the value that that method returns is determined?
Is there some way we could report the "final value" (maxFuel i guess?) instead of Fuel(), in order to bypass the need for the C++ code to check in FOCS for which HULL_FUEL_EFFICIENCY tag is in place for a given hull?
MaxFuel is a property of an individual ship, not a hull or even a ShipDesign. That's like asking how tall a human is... it depends on which human.

Ophiuchus
Programmer
Posts: 3427
Joined: Tue Sep 30, 2014 10:01 am
Location: Wall IV

Re: New Fuel Settings?

#27 Post by Ophiuchus »

Geoff the Medio wrote: Mon Oct 14, 2019 8:15 am
alleryn wrote: Mon Oct 14, 2019 12:19 amIs there some way we could report the "final value" (maxFuel i guess?) instead of Fuel(), in order to bypass the need for the C++ code to check in FOCS for which HULL_FUEL_EFFICIENCY tag is in place for a given hull?
MaxFuel is a property of an individual ship, not a hull or even a ShipDesign. That's like asking how tall a human is... it depends on which human.
Probably we could synthesize a ship of a temporary ship design which only has the hull without extra parts, apply the effects and read the MaxFuel value.
Any code or patches in anything posted here is released under the CC and GPL licences in use for the FO project.

Look, ma... four combat bouts!

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13586
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: New Fuel Settings?

#28 Post by Geoff the Medio »

Ophiuchus wrote: Mon Oct 14, 2019 8:15 am
Geoff the Medio wrote: Sun Oct 13, 2019 11:24 pm I don't know what the Statistic If in the existing script that checks for a matching tag is for... The corresponding fuel efficiency effectsgroup should only be added to hulls that have that efficiency anyway.
The tag is necessary for AI to pick up fuel efficiency (and probably we could also use it for generating encyclopedia entries). The check in FOCS is so that you can see that you forgot to add the tag. One would probably miss that the AI miscalculates the fuel on ship design because the tag is missing.
Thst does not seem worth the extra complexity in the effect that actually does nothing different. Especially since you worried about making the effect more complex in a way that would solve a more substantial problem with defining what a hull's fuel stat should display...

Ophiuchus
Programmer
Posts: 3427
Joined: Tue Sep 30, 2014 10:01 am
Location: Wall IV

Re: New Fuel Settings?

#29 Post by Ophiuchus »

Geoff the Medio wrote: Mon Oct 14, 2019 8:22 am
Ophiuchus wrote: Mon Oct 14, 2019 8:15 am
Geoff the Medio wrote: Sun Oct 13, 2019 11:24 pm I don't know what the Statistic If in the existing script that checks for a matching tag is for... The corresponding fuel efficiency effectsgroup should only be added to hulls that have that efficiency anyway.
The tag is necessary for AI to pick up fuel efficiency (and probably we could also use it for generating encyclopedia entries). The check in FOCS is so that you can see that you forgot to add the tag. One would probably miss that the AI miscalculates the fuel on ship design because the tag is missing.
Thst does not seem worth the extra complexity in the effect that actually does nothing different. Especially since you worried about making the effect more complex in a way that would solve a more substantial problem with defining what a hull's fuel stat should display...
I am as always considering maintenance complexity the more important metric.
The If communicates that it needs the tag for it to happen and you will see the bug in the UI if you do it wrong. To me this reduces complexity.
Any code or patches in anything posted here is released under the CC and GPL licences in use for the FO project.

Look, ma... four combat bouts!

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13586
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: New Fuel Settings?

#30 Post by Geoff the Medio »

Perhaps compromise by doing both the tag check and hull base fuel add-subtract, then?

Post Reply