Jump to content
wowgetoffyourcellphone

DE Alpha 24

Recommended Posts

Some things I'd maybe like to get done for alpha 24's release:

  • Come up with some new socio-economic paradigms for some of the civs. Not all civs should have the Slavery paradigm.
    • Mauryas: Caste-based system
    • Celts, Iberians, Persians: Some kind of peasantry-based system
  • Balance Elephant Archers some more
    • Probably make their ranks increase their attack since I can't add arrows
  • Convince some talented people to make more Cult Statues for the cultures that are reusing the Athenian cult statue
    • Celts: Wooden Epona? Wodan? Draped in flowers and burnt offerings?
    • Persians: Colorful Lamassu
    • Nomads: Wooden Horse statue?
    • Spartans: Bronze Leonidas statue
    • Seleucids: Apollo statue, or maybe Alexander statue
    • Macedonians: Herakles statue or different Apollo statue from Seleucids
    • Thebans: Theban Sphinx
    • Republican Romans: Mars or Jupiter
    • Principate Romans: Colossus
  • Convince some talented people to make Archery Range/Stable/Workshop for the Han Chinese
  • With permission, add Terra Magna's Xiongnu so I can experiment with "nomadic" gameplay style
  • Add the Scythians, based on the above Xiongnu
    • Perhaps attempt 2 different possible "nomadic" gameplay styles, one each for the Xiongs and Scyths
    • Can keep both styles or determine if one style is much preferable over the other
  • Maybe a couple more mercenaries for the civs who currently only have 1.
  • Unit actors
    • More ethnically correct slave actors/textures
    • Fix the Han scout actor (currently using the Greek scout actor)
  • Fix all remaining portraits for everything
  • Experiment with making gaia horses capturable
  • Will add more to this list as I go along

 

Edited by wowgetoffyourcellphone
  • Like 5
  • Thanks 1

Share this post


Link to post
Share on other sites

To make Delenda Est smaller I was wondering if there was a way you could use the mod as a dependency. This way you would only have to carry templates around and maybe some actors but at least the 3D model wouldn't need to be duplicated.

Share this post


Link to post
Share on other sites
3 minutes ago, stanislas69 said:

To make Delenda Est smaller I was wondering if there was a way you could use the mod as a dependency. This way you would only have to carry templates around and maybe some actors but at least the 3D model wouldn't need to be duplicated.

indeed and better compression, however, I do not think 7z. or rar. is supported by mod.io

Share this post


Link to post
Share on other sites

