What does upgrading weapons do now.

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
xlightwavex
Space Kraken
Posts: 111
Joined: Mon Nov 16, 2015 5:57 am

What does upgrading weapons do now.

#1 Post by xlightwavex »

As far as i can tell in the dev build im using, nothing seems to happen when i upgrade from say mass driver 1 to mass driver 2 ect ect... the damage doesn't increase the cost doesn't go down, is that a bug ?

Another thought shouldn't ship speed rely on something like a dedicated engine slot or slot's, not the hull itself. That way researching engines or tech that unlocks them, allows for different strategy's then just get op hull get op unit with op speed.

dbenage-cx
Programmer
Posts: 389
Joined: Sun Feb 14, 2016 12:08 am

Re: What does upgrading weapons do now.

#2 Post by dbenage-cx »

That upgrade should increase the damage of Mass Drivers in your empire (even the existing ones).
This upgrade for existing weapons occurs through the supply line, so a ship will not have upgraded weapons until it resupplies.
There is also a turn delay between researching the tech, and it reaching ships in the supply line.
No tech
No tech
upgrade_01.png (52.17 KiB) Viewed 1388 times
Tech finished
Tech finished
upgrade_02.png (58.01 KiB) Viewed 1388 times
Ship resupplied
Ship resupplied
upgrade_03.png (64.52 KiB) Viewed 1388 times
Are you seeing different results?

User avatar
MatGB
Creative Contributor
Posts: 3310
Joined: Fri Jun 28, 2013 11:45 pm

Re: What does upgrading weapons do now.

#3 Post by MatGB »

xlightwavex wrote:As far as i can tell in the dev build im using, nothing seems to happen when i upgrade from say mass driver 1 to mass driver 2 ect ect... the damage doesn't increase the cost doesn't go down, is that a bug ?
I hope not, it's working fine for me, ships need to be in supply to get the upgrade.
Another thought shouldn't ship speed rely on something like a dedicated engine slot or slot's, not the hull itself. That way researching engines or tech that unlocks them, allows for different strategy's then just get op hull get op unit with op speed.
I have considered this as an option in the past, have it that the engine parts are one-use-only parts with perhaps improved effects and ships don't come with anything except basic low level thrust which improves for higher tech ships. We've sort of already implemented this with the Trans Spatial Drive, that used to be an integral part for one hull.

But at the moment I've not really put any work into it, so basically I agree with the principle but I'm not sure it's worth the work and there are higher priority things for me to balance off first—if somoene else wants to do the work (and liase with the AI team for the inevitable updates) I'd be happy to review it.
Mat Bowles

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

xlightwavex
Space Kraken
Posts: 111
Joined: Mon Nov 16, 2015 5:57 am

Re: What does upgrading weapons do now.

#4 Post by xlightwavex »

Are you seeing different results?

I hope not, it's working fine for me, ships need to be in supply to get the upgrade.
Yep looking at your pics i just realized why you guys probably didn't notice it too. In the ship designing screen the value isn't updated when you click on the weapon, which is what i was looking at.

On the map when you click the ship however it is updated though. So is it actually updated or not when your ship fights ?




I have considered this as an option in the past, have it that the engine parts are one-use-only parts with perhaps improved effects and ships don't come with anything except basic low level thrust which improves for higher tech ships. We've sort of already implemented this with the Trans Spatial Drive, that used to be an integral part for one hull.

