1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

Ranged Naval Units

Discussion in 'General Balance' started by CrazyG, Aug 19, 2019.

  1. tu_79

    tu_79 Deity

    Joined:
    Feb 11, 2016
    Messages:
    6,945
    Location:
    Malaga (Spain)
    Coast tiles are defined by the map script. It tags all shallow waters and the land tiles adjacent to sea tiles. I'm not sure how it handles lake tiles.

    See why I wanted to talk roles? CrazyG and I prefer RN to be cannons on the water, while dan favors a broader approach. We can't agree on which changes are best if we can't agree on the model.
     
  2. azum4roll

    azum4roll King

    Joined:
    Jul 17, 2018
    Messages:
    695
    Gender:
    Male
    Ranged ships should be cannons IMO, but that'll make dromon and galleass awkward - either being too weak as cannons, or having a completely different role as skirmishers that update into cannons.

    If we take the cannon route, can we make them travel half as fast in enemy territory like land siege units? And remove the penalty from battleships.

    And I have a feeling that we'll eventually want another line of ships so naval combat isn't just pure melee.
     
  3. tu_79

    tu_79 Deity

    Joined:
    Feb 11, 2016
    Messages:
    6,945
    Location:
    Malaga (Spain)
    Both dromons are galleasses were slow ships loaded with siege weapons of their time (ballistas and fire balls catapults in the former, gunpowder cannons in the latter). Realistically, they should have the same range and abilities than siege weapons, maybe with lower accuracy.

    Is it a balance problem? Or a role problem?

    In this time, you can't make use of more than 4 ranged naval units. The restricted movement and the necessity of escort make it so (7 tiles in reach, one for maneuvering, 2 escorts). These ships are damaged where they can't repair as soon as walls are raised. Even if they performed lovely against city defenses, you must then hold the cities with land units, which makes a naval rush extremely risky, since you only have archers and warriors to hold the position. If land invasion is a must, then trirremes are better: they cover your embarked units and provide sea blockade for longer.
    Rushing galleasses is even worse. By that time it's common to find ranged enemies (comp bowman-crossbowman, trebuchets-cannons, heavy skirmishers), almost every civ has some ships, walls are common and castles begin to appear. Then caravels completely dominate the seas, being able to maneuver in ocean. But there's a bigger reason for not using galleases. You are probably still facing enemies by land, and must focus on land defense (or attack), and you may keep your seas safe with a few trirremes for a while longer. Only when you are dominant in your continent, you may divert resources to naval so you can extend your rule overseas, and that requires the compass.

    If these units behaved as slow but strong siege units, they would shine against city defenses and could provide some fight support without being a real threat in combat. The problem with this approach is that siege naval won't be needed in defense at all, so a not aggressive player won't find any use of them. This is the only thing I find awkward, and this could be solved by adding some supportive role to coastal cities defense that does not include dealing damage.

    I also think that the line should be coherently siege or skirmish, so the promotions we take keep making sense on upgrade. A skirmisher wants more movement, while a sieger wants more damage vs cities.
     
    Rhys DeAnno likes this.
  4. Stalker0

    Stalker0 Baller Magnus

    Joined:
    Dec 31, 2005
    Messages:
    6,254
    Thinking about it more, I'm really not opposed to moving Dromon and Galleases to the 2 range model either. I think the dromon might need a possible RCS nerf, or maybe just a city attack nerf, because its the one ship that I think switching from scoot and shoot to 2 range will make it stronger (due to limited speed and limited coastal movement). The dromon is a tricky ship, because depending on a person's tech path, they can be basically worthless, or an incredible powerhouse when they come into play. Later ships....all of the counters you need you should have by then, its just a question on whether you built them.
     
    Rhys DeAnno likes this.
  5. Bhawb

    Bhawb Prince

    Joined:
    Nov 11, 2018
    Messages:
    500
    2 range but can't move vs 1 range but can move is almost identical pre-ocean movement. I wouldn't mind keeping it consistent just so the line doesn't awkwardly transition like that.
     
    vyyt likes this.
  6. Tekamthi

    Tekamthi Prince

    Joined:
    Aug 12, 2016
    Messages:
    381
    Hey sorry to join this discussion late.. I read or scanned most of the posts so far, as well as recent update notes. I've played around about 2 hours in latest VP with naval focus. Just some thoughts; apologies for its length, but I'd hope to at least add some new substance to the thread if nothing else. I may have missed some of the subtleties of recent naval changes and higher level promos in what I cover here, as I have been a little less active over past year.

    After the advent of shoot and scoot and the beginning of reduced naval range that coincided (the vp denizens of the day were upset with losing 3 range ships, nvm the 1 range they ended up as recently), I spent a few months trying to mod mod a better naval game, and had my own household focus group of sometimes up to 5 civ franchise veterans testing in mixed human/ai hotseat games (mostly at least two humans and either 22 or 43 civ on largte/huge map, standard or longer game speed). To a great extent, I was able to limit changes to existing vp features (ie without new lua.. though I have no idea anymore which xml hooks have been removed since then. One or two were for sure) and still address some of the issues raised here, while leaving the naval combat feeling different than land. Given we always had at least another human to play as equalizer, we were less balance focused then might be required for true ai parity, though ai capability was generally still a top concern for anything we added.

    I'll revisit mod modding one day, after vp settles a little further (DLL changes more subtle then discussed here broke my SQL previously), but I'll share at least my small group's take on this topic.

    First, of the existing solution in G's latest:
    Spoiler :

    - change back to 2-range is good.. gunpowder naval units had some of the largest guns of their era, should be able to shoot at least as far as a bow.. we defd had a slight realism bias compared to the VP community as a whole, though on this the feeling was abstraction is fine but 1-range RN too far

    - limiting naval ranged to coastal tile attack is good, though with a high level promo to overcome this for niche roles. mass shoot and scoot naval ranged were too dominant at wiping out even inland human units, especially in hands of clever human naval england (those bastards...). We eventually concluded on an honour system agreement not to attack inland tiles with naval, other than cities, unless the unit was level 6 or higher.

    - change back to attack-ends-move is bad, as it returns naval to a less-mobile form of combat (whereas the consensus was water fighting should be intuitively more "fluid"), and feels in-game like it relegates naval combat to just a simplified version of land combat of melees and ranged, albeit each with more moves. We were toying with melee going attack and move, too, albeit with other mitigating changes described in part below.

    - reducing sight is both good and bad, situationally.. as applied it may have greater penalizing effect on AI, as they seem to have a very ineffective memory from turn to turn, and now have lower spotting chance. That said, the effect on AI seems somewhat subtle with only a few hours in-game so far.

    2 no/low-lua things we tried, mechanics-wise, that seemed to work, at least partially:
    Spoiler :

    - all naval units have high chance to force target to retreat or retreat themselves (ie using the existing heavy charge, withdraw from melee, and withering fire promos):
    This served effectively as a movement penalty similar to what some are discussing here, in particular on the shoot-and-scooters as they'd have to chase moving targets to rack up multiple hits on one target. We also found it encouraged naval formations and even lines to mitigate enemy shoot and scooters as your defending targets fled. Humans were notably better than ai at leveraging this latter part especially, but ai performed better than expected given they weren't designed for this, and generally benefited more than human from not having its targets as intensely focused. We greatly enjoyed this setup, and it created a very fluid feel to naval combat, allowed naval units to clear beaches without killing enemy land units entirely, and added considerations for angle of attack and positioning... it would likely take some work to adapt the vp ai to it properly, and for this reason is only a half-hearted recommendation as a change for VP at this stage -- though it doesnt break the game in my experience, and results in very different naval combat from land combat, while using existing mechanics​

    - all ranged naval units gain a time-limited promo after engaging in combat that reduces movement and increases sight
    using the existing structure of VP features, this was implemented via a promo that did nothing other than disappear when the unit is engaged in combat: ie the Kris swordsman (I think) promo that disappears to be replaced by "random" promo.. populated the corresponding "random" list with just one "random" promo that reduced movement and increased sight. Using the same kris swordsman promo xml flag, this "random" in-combat promo would similarly disappear and re-add a fresh version of itself if the unit engaged in combat again. If the unit didn't re-engage, a turn or two later the "random" movement/sight promo would expire again via the existing VP xml flags, to be replaced by the initial no-effect promo. IIRC, we also reduced base naval unit sight, but increased it overall via the in-combat promo, relative to VP. We did rely on some simple lua ultimately to manage the initial promo re-add, as sometimes civ forgot or doubled up on a step using the other mechanisms available (save game reloads seemed to be the problem). Similar VP promo features were used to implement a damaged-naval-unit movement penalty, in the style of at least one previous civ (3 i think, can't recall others). AI's naval combat style seemed to benefit more from this movement/sight change than human's, and seemed to be slightly more competitive in naval battles​

    Of course if I had my way, I'd probably implement both of these, but being realistic (and acknowledging the former has been shot down before :p), of the two, the second is far more viable for VP, and is possibly just a more dynamic way of accomplishing the recent naval sight changes and movement concerns.

    Other modding w/ positive effect on naval game:
    Spoiler :

    - there is a lua mod component somewhere on these boards (Lua needs fixing as-is, and this initial design, though good, is better tweaked for various undesirable effects iirc) that allows units to "return fire" against ranged units if they'd otherwise be able to damage the unit from that position.. ie a ranged unit would take damage from both melee and ranged if attacking from one tile away, or ranged attacking other ranged from 2 tiles away would take damage. This seemed to diminish RN shoot/scoot dominance simply by making them require repairs far more often. We tested only briefly before life got in the way, but the result was well-received, and our prefered implementation applied the effect only to RN attackers, ie a land unit would fire back on RN attack if it could, but land vs land wouldn't). AI style seemed to benefit a little more than human's from this.

    - consider a naval strategic resource: "timber", available early that spawns in some forest/jungle, and is somehow tied to production of naval units, in particular whichever flavor is dominant eg RN. IIRC, we tried both requiring RN each to consume 1 timber, or making a building consume timber and unlock RN production.. it was unclear which was better. the resource than converted 3 to 1 to coal via some industrialization building. The resulting availability of coal had profound effect however (not necessarily bad though). Also made some siege units tied to resource. Balancing spawn and consumption rates would take some testing. Having another early and mid game strat resource to fight over was fun overall, however human was better at this than AI as is generally the case with resources.

    - consider allowing MN to carry trade cargo ie similar to portugal UU. we made cargo = 1 on pre-industrialization naval, to entice their production over RN. it required a lua check to prevent non-portugese fetorias though. Ultimately it added something else to do with naval, and more reason to hunt enemy MN. Consensus was that this would be better with smaller, more incremental rewards and some way to "reload" the ability. AI and human both seemed to use this equally.

    - consider naval movement bonus to lighthouse (ie a modified 'friendly waters' effect via the mod here), affecting any units with open borders in the territory of the lighthouse city.. combine with Renaissance era naval movement penalty building to help mitigate frigates. Naval terrain is very flat compared to land, with corresponding flatness passed on to naval combat considerations.. building-applied movement penalties and bonuses break this up a little while maintains some reasonable historical abstraction. Tying a lighthouse bonus to open borders increases value of this diplomatic agreement for naval traffic (whereas there was little difference to bypassing just outside territory without), and creates sometimes more desirable routes and strategic focus on resulting higher traffic areas. This change benefits defending navy in and near its own territory heavily (take that English cheese boats!). As the ai is more often the victim of naval invasion, net benefit to them, though human becomes even stronger coastal defender.

    - consider allowing galleass to enter ocean after astronomy.. this allows tech lag player to defend better against early frigate rush

    Thanks for reading.. whatever the course chosen, I'd hope to see a naval combat that is distinct from land, and not just different via simplicity.
     
    Last edited: Aug 27, 2019
    4CV, vyyt, Rekk and 1 other person like this.
  7. ilteroi

    ilteroi Prince

    Joined:
    Mar 11, 2006
    Messages:
    341
    i like the idea of giving the heavy charge / withdraw promotion to naval units.
     
    pineappledan likes this.
  8. Tekamthi

    Tekamthi Prince

    Joined:
    Aug 12, 2016
    Messages:
    381
    the effect can be tested in-game (albeit with other changes) via the old mod i had cobbled together here.. my work then wasnt quite finished to my satisfaction, but it all worked, just needed fine tuning.. you'd have to grab a vp version from around that date though

    Edit: since I was digging around in the mod files anyway, this was balanced around the old naval promos, 2-range shoot/scoot:
    Code:
    UPDATE UnitPromotions
    SET ExtraWithdrawal = 25, MoraleBreakChance = 15
    WHERE Type = 'PROMOTION_BOMBARDMENT_1';
    
    UPDATE UnitPromotions
    SET ExtraWithdrawal = 15, MoraleBreakChance = 10
    WHERE Type = 'PROMOTION_BOMBARDMENT_2';
    
    UPDATE UnitPromotions
    SET ExtraWithdrawal = 10, MoraleBreakChance = 5
    WHERE Type = 'PROMOTION_BOMBARDMENT_3';
    
    UPDATE UnitPromotions
    SET ExtraWithdrawal = 15, MoraleBreakChance = 25
    WHERE Type = 'PROMOTION_TARGETING_1';
    
    UPDATE UnitPromotions
    SET ExtraWithdrawal = 10, MoraleBreakChance = 15
    WHERE Type = 'PROMOTION_TARGETING_2';
    
    UPDATE UnitPromotions
    SET ExtraWithdrawal = 5, MoraleBreakChance = 10
    WHERE Type = 'PROMOTION_TARGETING_3';
    
    UPDATE UnitPromotions
    SET HeavyCharge = 1
    WHERE Type = 'PROMOTION_BOARDING_PARTY_1';
    
    UPDATE UnitPromotions
    SET ExtraWithdrawal = 5
    WHERE Type = 'PROMOTION_COASTAL_RAIDER_1';
    
    UPDATE UnitPromotions
    SET ExtraWithdrawal = 5
    WHERE Type = 'PROMOTION_COASTAL_RAIDER_2';
    
    UPDATE UnitPromotions
    SET ExtraWithdrawal = 5
    WHERE Type = 'PROMOTION_COASTAL_RAIDER_3';
    
    
     
    Last edited: Aug 28, 2019
  9. vyyt

    vyyt Deity

    Joined:
    Jan 28, 2005
    Messages:
    2,061
    Location:
    Czech Republic
    @ilteroi, now that you are here, may I ask you if what I asked a couple of pages ago would be possible? Can 1-tile ranged ships lose all movent points but one after attack? I did not get any response from anyone, so I won't be pushing it further (I think the human society has not progressed enough to appreciate my brilliant ideas yet), but if it easy to code it I would like to mod it in my own setup. Thank you in advance for considering it.

    PS: I thought there was such a promotion in GEM / Communitas. I downloaded it, but could not find any such promotion in the files.
     
  10. Tekamthi

    Tekamthi Prince

    Joined:
    Aug 12, 2016
    Messages:
    381
    Assuming the under-the-hood functioning of the relevant promo hasn't been substantially changed, the promo setup using the Kris swordsman's disappearing combat promo flag and a single corresponding added promo, combined with vp promo expiry flags could accomplish this. May need a line or two of Lua to close the loop

    Edit: on 2nd thought you'll probably rely heavily on lua.. iirc the existing post-combat and duration promos result in unpredictable results if you leave it all up to them. Dug out some relevant SQL and Lua that might be adaptable.. or at least give you ideas.. focus on the "flank speed" and "battle stations" promos in particular here. Again I'm unsure if any of these calls have been revised out of vp, or modified since:

    Code:
    
    SQL:
    
    INSERT INTO UnitPromotions
            (Type,                            Description,                            Help,                                        PortraitIndex,    IconAtlas,                            Sound,                CannotBeChosen,    LostWithUpgrade,    HasPostCombatPromotions,    MovesChange,        PediaType,        PediaEntry,                                    PromotionDuration)
    VALUES    ('PROMOTION_FLANK_SPEED',        'TXT_KEY_PROMOTION_FLANK_SPEED',        'TXT_KEY_PROMOTION_FLANK_SPEED_HELP',        14,                'PROMOTION_ATLAS',                    'AS2D_IF_LEVELUP',    1,                0,                    1,                            0,                    'PEDIA_NAVAL',    'TXT_KEY_PEDIA_PROMOTION_FLANK_SPEED',        0),
            ('PROMOTION_DAMAGED_PROP',        'TXT_KEY_PROMOTION_DAMAGED_PROP',        'TXT_KEY_PROMOTION_DAMAGED_PROP_HELP',        4,                'KRIS_SWORDSMAN_PROMOTION_ATLAS',    'AS2D_IF_LEVELUP',    1,                0,                    0,                            -1,                    'PEDIA_NAVAL',    'TXT_KEY_PEDIA_PROMOTION_DAMAGED_PROP',        0),
            ('PROMOTION_BATTLE_STATIONS',    'TXT_KEY_PROMOTION_BATTLE_STATIONS',    'TXT_KEY_PROMOTION_BATTLE_STATIONS_HELP',    2,                'KRIS_SWORDSMAN_PROMOTION_ATLAS',    'AS2D_IF_LEVELUP',    1,                0,                    0,                            -1,                    'PEDIA_NAVAL',    'TXT_KEY_PEDIA_PROMOTION_BATTLE_STATIONS',    0);
    
    INSERT INTO UnitPromotions_PostCombatRandomPromotion
            (PromotionType,                    NewPromotion)
    VALUES    ('PROMOTION_FLANK_SPEED',        'PROMOTION_BATTLE_STATIONS');
    
    INSERT INTO Unit_FreePromotions
            (UnitType,                        PromotionType)
    VALUES    ('UNIT_KOLONNA',                'PROMOTION_FLANK_SPEED'),
            ('UNIT_BYZANTINE_DROMON',        'PROMOTION_FLANK_SPEED'),
            ('UNIT_GALLEASS',                'PROMOTION_FLANK_SPEED'),
            ('UNIT_VENETIAN_GALLEASS',        'PROMOTION_FLANK_SPEED'),
            ('UNIT_FRIGATE',                'PROMOTION_FLANK_SPEED'),
            ('UNIT_ENGLISH_SHIPOFTHELINE',    'PROMOTION_FLANK_SPEED'),
            ('UNIT_CRUISER',                'PROMOTION_FLANK_SPEED'),
            ('UNIT_BATTLESHIP',                'PROMOTION_FLANK_SPEED');
    
    INSERT INTO Language_en_US
            (Tag,                                        Text)
    VALUES    ('TXT_KEY_PROMOTION_FLANK_SPEED',            'Flank Speed'),
            ('TXT_KEY_PROMOTION_FLANK_SPEED_HELP',        'Normal [ICON_MOVES] movement when crew is not at [COLOR_NEGATIVE_TEXT]Battle Stations[ENDCOLOR].'),
            ('TXT_KEY_PEDIA_PROMOTION_FLANK_SPEED',        'Flank Speed'),
            ('TXT_KEY_PROMOTION_DAMAGED_PROP',            '[COLOR_NEGATIVE_TEXT]Damaged Propulsion[ENDCOLOR]'),
            ('TXT_KEY_PROMOTION_DAMAGED_PROP_HELP',        'Unit''s propulsion systems are damaged. -1 [ICON_MOVES] [COLOR_NEGATIVE_TEXT]movement[ENDCOLOR] until health is [COLOR_POSITIVE_TEXT]above[ENDCOLOR] 50'),
            ('TXT_KEY_PEDIA_PROMOTION_DAMAGED_PROP',    'Damaged Propulsion'),
            ('TXT_KEY_PROMOTION_BATTLE_STATIONS',        '[COLOR_NEGATIVE_TEXT]Battle Stations[ENDCOLOR]'),
            ('TXT_KEY_PROMOTION_BATTLE_STATIONS_HELP',    'Crew is engaged in combat operations. -1 [ICON_MOVES] [COLOR_NEGATIVE_TEXT]movement[ENDCOLOR] until [COLOR_POSITIVE_TEXT]combat-free[ENDCOLOR] for a turn.'),
            ('TXT_KEY_PEDIA_PROMOTION_BATTLE_STATIONS',    'Battle Stations');
    
    LUA:
    
    function FlankSpeedAdder(iPlayer)
        local pPlayer = Players[iPlayer]
     
        for pUnit in pPlayer:Units() do
            if pUnit:IsHasPromotion(GameInfoTypes.PROMOTION_BATTLE_STATIONS) then
                if pUnit:IsHasPromotion(GameInfoTypes.PROMOTION_FLANK_SPEED) then
                    pUnit:SetHasPromotion(GameInfoTypes.PROMOTION_BATTLE_STATIONS, false)
                    pUnit:ChangeMoves(60)
                    print ("Removed Battle Stations x1")
                end
            end
            if (pUnit:GetUnitCombatType() == GameInfoTypes.UNITCOMBAT_NAVALRANGED) and not pUnit:IsHasPromotion(GameInfoTypes.PROMOTION_FLANK_SPEED) then
                    pUnit:SetHasPromotion(GameInfoTypes.PROMOTION_FLANK_SPEED, true)
                    print ("Added Flank Speed x1")
            end
        end
    end
    
    function DmgPropAdder(iPlayer)
        local pPlayer = Players[iPlayer]
     
        for pUnit in pPlayer:Units() do
            if (pUnit:GetDomainType() == DomainTypes.DOMAIN_SEA) and ((pUnit:GetCurrHitPoints() / pUnit:GetMaxHitPoints()) <= 0.35) and not pUnit:IsHasPromotion(GameInfoTypes.PROMOTION_DAMAGED_PROP) then
                pUnit:SetHasPromotion(GameInfoTypes.PROMOTION_DAMAGED_PROP, true)
                pUnit:ChangeMoves(-60)
                print ("Added DmgProp promo x1")
            elseif (pUnit:GetDomainType() == DomainTypes.DOMAIN_SEA) and ((pUnit:GetCurrHitPoints() / pUnit:GetMaxHitPoints()) >= 0.50) and pUnit:IsHasPromotion(GameInfoTypes.PROMOTION_DAMAGED_PROP) then
                pUnit:SetHasPromotion(GameInfoTypes.PROMOTION_DAMAGED_PROP, false)
                pUnit:ChangeMoves(60)
                print ("Removed DmgProp promo x1")
            end
        end
    end
    
    GameEvents.PlayerDoTurn.Add(DmgPropAdder)
    GameEvents.PlayerDoTurn.Add(FlankSpeedAdder)
    
    
     
    Last edited: Aug 27, 2019
    vyyt likes this.
  11. ilteroi

    ilteroi Prince

    Joined:
    Mar 11, 2006
    Messages:
    341
    well, there are bunch of places in the code where it's tacitly assumed that an attack will cost exactly one movement point. hard to tell how bad it will be if that assumption is violated ... so i would be careful. but you can check for MOVE_DENOMINATOR and see for yourself.
     
    vyyt likes this.
  12. vyyt

    vyyt Deity

    Joined:
    Jan 28, 2005
    Messages:
    2,061
    Location:
    Czech Republic
    Thks both!
     
  13. Tekamthi

    Tekamthi Prince

    Joined:
    Aug 12, 2016
    Messages:
    381
    Check my previous reply to you for edit: added SQL/Lua that might get you most of the way there.
     
    vyyt likes this.

Share This Page