The mod files should be zip. IIRC they are however generated with no compression, this to be better compressible in the 0ad installer. So it would make be nice to make mods using zip compression. (No idea if this is already done, didn't check).

Share this post


Link to post
Share on other sites

They are compressed. At least mine are and sometimes I recompress them myself to make them even smaller because the archiver doesn't likely use ultra compression.

Modmod is not being packaged nor compressed and that should be fixed in the re release. @Itms

I wonder if we should not recompress public.zip after install to reduce diskspace usage I know disks are big these days but it's not a reason to waste space.

Share this post


Link to post
Share on other sites
8 hours ago, fabio said:

The mod files should be zip. IIRC they are however generated with no compression, this to be better compressible in the 0ad installer. So it would make be nice to make mods using zip compression. (No idea if this is already done, didn't check).

The pyrogenesis archiver we use to compile the mods into a zip archive does indeed have a compression option. The DE mod on mod.io is 338 mb, while my local working DE directory is 980 mb. (unless @stanislas69 worked some magic and compressed the zip archive even further).

Share this post


Link to post
Share on other sites
26 minutes ago, psypherium said:

Why is it "Mauryas" and not "Mauryans"?

Because the empire is known as the Maurya Empire, or the Maurya Dynasty, founded by Chandragupta Maurya. "Mauryan" is also often used as an adjective though. 

  • Like 2

Share this post


Link to post
Share on other sites

Yeah, Maurya and Mauryan are both correct, Maurya being more correct. Truth be told, I was actually just trying to differentiate the mod from the core game. ;) 

 

"Romans (Principates)" doesn't really make sense grammatically, but I use Principates all the same (I also like how it sounds next to historical terms like Optimates and such).

Edited by wowgetoffyourcellphone
  • Like 3

Share this post


Link to post
Share on other sites

Maurya is different then the others I guess, it is strange.
Australians are Australian
Russians are Russian
Canadians are Canadian
but Mauryas are Mauryan

It rubs me the wrong way because it is different lol, but if it is intended then it is fine.

  • Like 2

Share this post


Link to post
Share on other sites

Hi!

Personally, I like the idea of the siege towers being able to capture (of which I see code in their template), however in the game it does not work (at least not for me). To fix this I have changed two little pieces of code in the "UnitAI.js"-component, I hope it is of any use for you.

Just after "// TODO: we should probably only bother syncing projectile attacks, not melee" (it is around line 1896) I changed

var cmpBuildingAI = Engine.QueryInterface(this.entity, IID_BuildingAI);
if (cmpBuildingAI)
	cmpBuildingAI.SetUnitAITarget(this.order.data.target);

to

var cmpAttack = Engine.QueryInterface(this.entity, IID_Attack);
var cmpBuildingAI = Engine.QueryInterface(this.entity, IID_BuildingAI);
if (cmpBuildingAI && !((cmpAttack.GetAttackTypes().indexOf("Capture") != -1) && (this.order.data.attackType == "Capture")) )
	cmpBuildingAI.SetUnitAITarget(this.order.data.target);

AND

// BuildingAI has it's own attack-routine
var cmpBuildingAI = Engine.QueryInterface(this.entity, IID_BuildingAI);
if (!cmpBuildingAI)
{
	let cmpAttack = Engine.QueryInterface(this.entity, IID_Attack);
	cmpAttack.PerformAttack(this.order.data.attackType, target);
}

to

// BuildingAI has it's own attack-routine
var cmpAttack = Engine.QueryInterface(this.entity, IID_Attack);
var cmpBuildingAI = Engine.QueryInterface(this.entity, IID_BuildingAI);
if (!cmpBuildingAI || ((cmpAttack.GetAttackTypes().indexOf("Capture") != -1) && (this.order.data.attackType == "Capture")) )
{
	let cmpAttack = Engine.QueryInterface(this.entity, IID_Attack);
	cmpAttack.PerformAttack(this.order.data.attackType, target);
}

I have tested this, though not extensively, so there might be some unwanted behaviour (buildings are still attacking and siege towers fire arrows at nearby units).

Edited by Freagarach
Fixed code so that any building which is able and is trying to use the capture attack should be affected now.
  • Thanks 1

Share this post


Link to post
Share on other sites

The first line you modify comes from rP16577, I don't know about that.

The second line you modify is a wrong line from rP17784, so it's correct to modify that if one doesn't want to redesign BuildingAI. But the line should not check for SiegeTower class, because every entity that has BuildingAI and can capture should pass if the order is to capture. You reminded me of things that were not okay.

  • Like 1

Share this post


Link to post
Share on other sites

I agree on the second point, but I'm no programmer and have just started modifying 0AD, so I'm unsure how to check for that. My attempts to go through "Attack.GetAttackTypes()" to look for the "Capture"-attack failed, so any improvement would be welcome (especially with Siege Ladders in mind).

Edit: I fixed the code above, I could not stand it was not working and it was actually easier than expected,,,

Edited by Freagarach
I don't know whether editing like this is good practice? Or should I've made a new reply?

Share this post


Link to post
Share on other sites

Evidently not committing the oneline fix was worse than committing it.

In other areas of the file, I see this.order.data.attackType == "Capture".

I didn't test, but cmpAttack.GetAttackTypes().indexOf("Capture") != -1 doesn't work for the SiegeTower?

Share this post


Link to post
Share on other sites

Just quickly tested both other solutions, I don't know why I've overlooked them earlier, but they both seem to work. thanks!

I guess the first one you proposed is preferred, since the "Attack"-component does not have to be queried?

Share this post


Link to post
Share on other sites

Those weren't two solutions but one. Players, scripts, AIs may send arbitrary or broken commands, so the component should test for both conditions to be true simultaneously.

Only testing for the latter would be wrong, because the idea of the commit mentioned above is that arrows shot are either handled by UnitAI for units that only shoot one arrow at a time, or by BuildingAI if they shoot multiple. (So the purpose of the fix had never been to correct a tooltip, but the broken tooltip was one of the consequences of the oversight addressed in that commit)

  • Like 1

Share this post


Link to post
Share on other sites

Please correct me if I'm wrong. What you say is that there ought to be a check whether the entitiy is actually able to capture (cmpAttack.GetAttackTypes().indexOf("Capture") != -1) AND that the issued command is to capture (this.order.data.attackType == "Capture")?

If that is the case the fix would be replacing "cmpAttack.template.Capture" with "((cmpAttack.GetAttackTypes().indexOf("Capture") != -1) && (this.order.data.attackType == "Capture"))", I guess. (I tested it and it works.)

I see now that only testing the latter is wrong in the same way "cmpAttack.template.Capture" is wrong, it skips the BuildingAI targeting for an entity which has the "Capture"-component.

Share this post


Link to post
Share on other sites
3 hours ago, Freagarach said:

Please correct me if I'm wrong. What you say is that there ought to be a check whether the entitiy is actually able to capture (cmpAttack.GetAttackTypes().indexOf("Capture") != -1) AND that the issued command is to capture (this.order.data.attackType == "Capture")?

cmpAttack.template.Capture should be equivalent to testing for GetAttackTypes. I only found "this.template" , no other "*.template" in the source. I suppose it's a convention in order to not have components parse templates unless it's the template of their own component.

cmpAttack.PerformAttack should be called if a capture attack is ordered and if it can capture, or if an attack is requested and the entity doesn't have buildingAI.

Perhaps that can be phrased as a ternary: (order == capture ? canCapture : !hasBuildingAI).

In the model of the current code:

  • cmpAttack.PerformAttack shoots a single arrow or does a capture attack
  • BuildingAI shoots many arrows

Before rP17784, it shot many arrows +1 and captured, after it, it shot many arrows and didn't capture anymore.

Hope I didn't make a flaw, I'm speaking of memory.

Share this post


Link to post
Share on other sites

Thank you for your explanation!

But what I fail to understand is what the benefit of the ternary is? Is it cheaper in resources? More reliable in different situations? Or just visually more appealing? I'm sorry if this is a dumb question, as said earlier: I'm no programmer.

I've also seen just now that there are trac-tickets for this problem (I assumed earlier it was an error only found in DE). This could be a fix for #4189 but it would be not needed with #4000 so I'm not sure if I should try and commit this as a patch?

Share this post


Link to post
Share on other sites
55 minutes ago, Freagarach said:

But what I fail to understand is what the benefit of the ternary is? Is it cheaper in resources? More reliable in different situations? Or just visually more appealing? I'm sorry if this is a dumb question, as said earlier: I'm no programmer.

It's a matter of taste but usually it's more visually appealing cause you have to read one line instead of 8

//-------------Else if-------------------------
let variable

if (a)
{
 variable = d;
}
else
{
 variable = c;
}

//-------------TERNARY-------------------------

let variable = a ? d : c;

 

57 minutes ago, Freagarach said:

I've also seen just now that there are trac-tickets for this problem (I assumed earlier it was an error only found in DE). This could be a fix for #4189 but it would be not needed with #4000 so I'm not sure if I should try and commit this as a patch?

If you want to submit patches go ahead. I you haven't already I'd suggest you head to trac and read the https://trac.wildfiregames.com/wiki/GettingStartedProgrammers page.

you can then submit your patch to be reviewed on code.wildfiregames.com

Share this post


Link to post
Share on other sites
  • coins new resource:  its needed improved the concept with mints.
  • related to that the gui needs be improved because the icons displaced others at the point to hide population limit behind faction shield.
  • mercenary native camps are interesting.  need something more, i'm guessing what.
  • market needs more improvements. 
  • Seleucids feels incomplete for some reason. probably the list of units.
  • siege machines feels some kind op...I think they shoot faster if you make some massive units like Han bolt even with the counters are some unnatural feeling.

playing 200 pop becuase im not acclimated to grown faster. 

Spoiler

Resultado de imagen para feels meme

 

Share this post


Link to post
Share on other sites

 

A feature to King Pyrrus. maybe....

nevermind, lol.

Quote

It is during this period of the Republic that emerged a central feature of Roman military practice, which was adhered to until at least ca. AD 400 if not beyond: the fortified marching-camp (castra), whose earliest detailed description is in Polybius.[90][91] One Roman author claims that the Romans copied the design of their camps from those of king Pyrrhus.[92] But this seems unlikely, as Polybius himself criticises his fellow-Greeks for not constructing fortified camps.

 

Edited by Lion.Kanzen

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...