Page MenuHomeWildfire Games

[gameplay] Add a carnyx player for the gauls
ClosedPublic

Authored by Nescio on Sun, Jan 10, 11:52 PM.

Details

Summary

rP22105 added a new structure for Gaul, a theatre (actually an assembly of princes).
rP23167 added art files for a carnyx and animations for an actor holding it.
D3331/rP24566 renamed the simulation template to assembly.
D3344/rP24597 tweaked the assembly's stats and enabled it.
rP24586 added an actor and icon for an unit using the carnyx.

The carnyx was a long, bronze, Celtic trumpet and used on the battlefield; its sound would intimidate opponents.
This patch introduces a trainable infantry champion for the carnyx-using actor, and adds a generic template (in case more trumpeters will be added for other civs in future patches, or mods), and an aura file, which lowers the attack damage of nearby enemy soldiers a bit.
While it has an aura that could make a difference, it has no training restrictions (unlike heroes); to compensate for that, it has a higher cost, less resistance, and less attack damage than other champions. If it turns out to make the Gauls too strong, its values can be adjusted in the future.
Having this (historically attested) unit would make the Gauls less similar to other civs.

Initiative by @Stan, redone from scratch by @Nescio.
The specific name was suggested by @genava55 on the forums.

Test Plan

Check for mistakes and omissions. Agree with the concept and the proposed values.

Diff Detail

Repository
rP 0 A.D. Public Repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Build is green

builderr-debug-macos.txt
ld: warning: text-based stub file /System/Library/Frameworks//CoreAudio.framework/CoreAudio.tbd and library file /System/Library/Frameworks//CoreAudio.framework/CoreAudio are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//AudioToolbox.framework/AudioToolbox.tbd and library file /System/Library/Frameworks//AudioToolbox.framework/AudioToolbox are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//ForceFeedback.framework/ForceFeedback.tbd and library file /System/Library/Frameworks//ForceFeedback.framework/ForceFeedback are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//CoreVideo.framework/CoreVideo.tbd and library file /System/Library/Frameworks//CoreVideo.framework/CoreVideo are out of sync. Falling back to library file for linking.
ld: warning: text-based stu

See https://jenkins.wildfiregames.com/job/macos-differential/2845/display/redirect for more details.

Stan marked 5 inline comments as done.Wed, Jan 13, 5:15 PM

Build is green

builderr-debug-macos.txt
ld: warning: text-based stub file /System/Library/Frameworks//CoreAudio.framework/CoreAudio.tbd and library file /System/Library/Frameworks//CoreAudio.framework/CoreAudio are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//AudioToolbox.framework/AudioToolbox.tbd and library file /System/Library/Frameworks//AudioToolbox.framework/AudioToolbox are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//ForceFeedback.framework/ForceFeedback.tbd and library file /System/Library/Frameworks//ForceFeedback.framework/ForceFeedback are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//CoreVideo.framework/CoreVideo.tbd and library file /System/Library/Frameworks//CoreVideo.framework/CoreVideo are out of sync. Falling back to library file for linking.
ld: warning: text-based stu

See https://jenkins.wildfiregames.com/job/macos-differential/2846/display/redirect for more details.

Stan added a comment.Wed, Jan 13, 5:53 PM

@borg- are you fine with the fact it can attack?

borg- added a comment.Wed, Jan 13, 5:58 PM
In D3320#148946, @Stan wrote:

@borg- are you fine with the fact it can attack?

Yes, no problem.

borg- added a comment.Wed, Jan 13, 6:00 PM

Maybe lower the armor a little more, to 2 is welcome.

Stan updated this revision to Diff 15264.Wed, Jan 13, 6:17 PM

Update armor

borg- added a comment.Wed, Jan 13, 6:26 PM

I expressed it badly I think. I meant -2.

Build is green

builderr-debug-macos.txt
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/libnetwork_dbg.a(precompiled.o) has no symbols
ld: warning: text-based stub file /System/Library/Frameworks//CoreAudio.framework/CoreAudio.tbd and library file /System/Library/Frameworks//CoreAudio.framework/CoreAudio are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//AudioToolbox.framework/AudioToolbox.tbd and library file /System/Library/Frameworks//AudioToolbox.framework/AudioToolbox are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//ForceFeedback.framework/ForceFeedback.tbd and library file /System/Library/Frameworks//ForceFeedback.framework/ForceFeedback are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//CoreVideo.framework/Co

See https://jenkins.wildfiregames.com/job/macos-differential/2849/display/redirect for more details.

Stan updated this revision to Diff 15265.Wed, Jan 13, 6:35 PM

Haha I wasn't sure :) Parent has 3 so original was 2 and this version makes 1

Build is green