But at the moment I've not really put any work into it, so basically I agree with the principle but I'm not sure it's worth the work and there are higher priority things for me to balance off first—if somoene else wants to do the work (and liase with the AI team for the inevitable updates) I'd be happy to review it.
Actually with that improved engine coupling part, you have the script already, but its for a internal slot :( Though i guess i could add one more to all of the ship then add new parts with the coupling script slightly modified. Each ships speed could just be set to a low value 1 or 0 then parts could be included. The ai space monsters speed could just be left alone for now. Which really wouldn't be right because not all the early ships have internal slots, then again a engine is a internal part.

What i just need to be able to do is...
  • Have or know how to make a new slot type, that i can add to ships like in ship hull scripts for external internal.
    How to assign it (the engine parts i make) to be of the new slot type.
    How to link that slot type to a new graphic shape (i dunno a triangle with a square in it or something call it engine slot).
    How to have it show up in the ship designer when its unlocked.
Is a new slot type possible via scripting or does that require more work to the game engine ?
Would it really muck up the ai the first way i mean the ai must take into account already a trans-warp on any ship right ?

If it is then its just a matter of copy paste scripting basically and making some new images that's not really a big deal for me to do. I could probably do the rest from their as well. Id just make one engine for each already existing ship that has a different speed. then drop it onto what gets unlocked on the tech tree when you research / unlock that ship. The cool thing would be unlocking different ships to get the engine for different ships. Please remember i just started looking at the scripts a few days ago.



I could probably do it fairly fast, maybe even automate it if i can get past the specifics above. Ive been tinkering with the scripting. So i started writing the beginnings of a editor / analyzer i was thinking of having it simpliy script output really but first. I got annoyed looking for all the parts so the first function alphabetized every tech and its file folders so now i have a list.
// File: sortedtechs.txt Date: 2016:09:15:02:24:31 Encoding: System.Text.UTF8Encoding
CON_ARCH_MONOFILS
scripting\techs\construction\ARCH_MONOFIL.focs.txt

CON_ARCH_PSYCH
scripting\techs\construction\ARCH_PSYCH.focs.txt

CON_ART_HEAVENLY
scripting\techs\construction\ART_HEAVEN.focs.txt

CON_ART_PLANET
scripting\techs\construction\ART_PLANET.focs.txt

CON_ASYMP_MATS
scripting\techs\construction\ASYMP_MATS.focs.txt

ect...
Soon im going to make a dependency tree for every single tech its parts and the ship hulls with a graph showing minimal time and cost to reach them, with a op-ness graph. The engine thing though would sort of fit in for a practical use case of something that needs actual editing or creating.

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

Re: What does upgrading weapons do now.

#5 Post by Geoff the Medio »

The original plan was to not have any engine parts at all, because this makes balancing hulls a lot easier, since you can't load up on engine parts to get a fast version of every hull. If there's currently an "op" hull just due to its speed, which makes you not want to use any other hull, then it should be made less "op" by adjusting its speed or other stats.

xlightwavex
Space Kraken
Posts: 111
Joined: Mon Nov 16, 2015 5:57 am

Re: What does upgrading weapons do now.

#6 Post by xlightwavex »

Geoff the Medio wrote:The original plan was to not have any engine parts at all, because this makes balancing hulls a lot easier, since you can't load up on engine parts to get a fast version of every hull. If there's currently an "op" hull just due to its speed, which makes you not want to use any other hull, then it should be made less "op" by adjusting its speed or other stats.
Just one of these slots per ship as a rule and you can stack the transwarp as it is.

Ok op might be a bad way to make a point, at the very least id like to do it for my own scripts.

One thing i realized when playing is... if the engine is unlocked by the hull tech itself.

Then you could use newer engines on your older hulls which is sort of like upgrading them. Plus it makes sense that way, a engine is a by product of technology its never limited to a specific design of ship. For example the basic ships are basically done in by the speed they have alone after you get just a bit into the game, but if i could stick the flux drive in them and boost the speed i increase there shelf life and can bypass organic that opens up a different tactic.

Plus as you advance in tech you should get more hull for less cost by this i mean, cost effectiveness, though still smaller ships should cost less for the hull built, ships you start with should not be as cost effective later on. While better engines should nearly always cost more then previous ones, be better and should probably even add a little to hp as speed is evasion and maneuverability.

Also i want starbases or / and non-jump system defense ships for that to be a thing, the hull needs to be cheaper by simply not adding a expensive star drive at all to a ship. The engine idea does that instantly, maybe not making it a lot cheaper but still somewhat cheaper. Something like a asteroid would be great for a in system unit. I don't think giant iceball's or rocks should be high tech anyways traveling across starlanes, but i can see them as in system bases or units. Moo3 did that and it was pretty cool not all of moo3 was bad in fact their was a lot of cool stuff in it after you put on the custom patches.

Ship size might impact a engines performance though. What you could do for balance is to have each hull, have a specific small bonus speed or penaly it could be negative like -20 for a asteriod or something. If thats not possible you could do like, 1 to 60 were the normal is 30 so small ships may have 45 big fat ships 15, then the engines go from 0 to 60 as well, that could be account for. The main thing is the engine is necessary for actual star travel, so some engine must be equipped. All in all this means old ships are still viable longer and there is other ways to balance different types of ships so they don't feel like a<b<c<d in fact you could put cruddy engines in good ships to cheapen them if your totally on the defensive.

I also want to make new star-yard upgrades take more time to build and other things less. Meaning you can pump out military while you build but cant just build upgraded star-yards every-were or you get behind you need to tactically place them. While researching up needs some other advantage then which engines would help to fill and properly so. As you wouldn't have the mass industry.

So even though say you cant build some ship because its either too expensive or you don't have a star of a certain type, if you unlocked the ship, you have the engine technology and that engine should be able to go onto your older ships or other ships that only makes sense at least to me.

So is it possible to do it :)
Last edited by xlightwavex on Thu Sep 15, 2016 7:09 pm, edited 1 time in total.

User avatar
Vezzra
Release Manager, Design
Posts: 6095
Joined: Wed Nov 16, 2011 12:56 pm
Location: Sol III

Re: What does upgrading weapons do now.

#7 Post by Vezzra »

xlightwavex wrote:Is a new slot type possible via scripting or does that require more work to the game engine ?
The slot types are hardcoded, so you can't add more of them via scripting.

UrshMost
Space Kraken
Posts: 123
Joined: Fri Jul 03, 2015 2:32 am
Location: Great White North Eh

Re: What does upgrading weapons do now.

#8 Post by UrshMost »

xlightwavex wrote: Yep looking at your pics i just realized why you guys probably didn't notice it too. In the ship designing screen the value isn't updated when you click on the weapon, which is what i was looking at.

On the map when you click the ship however it is updated though. So is it actually updated or not when your ship fights ?
Weapon parts can have different attack values depending upon which species is using them, so the weapon parts in the ship design screen only show the base attack value for the weapon.

One of the windows that should be open in your ship design screen is the pedia entry for your ship design. This will show the current attack values (and other stats) of the ship design for various species that you control. As you add or remove parts the values for the total ship design will update and reflects the current status of your weapon research.

(Note: an un-intuitive feature is that if you're interested in the stats for a specific species, you should have a planet that's populated with that species selected before you enter the design screen.)

When a ship is built it gets the attack values, (as well as detection range and shield values), specific to the species that built it, and according to whatever your current tech level is for that weapon. When you upgrade a weapon tech, that upgrade rolls out to all of your ships on the next turn, assuming that they are in supply range and not in combat. If they are out of supply range they will get the upgrades the next time they return to a location within supply range.
Attachments
shipdesign.jpg
shipdesign.jpg (179.82 KiB) Viewed 1332 times
Windows 10 64bit, AMD 8 Core, 16 GB
Nvidia GTX 670 @ 3240x1920
FreeOrion Build: Latest Windows Test Build

xlightwavex
Space Kraken
Posts: 111
Joined: Mon Nov 16, 2015 5:57 am

Re: What does upgrading weapons do now.

#9 Post by xlightwavex »

Weapon parts can have different attack values depending upon which species is using them, so the weapon parts in the ship design screen only show the base attack value for the weapon.

One of the windows that should be open in your ship design screen is the pedia entry for your ship design. This will show the current attack values (and other stats) of the ship design for various species that you control. As you add or remove parts the values for the total ship design will update and reflects the current status of your weapon research.

(Note: an un-intuitive feature is that if you're interested in the stats for a specific species, you should have a planet that's populated with that species selected before you enter the design screen.)