builderr-debug-macos.txt
ld: warning: text-based stub file /System/Library/Frameworks//CoreAudio.framework/CoreAudio.tbd and library file /System/Library/Frameworks//CoreAudio.framework/CoreAudio are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//AudioToolbox.framework/AudioToolbox.tbd and library file /System/Library/Frameworks//AudioToolbox.framework/AudioToolbox are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//ForceFeedback.framework/ForceFeedback.tbd and library file /System/Library/Frameworks//ForceFeedback.framework/ForceFeedback are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//CoreVideo.framework/CoreVideo.tbd and library file /System/Library/Frameworks//CoreVideo.framework/CoreVideo are out of sync. Falling back to library file for linking.
ld: warning: text-based stu

See https://jenkins.wildfiregames.com/job/macos-differential/2850/display/redirect for more details.

borg- added a comment.Wed, Jan 13, 6:54 PM

Just to make sure that the standard champion infantry will still be training and not replaced by carnyx.

borg- accepted this revision.Wed, Jan 13, 6:54 PM
Stan added a comment.Wed, Jan 13, 6:59 PM

@Nescio what do you think of the template name? I'm not sure what's the best convention? I suppose other civs could have standard bearers so it make sense they'd be able to recruit them in captured assemblies, but the carnyx player isn't exactly a standard bearer.

Nescio requested changes to this revision.Wed, Jan 13, 7:35 PM

Some fundamental questions:

  • What should its aura do and why?
  • Should it have an attack and why?
  • Should it be a champion and why?
  • Should it have a build restriction?

The values were not tested, and needs to be improved
The auras were taken as is from DE and probably need tweaks.

While I understand why you're doing this, I would highly recommend writing the files from scratch, rather than copying and pasting from some mod. Delenda Est does a lot of things, and what works there doesn't necessarily work for 0 A.D.'s public mod. Not following the style guide is one thing, having a different approach to template values another.

@Nescio what do you think of the template name? I'm not sure what's the best convention? I suppose other civs could have standard bearers so it make sense they'd be able to recruit them in captured assemblies, but the carnyx player isn't exactly a standard bearer.

Isn't it a trumpeter?

binaries/data/mods/public/simulation/data/auras/carnyx_encouragement.json
10 ↗(On Diff #15228)

"Soldiers +20% capture attack strength and −20% promotion experience."

3 ↗(On Diff #15265)

Is this enough?

6 ↗(On Diff #15265)

Did you check whether this actually works?
If I recall correctly, global auras can change <Cost> values, but not local auras. I was surprised when I first stumbled upon it, but it actually makes sense.
I don't know about promotion experience, it might work, but it should be tested.

9 ↗(On Diff #15265)

It could use a better name.

binaries/data/mods/public/simulation/templates/structures/gaul/assembly.xml
50 ↗(On Diff #15265)

Heroes should be listed last.

binaries/data/mods/public/simulation/templates/units/gaul/champion_standard_bearer.xml
9 ↗(On Diff #15265)

Please use a op="mul" instead.

16–17 ↗(On Diff #15265)

@Freagarach doesn't like 0 lines.

23 ↗(On Diff #15265)

That's English and can be used for the generic name. The specific name is in a non-English language. Ask @genava55 for something appropiate.

24 ↗(On Diff #15265)

Unnecessary.

27 ↗(On Diff #15265)

What does it do and why is it here?

31–32 ↗(On Diff #15265)

Use op="add".

36 ↗(On Diff #15265)

What does it do and why is it here?

38 ↗(On Diff #15265)

As you can see, Delenda Est uses absolute values, whereas 0 A.D.'s public mod works with relative values (op="mul").

2 ↗(On Diff #15228)

It has different values and a different function, so it's cleaner to use a different parent. For comparison, the elephant archer no longer has the cavalry archer template as its parent.
If at some point the swordsman template is changed, then it's easy to forget adjusting this file too.

This revision now requires changes to proceed.Wed, Jan 13, 7:35 PM
borg- added a comment.EditedWed, Jan 13, 8:01 PM
  • What should its aura do and why?

Carnyx was an instrument used in warfare to incite troops to battle and intimidate opponents, So aura is corretly.

  • Should it have an attack and why?

Carnyx players wield sword that can be used during battle.

  • Should it be a champion and why?

It makes more sense to be a champion than an citizen because there were few who played.

  • Should it have a build restriction?

Since the aura is not stackable and its attack and armor is less than a "normal" sword champion, I see no reason.

The druid (brit and gaul healer) also clearly has a sword but can't attack:

Stan updated this revision to Diff 15267.Wed, Jan 13, 8:09 PM
Stan marked an inline comment as done.

,

Stan added a comment.Wed, Jan 13, 8:09 PM
While I understand why you're doing this, I would highly recommend writing the files from scratch, rather than copying and pasting from some mod. Delenda Est does a lot of things, and what works there doesn't necessarily work for 0 A.D.'s public mod. Not following the style guide is one thing, having a different approach to template values another.

Well ideally I wouldn't be writing those template files because balancing is not really my department. It's also much more painful to start from scratch because templates are not hotloaded.

What should its aura do and why?

This unit is there to boost morale, and scare off opponents

Should it be a champion and why?

It's kind of a special unit, It could be a citizen soldier but I don't see the point

Should it have an attack and why?

It's a soldier so I'd say yes, I wouldn't bring a carnyx to a sword fight without something else

binaries/data/mods/public/simulation/templates/units/gaul/champion_standard_bearer.xml
24 ↗(On Diff #15265)

If I want to select only carnyx units it's not?

27 ↗(On Diff #15265)

leftover

2 ↗(On Diff #15228)

Changing the parent doesn't make the last statement less true. If you change the parent, you have to take the children into account.

Build is green

builderr-debug-macos.txt
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/libnetwork_dbg.a(precompiled.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/liblobby_dbg.a(precompiled.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/libengine_dbg.a(precompiled.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/libgraphics_dbg.a(precompiled.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/libgui_dbg.a(precompiled.o) has no symbols
ld: warning: text-based stub file /System/Library/Frameworks//CoreAudio.framework/CoreAudio.tbd and library file /Sy

See https://jenkins.wildfiregames.com/job/macos-differential/2852/display/redirect for more details.

borg- added a comment.EditedThu, Jan 14, 2:26 AM

The druid (brit and gaul healer) also clearly has a sword but can't attack:

Correct thing would be that the druid can attack too, but the code does not allow you to choose between healing or attacking.

Stan added a comment.Thu, Jan 14, 10:18 AM

@Nescio, would you like to commandeer? I think you are better than me for this :) Else it will end up in a huge back and forth.

@Freagarach suggested than the fear aura might be more interesting. (We have an icon now)

binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry_trumpeter.xml
28 ↗(On Diff #15267)

From the forums:

Carnyx is a hapax but it should be karnus/carnus or karnuxs/carnuxs for the instrument. So I would say Carnucos (karnukos).

@Nescio, would you like to commandeer? I think you are better than me for this :) Else it will end up in a huge back and forth.

That might indeed be more efficient. I'll also try to test whether the "Promotion/RequiredXp" modification works.

@Freagarach suggested than the fear aura might be more interesting. (We have an icon now)

Could you elaborate?

Stan added a comment.EditedThu, Jan 14, 10:55 AM

This intimidation aura instead of the encouragement one

{
	"type": "range",
	"radius": 20,
	"affectedPlayers": ["Enemy"],
	"affects": ["Unit"],
	"modifications": [
	  {"value": "Attack/Melee/RepeatTime", "multiply": 1.1},
	  {"value": "Attack/Ranged/RepeatTime", "multiply": 1.1},
	  {"value": "UnitMotion/WalkSpeed", "multiply": 0.9}
	],
	"auraName": "Intimidation",
	"auraDescription": "The Carnyx Player reduces the enemy's attack rate and movement speed -10%.",
	"overlayIcon": "art/textures/ui/session/auras/fear.png",
	"rangeOverlay" : {
		"lineTexture": "outline_border.png",
		"lineTextureMask": "outline_border_mask.png",
		"lineThickness": 0.075
	}
}

Would be more interesting since there are heroes/catafalques/structures with an attack bonus already and having such a fear aura could be interesting. Just my two cents ;)

Nescio commandeered this revision.Thu, Jan 14, 12:42 PM
Nescio edited reviewers, added: Stan; removed: Nescio.

As requested by @Stan.

This revision is now accepted and ready to land.Thu, Jan 14, 12:42 PM
Nescio updated this revision to Diff 15293.Thu, Jan 14, 12:43 PM
Nescio removed a reviewer: borg-.
  • redone from scratch
  • new aura
  • add generic template
This revision now requires review to proceed.Thu, Jan 14, 12:43 PM
Owners added a subscriber: Restricted Owners Package.Thu, Jan 14, 12:43 PM

When adding new content, it's important to explain the reasoning behind it (preferably in the summary), so that if in the future people go through the svn revision history and look at this patch, they can get an idea why what was done was done.
To do:

  • link to a relevant forum discussion, if any
  • explain why it has an attack
  • explain why it is a champion and not a support unit
  • clarify whether it's supposed to be a swordsman that happens to have a trumpet, or a trumpeter that happens to have a sword
  • figure out a reasonable cost (@borg-?)

Build is green

builderr-debug-macos.txt
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/libsimulation2_dbg.a(precompiled.o) has no symbols
ld: warning: text-based stub file /System/Library/Frameworks//CoreAudio.framework/CoreAudio.tbd and library file /System/Library/Frameworks//CoreAudio.framework/CoreAudio are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//AudioToolbox.framework/AudioToolbox.tbd and library file /System/Library/Frameworks//AudioToolbox.framework/AudioToolbox are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//ForceFeedback.framework/ForceFeedback.tbd and library file /System/Library/Frameworks//ForceFeedback.framework/ForceFeedback are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//CoreVideo.framewor

See https://jenkins.wildfiregames.com/job/macos-differential/2862/display/redirect for more details.

Stan added a comment.Thu, Jan 14, 1:09 PM

No icon for units affected by aura ?

overlayIcon": "art/textures/ui/session/auras/fear.png",

It's not necessary for the aura to work, and a lightning bolt does not really indicate fear to me.

It does show to the players that something is affecting them, which is a must, IMHO.

borg- added a comment.Thu, Jan 14, 1:20 PM

I would like to add an icon to that. A broken sword would be a good icon.

That's clear, I'll insert the icon line.
Before I do, what would be an appropiate cost (resources and time) for the unit?

Stan added a comment.Thu, Jan 14, 1:56 PM

Could do that

Stan added a comment.EditedThu, Jan 14, 3:09 PM

@borg-, how much should this unit cost?

borg- added a comment.Thu, Jan 14, 5:13 PM

I thought about removing wood cost and adding more food and metal, like 250 food and 100 metal.

Removing the wood cost is fine by me, but 250 food seems rather excessive. How about 100 food and 150 metal instead? Or perhaps 100 food and 200 metal? (How much is the aura worth to you?)

Nescio updated this revision to Diff 15307.Thu, Jan 14, 9:09 PM
Nescio edited the summary of this revision. (Show Details)
Nescio edited the test plan for this revision. (Show Details)
borg- added a comment.Thu, Jan 14, 9:55 PM

Healer costs 250 food. Carnyx has a strong aura and has the power of a champion, I think the value I proposed is fair. 100/150 is bassically same cost of normal champion.

Build is green

builderr-debug-macos.txt
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/libnetwork_dbg.a(precompiled.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/libsimulation2_dbg.a(precompiled.o) has no symbols
ld: warning: text-based stub file /System/Library/Frameworks//CoreAudio.framework/CoreAudio.tbd and library file /System/Library/Frameworks//CoreAudio.framework/CoreAudio are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//AudioToolbox.framework/AudioToolbox.tbd and library file /System/Library/Frameworks//AudioToolbox.framework/AudioToolbox are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//ForceFeedback.framework/ForceFeedback.tbd and library file /System/Library/Frameworks//Forc

See https://jenkins.wildfiregames.com/job/macos-differential/2868/display/redirect for more details.

Here is my reasoning:

  • Reducing enemy attack damage by 10% is equivalent to raising your resistances by one level.
  • Champion infantry costs 80 food, 60 food, 80 metal and the swordsman has 47% more damage per second and two more resistance levels (equivalent to +23% health) than the proposed carnyx-trumpeter.
  • Infantry heroes (e.g. Brennus) cost 200 food, 150 wood, 200 metal, have a lot more health, resistance, and attack damage, and much more powerful auras.

I called 250 food excessive because it's over three times the champion infantry's and even more than the hero's. I think we can agree the cost of this proposed unit ought to be somewhere in between ordinary champion infantry and infantry heroes.
So how about one of the following?

  • 100 food, 200 metal
  • 150 food, 150 metal
  • 100 food, 100 wood, 100 metal

Or just make them cost 50% more than ordinary champion infantry, i.e.:

  • 120 food, 90 wood, 120 metal.

What do you think?

borg- added a comment.Fri, Jan 15, 1:17 PM

200 food 100 metal?

180 food and 120 metal?

borg- added a comment.Fri, Jan 15, 1:21 PM

180 food and 120 metal?

Ok.

Nescio updated this revision to Diff 15340.Fri, Jan 15, 1:25 PM
  • changed cost as discussed with @borg- (sorry for the haggling)
borg- accepted this revision.Fri, Jan 15, 1:56 PM
This revision is now accepted and ready to land.Fri, Jan 15, 1:56 PM

Build is green

builderr-debug-macos.txt
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/liblobby_dbg.a(precompiled.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/libsimulation2_dbg.a(precompiled.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/libengine_dbg.a(precompiled.o) has no symbols
../../../source/graphics/ShaderProgram.cpp:86:15: warning: 'Reload' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
        virtual void Reload()
                     ^
../../../source/graphics/ShaderProgram.h:124:15: note: overridden virtual function is here
        virtual void Reload() = 0;
                     ^
../../../source/graphics/ShaderProgram.cpp:118:15: warning: 'Bind' overrides a member function

See https://jenkins.wildfiregames.com/job/macos-differential/2876/display/redirect for more details.

This revision was automatically updated to reflect the committed changes.
Owners added a subscriber: Restricted Owners Package.Fri, Jan 15, 7:11 PM