When a ship is built it gets the attack values, (as well as detection range and shield values), specific to the species that built it, and according to whatever your current tech level is for that weapon. When you upgrade a weapon tech, that upgrade rolls out to all of your ships on the next turn, assuming that they are in supply range and not in combat. If they are out of supply range they will get the upgrades the next time they return to a location within supply range.
I kind of see why it's done like that it changes depending on the planet race you have currently selected, its more confusing/deceptive then un-intutive as it is. I think if there is no solution thought up yet that is practical, (like a toggle button to change the display for what race or what not).

Then some notation / description needs to be at the top of the design window that clues the user into this fact. I actually thought this was bugged at first.
The slot types are hardcoded, so you can't add more of them via scripting.
I guess i could add a extra internal slot to every ship and try to do that i don't think the engine coupling item stack's. Im not sure, if it does that still wouldn't work exactly the way id like but i guess i could make it work maybe.

What would be the effect be of placing a negative value on a hull's speed itself and then adding a internal engine ?

E.G.
If i have a ship with (- 30) speed and i add a (non stacking) modified engine coupling with (+ 50) speed.
Is the result that the ship cant star travel without a engine ?
Will the -30 hull speed + 50 engine part speed, mean the ship has 20 speed ?
Or will the engine just not accept it ? (would be great if negatives just didn't allow star lane jumps)

Provided the part itself isn't stacking and one extra internal slot is added to all ships i suppose this would make it possible to achieve the desired effect. With the current balance i would just have to do the math on hulls via the fastest hull setting the zero mark (i.e. the fastest hull would get zero speed). Any hull below that would get a negative amount by the difference it has from the maximum speed of the best hull in game. Then all engines for each ship you unlock would be equal to its corresponding hulls original speed ( + ) a amount corresponding to its difference that brings it back up to its hulls original value as it is currently balanced now. Provided the above condition is optionally possible, it would basically be balanced to the way it is now for each ship but you could swap engines as well as have penalty's on massive or old hulls or implicit penalty's for using bad engines on high tech hulls. All previously mentioned considerations would be accountable for.

dbenage-cx
Programmer
Posts: 389
Joined: Sun Feb 14, 2016 12:08 am

Re: What does upgrading weapons do now.

#10 Post by dbenage-cx »

I guess i could add a extra internal slot to every ship and try to do that i don't think the engine coupling item stack's. Im not sure, if it does that still wouldn't work exactly the way id like but i guess i could make it work maybe.
If you do, remember that each of the ship designs using a modified hull need to align with the new slot layout/count.
Otherwise these designs will not be valid.
What would be the effect of placing a negative value on a hull's speed itself then adding a internal engine ?
Have not checked, I assume it would follow the same course as stealth does (the actual value would be negative, but display as 0), so your scenario would have an immobile ship with the second scenario resulting in 20.

xlightwavex
Space Kraken
Posts: 111
Joined: Mon Nov 16, 2015 5:57 am

Re: What does upgrading weapons do now.

#11 Post by xlightwavex »

If you do, remember that each of the ship designs using a modified hull need to align with the new slot layout/count.
Otherwise these designs will not be valid.
'Aligned', Can you elaborate on this ?

Which files or values should i be looking for or to in order to ensure they are ?

Code: Select all

Hull
    name = "SH_BASIC_SMALL"
    description = "SH_BASIC_SMALL_DESC"
    speed = 75
    fuel = 4
    stealth = 5
    structure = 5
    slots = [
        Slot type = External position = (0.50, 0.45)  //  what all do i need to setup
        /* some new internal part Slot type = Internal position = (0.40, 0.45)  */
    ]
    buildCost = 10.0 * [[FLEET_UPKEEP_MULTIPLICATOR]]
    buildTime = 2
    location = Contains And [
        Building name = "BLD_SHIPYARD_BASE"
        OwnedBy empire = Source.Owner
    ]
    effectsgroups = [
        [[REGULAR_HULL_DETECTION]]
        [[SCAVANGE_FUEL_UNOWNED]]
        [[UNOWNED_GOOD_VISION]]
        [[UNOWNED_MOVE]]
    ]
    icon = "icons/ship_hulls/basic-small-hull_small.png"
    graphic = "hulls_design/basic-small-hull.png"
Have not checked, I assume it would follow the same course as stealth does (the actual value would be negative, but display as 0), so your scenario would have an immobile ship with the second scenario resulting in 20.
Just tested it, its exactly as you described so it will work.
Someone must have also considered this idea at some point and provided for it.

I gotta go back and test that the engine couplings part doesn't stack though and see what the difference is script wise with the trans-flux as that one does.

Brb... yep... EDIT: ahhh no the engine couplings stack as well, crap.

Code: Select all

Part
    name = "FU_IMPROVED_ENGINE_COUPLINGS"
    description = "FU_IMPROVED_ENGINE_COUPLINGS_DESC"
    class = Speed
    capacity = 10
    mountableSlotTypes = Internal
    buildcost = 10 * [[FLEET_UPKEEP_MULTIPLICATOR]]
    buildtime = 3
    location = OwnedBy empire = Source.Owner
    icon = "icons/ship_parts/engine-1.png"

#include "/scripting/common/upkeep.macros"

Code: Select all

Part
    name = "FU_TRANSPATIAL_DRIVE"
    description = "FU_TRANSPATIAL_DRIVE_DESC"
    class = Speed
    capacity = 40
    mountableSlotTypes = Core
    buildcost = 80 * [[FLEET_UPKEEP_MULTIPLICATOR]]
    buildtime = 8
    location = And [
        OwnedBy empire = Source.Owner
        Contains Building name = "BLD_SHIPYARD_CON_ADV_ENGINE"
        ]
    effectsgroups = [
        EffectsGroup
            scope = Source
            activation = (1 <= [[BEST_CLOAK_EFFECT]] <= 40)
            stackinggroup = "ENGINE_STEALTH_PART_STACK1"
            accountinglabel = "TRANSPATIAL_CLOAK_INTERACTION"
            effects = SetStealth value = Value - [[BEST_CLOAK_EFFECT]]
        EffectsGroup
            scope = Source
            activation = (40 >= [[BEST_CLOAK_EFFECT]])
            stackinggroup = "ENGINE_STEALTH_PART_STACK2"
            effects = SetStealth value = Value + 40
    ]
    icon = "icons/ship_parts/engine-4.png"

#include "stacking.macros"

#include "/scripting/common/upkeep.macros"
Argg...
Last edited by xlightwavex on Thu Sep 15, 2016 9:27 pm, edited 2 times in total.

dbenage-cx
Programmer
Posts: 389
Joined: Sun Feb 14, 2016 12:08 am

Re: What does upgrading weapons do now.

#12 Post by dbenage-cx »

xlightwavex wrote:'Aligned', Can you elaborate on this ?

Which files or values should i be looking for or to in order to ensure they are ?
Tutorial - Ship Hulls and Effects - Ship Designs might help.

The ship design slot order needs to align with the ship hull slot order. They can be empty, but not left out or placed in a different order.

ship designs are in the (freeorion)/default/scripting/ship_designs, (freeorion)/default/scripting/monster_designs, and (user data directory)/shipdesigns directories.

xlightwavex
Space Kraken
Posts: 111
Joined: Mon Nov 16, 2015 5:57 am

Re: What does upgrading weapons do now.

#13 Post by xlightwavex »

dbenage-cx wrote:
xlightwavex wrote:'Aligned', Can you elaborate on this ?

Which files or values should i be looking for or to in order to ensure they are ?
Tutorial - Ship Hulls and Effects - Ship Designs might help.

The ship design slot order needs to align with the ship hull slot order. They can be empty, but not left out or placed in a different order.

ship designs are in the (freeorion)/default/scripting/ship_designs, (freeorion)/default/scripting/monster_designs, and (user data directory)/shipdesigns directories.
Thanks this will save me a headache.

One more thing i just realized the improved engine couplings also stack. I need a way to prevent this, is that possible thru a script, to make sure only one engine on a ship actually counts. I think that some of the other parts are not stackable like shields.

I see this for shields would i make a macro for engines basically the same way ?
Edit: Not sure about this bottom part though.
class defines what kind of part this is: a short range weapon, a fighter weapon, a piece of armor, etc.

Code: Select all

stackinggroup = "SPEED_PART_STACK" // dunno about this ????????????? valid ?
accountinglabel = "SPEED_INTERFERENCE" // dunno about this ????????????? valid ?

Code: Select all

  //______________________________________
 // scripting ship_parts stacking.macros
//
BEST_ENGINE_EFFECT
'''
max(max(max(max(
    min(1, PartsInShipDesign Name = "SH_ENGINE_1" design = Source.DesignID)
    * PartCapacity name = "SH_ENGINE_1",
    min(1, PartsInShipDesign Name = "SH_ENGINE_2" design = Source.DesignID)
    * PartCapacity name = "SH_ENGINE_2"),
    min(1, PartsInShipDesign Name = "SH_ENGINE_3" design = Source.DesignID)
    * PartCapacity name = "SH_ENGINE_3"),
    min(1, PartsInShipDesign Name = "SH_ENGINE_4" design = Source.DesignID)
    * PartCapacity name = "SH_ENGINE_4"),
    min(1, PartsInShipDesign Name = "SH_ENGINE_5" design = Source.DesignID)
    * PartCapacity name = "SH_ENGINE_5" 
    )
'''


SUM_ENGINE_CAPACITY
'''
((PartCapacity name = "SH_ENGINE_1")* (PartsInShipDesign Name = "SH_ENGINE_1" design = Source.DesignID)
+(PartCapacity name = "SH_ENGINE_2")* (PartsInShipDesign Name = "SH_ENGINE_2" design = Source.DesignID)
+(PartCapacity name = "SH_ENGINE_3")* (PartsInShipDesign Name = "SH_ENGINE_3" design = Source.DesignID)
+(PartCapacity name = "SH_ENGINE_4")* (PartsInShipDesign Name = "SH_ENGINE_4" design = Source.DesignID)
+(PartCapacity name = "SH_ENGINE_5")* (PartsInShipDesign Name = "SH_ENGINE_5" design = Source.DesignID))
'''

// Is there a speed class, is this possible i hope so.

ENGINE_STACKING
'''
EffectsGroup    // Make sure to add new engine parts to the macros SUM_ENGINE_CAPACITY and BEST_ENGINE_EFFECT
    scope = Source
    activation = DesignHasPartClass Low=2 High=999 Class=Speed
    stackinggroup = "SPEED_PART_STACK" // dunno about this ?????????????
    accountinglabel = "SPEED_INTERFERENCE" // dunno about this ?????????????
    effects = SetMaxSpeed value = Value - [[SUM_ENGINE_CAPACITY]] + [[BEST_ENGINE_EFFECT]]
'''
'''

dbenage-cx
Programmer
Posts: 389
Joined: Sun Feb 14, 2016 12:08 am

Re: What does upgrading weapons do now.

#14 Post by dbenage-cx »

That is one way to do it, yes. Both the effects documentation and the tutorial should have details on stackinggroup and priority.

Edit: more than happy to help, but this may be getting off topic. Might create another thread or push to a branch on github and post a link.
Last edited by dbenage-cx on Thu Sep 15, 2016 11:11 pm, edited 1 time in total.

User avatar
EricF
Space Dragon
Posts: 357
Joined: Fri Jul 29, 2016 10:12 am

Re: What does upgrading weapons do now.

#15 Post by EricF »

Hmm, I liked that engines 'stacked'. It was the only way to get slow hulls like asteroid hulls to have a decent speed since they had so much internal space.
But I can see your point too. Going this path I would like to see more engines and not core mount ones.
Or, as I've requested before, more Items that can use a Core slot as well as normal Internal slots so that core slots aren't wasted.
Things that are Core slot only should still stay that way.

Post Reply